Отчет по нескольким периодам на Системе Компановки Данных (СКД)
Формирую из 2х наборов данных
первый набор — Запрос по остаткам
второй набор для вывода периодов продаж, генерируется в процедуре, используя «ОБЪЕДИНИТЬ ВСЕ»
сам отчет можно скачать тут http://infostart.ru/public/142953
часть процедуры для формирования Запроса
ПромТекст =
"ВЫБРАТЬ
| ""Неделя WWW"" КАК Неделя,
| Продажи.Склад.Магазин КАК Магазин,
| Продажи.Номенклатура,
| СРЕДНЕЕ(ВЫБОР
| КОГДА Продажи.Количество <> 0
| ТОГДА Продажи.Стоимость / Продажи.Количество
| ИНАЧЕ 0
| КОНЕЦ) КАК ЦенаПродаж,
| СУММА(Продажи.Количество) КАК Количество,
| СУММА(Продажи.Стоимость) КАК Сумма
|ИЗ
| РегистрНакопления.Продажи КАК Продажи
|ГДЕ
| Продажи.Период МЕЖДУ &НачалоПериода И &КонецПериода
| И Продажи.Номенклатура.НоменклатурнаяГруппа В(&СписНомГрупп)
|
|СГРУППИРОВАТЬ ПО
| Продажи.Склад.Магазин,
| Продажи.Номенклатура";
ТекстЗапроса = "";
Для i=1 По КолПериодов Цикл
Д1 = НачалоНедели(КонПериода) - (КолПериодов-i)*7*24*60*60;
Если i=КолПериодов Тогда Д2 = КонецДня(ТекущаяДата());
Иначе Д2 = КонецНедели(Д1);
КонецЕсли;
ПромТекст1 = ПромТекст;
ПромТекст1 = СтрЗаменить(ПромТекст1, "Неделя WWW", "(" + Строка(i+1) + ") " + ПредставлениеПериода(Д1, Д2, "ФП=Истина") + "");
ПромТекст1 = СтрЗаменить(ПромТекст1, "&НачалоПериода", "ДАТАВРЕМЯ(" + Формат(Год(Д1), "ЧГ=0") + "," + Формат(Месяц(Д1), "ЧГ=0") + "," + Формат(День(Д1), "ЧГ=0") + ",00,00,00)");
ПромТекст1 = СтрЗаменить(ПромТекст1, "&КонецПериода", "ДАТАВРЕМЯ(" + Формат(Год(Д2), "ЧГ=0") + "," + Формат(Месяц(Д2), "ЧГ=0") + "," + Формат(День(Д2), "ЧГ=0") + ",23,59,59)");
ТекстЗапроса = ТекстЗапроса + ?(ТекстЗапроса="", "", Символы.ПС + Символы.ПС + "ОБЪЕДИНИТЬ ВСЕ" + Символы.ПС + Символы.ПС) + ПромТекст1;
КонецЦикла;
СхемаКомпоновкиДанных.НаборыДанных.НаборДанных2.Запрос = ТекстЗапроса;
