При разработке отчета, иногда возникает необходимость, вывести результат в не стандартном виде, который с трудом можно повторить с помощью СКД, при этом сохранить знакомый интерфейс с привычными отборами, настройками, вариантами отчета и др. что дает нам отчет на СКД.
Решить такую задачу можно с помощью вывода результата компоновки в коллекцию значений, а уже ее вывести в необходимый макет.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; //ДокументРезультат.Очистить(); // ВЫВОДОМ РЕЗУЛЬТАТА КОМПАНОВКИ В КОЛЛКЕКЦИЮ ЗНАЧЕНИЙ (таблицу значений или дерево значений) НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных,НастройкиОтчета, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ТаблицаЗначений = Новый ТаблицаЗначений; //Или ДеревоЗначений ПроцессорВывода.УстановитьОбъект(ТаблицаЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); // ВЫВОД РЕЗУЛЬТАТА В ТАБЛИЧНЫЙ ДОКУМЕНТ Макет = ПолучитьМакет("МойМакет"); ОбластьШапка = Макет.ПолучитьОбласть("Шапка"); ДокументРезультат.Вывести(ОбластьШапка); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ДокументРезультат.Вывести(ОбластьШапкаТаблицы); ОбластьСтрока = Макет.ПолучитьОбласть("Строка"); Для Каждого ТекущаяСтрока Из ТаблицаЗначений Цикл ЗаполнитьЗначенияСвойств(ОбластьСтрока.Параметры, ТекущаяСтрока); ДокументРезультат.Вывести(ОбластьСтрока); КонецЦикла; КонецПроцедуры |