При разработке отчета, иногда возникает необходимость, вывести результат в не стандартном виде, который с трудом можно повторить с помощью СКД, при этом сохранить знакомый интерфейс с привычными отборами, настройками, вариантами отчета и др. что дает нам отчет на СКД.
Решить такую задачу можно с помощью вывода результата компоновки в коллекцию значений, а уже ее вывести в необходимый макет.
Образец отчета можно скачать по ссылке.
Описание процедуры "ПриКомпоновкиРезултата()"
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
// ВЫВОДОМ РЕЗУЛЬТАТА КОМПАНОВКИ В КОЛЛКЕКЦИЮ ЗНАЧЕНИЙ (таблицу значений или дерево значений)
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,НастройкиОтчета, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаЗначений = Новый ТаблицаЗначений; //Или ДеревоЗначений
ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
// ВЫВОД РЕЗУЛЬТАТА В ТАБЛИЧНЫЙ ДОКУМЕНТ
Макет = ПолучитьМакет("МойМакет");
ОбластьШапка = Макет.ПолучитьОбласть("Шапка");
ДокументРезультат.Вывести(ОбластьШапка);
ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
ДокументРезультат.Вывести(ОбластьШапкаТаблицы);
ОбластьСтрока = Макет.ПолучитьОбласть("Строка");
Для Каждого ТекущаяСтрока Из ТаблицаЗначений Цикл
ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ТекущаяСтрока);
ДокументРезультат.Вывести(ОбластьСтрока);
КонецЦикла;
КонецПроцедуры