Пример запроса 1с 8.2, когда не было движения за период, а необходимо вывести остатки.
Где "ВремТз" - это таблица значений, заполненная датами за месяц:Разница = (КонПериода-НачПериода)/86400;
ВремТз = Новый ТаблицаЗначений;
ВремТз.Колонки.Добавить("Период",Новый ОписаниеТипов("Дата"));
Для сч =0 по Разница Цикл
День_=НачПериода+сч*86400;
ВремТз.Добавить().период = День_;
КонецЦикла;
Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 1000
| Дни.Период КАК Период
|ПОМЕСТИТЬ _Дни
|ИЗ
| &Дни КАК Дни
|
|УПОРЯДОЧИТЬ ПО
| Период
|;
|
|////////////////////////////////////////////////////////////////////////////////
|ВЫБРАТЬ
| ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса КАК КассаБс,
| _Дни.Период КАК День,
| СУММА(ВЫБОР
| КОГДА КОНЕЦПЕРИОДА(ДенежныеСредстваОстаткиИОбороты.Период, ДЕНЬ) = КОНЕЦПЕРИОДА(&Нач, ДЕНЬ)
| ТОГДА ДенежныеСредстваОстаткиИОбороты.СуммаКонечныйОстаток
| ИНАЧЕ ВЫБОР
| КОГДА КОНЕЦПЕРИОДА(ДенежныеСредстваОстаткиИОбороты.Период, ДЕНЬ) <= КОНЕЦПЕРИОДА(_Дни.Период, ДЕНЬ)
| ТОГДА ДенежныеСредстваОстаткиИОбороты.СуммаОборот
| ИНАЧЕ 0
| КОНЕЦ
| КОНЕЦ) КАК Кон,
| ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса КАК КассаБсСсылка
|ИЗ
| РегистрНакопления.ДенежныеСредства.ОстаткиИОбороты(&Нач, КОНЕЦПЕРИОДА(&Кон, ДЕНЬ), День, , ) КАК ДенежныеСредстваОстаткиИОбороты,
| _Дни КАК _Дни
|
|СГРУППИРОВАТЬ ПО
| ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса,
| _Дни.Период,
| ДенежныеСредстваОстаткиИОбороты.БанковскийСчетКасса
|ИТОГИ ПО
| КассаБс");
Запрос.УстановитьПараметр("Кон", КонПериода);
Запрос.УстановитьПараметр("Нач", НачПериода);
Запрос.УстановитьПараметр("Дни",ВремТз);
ДеревоКонОст = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
Вот только запросом:
ВЫБРАТЬ РАЗЛИЧНЫЕ
0 КАК Период
ПОМЕСТИТЬ Дни
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 1
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 2
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 3
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 4
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 5
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 6
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 7
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 8
ОБЪЕДИНИТЬ ВСЕ
ВЫБРАТЬ 9;
////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ДОБАВИТЬКДАТЕ(&Началопериода, ДЕНЬ, ДНИ.Период) КАК Период,
Движения.Склад,
СУММА(ВЫБОР
КОГДА Движения.Период = &НачалоПериода
ТОГДА Движения.КоличествоКонечныйОстаток
ИНАЧЕ ВЫБОР
КОГДА Движения.Период <= ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, ДНИ.Период)
ТОГДА Движения.КоличествоОборот
ИНАЧЕ 0
КОНЕЦ
КОНЕЦ) КАК КоличествоКонечныйОстаток
ИЗ
Дни КАК ДНИ,
РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(&НачалоПериода, &КонецПериода, День, , ) КАК Движения
СГРУППИРОВАТЬ ПО
Движения.Склад,
ДОБАВИТЬКДАТЕ(&Началопериода, ДЕНЬ, ДНИ.Период)
УПОРЯДОЧИТЬ ПО
Движения.Склад.Наименование
ИТОГИ ПО
Период