СКД. Программная компоновка результата.
Рассмотрим программное формирование результата отчета на примере события ПриКомпоновкеРезультата, которое вызывается по-умолчанию при формировании отчета или при выполнении отчета с помощью метода СкомпоноватьРезультат().
// 1. Установим признак отказа от выполнения стандартной обработки события.
// 2. Получим макет, в котором хранится "шапка" и "подвал" отчета.
// 3. Выведем в табличный документ шапку отчета.
// 4. Получим копию настроек компоновки данных.
// 5. Установим значение параметра компоновки данных ОтчетнаяДата (Вкладка "Параметры" схемы компоновки данных).
// 6. Загрузим настройки в компоновщик (пользовательские настройки заново заполняются на основе этих настроек).
// 7. Создадим объект для компоновки макета и выполним компоновку макета.
// 8. Создадим объект, выполняющий компоновку данных, и инициализируем его.
// 9. Создадим объект для вывода результата компоновки в табличный документ, установим табличный документ, в который нужно вывести результат и выведем весь результат в установленный табличный документ.
// 10. Выведем в табличный документ подвал отчета.
Итоговый код события:
// 1. Установим признак отказа от выполнения стандартной обработки события.
СтандартнаяОбработка = Ложь;
// 2. Получим макет, в котором хранится "шапка" и "подвал" отчета.
МакетДопОформление = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_ДопОформлениеСКД");
// 3. Выведем в табличный документ шапку отчета.
ШапкаОтчета = МакетДопОформление.ПолучитьОбласть("ШапкаОтчета");
ДокументРезультат.Вывести(ШапкаОтчета);
// 4. Получим копию настроек компоновки данных.
НастройкиОтчета = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
// 5. Установим значение параметра компоновки данных ОтчетнаяДата (Вкладка "Параметры" схемы компоновки данных).
ПараметрОтчетнаяДата = Новый ПараметрКомпоновкиДанных("ОтчетнаяДата");
Если НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрОтчетнаяДата) <> Неопределено Тогда
НастройкиОтчета.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрОтчетнаяДата, ЭтотОбъект.ОтчетнаяДата);
КонецЕсли;
// 6. Загрузим настройки в компоновщик (пользовательские настройки заново заполняются на основе этих настроек).
ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета);
// 7. Создадим объект для компоновки макета и выполним компоновку макета.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
ЭтотОбъект.СхемаКомпоновкиДанных,
ЭтотОбъект.КомпоновщикНастроек.Настройки,
ДанныеРасшифровки);
// 8. Создадим объект, выполняющий компоновку данных, и инициализируем его.
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
// 9. Создадим объект для вывода результата компоновки в табличный документ, установим табличный документ, в который нужно вывести результат и выведем весь результат в установленный табличный документ.
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// 10. Выведем в табличный документ подвал отчета.
ПодвалОтчета = МакетДопОформление.ПолучитьОбласть("ПодвалОтчета");
ДокументРезультат.Вывести(ПодвалОтчета);
Итоговый код события:
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
МакетДопОформление = ЭтотОбъект.ПолучитьМакет("ПФ_MXL_ДопОформлениеСКД");
// Шапка.
ШапкаОтчета = МакетДопОформление.ПолучитьОбласть("ШапкаОтчета");
ДокументРезультат.Вывести(ШапкаОтчета);
НастройкиОтчета = ЭтотОбъект.КомпоновщикНастроек.ПолучитьНастройки();
ПараметрОтчетнаяДата = Новый ПараметрКомпоновкиДанных("ОтчетнаяДата");
Если НастройкиОтчета.ПараметрыДанных.НайтиЗначениеПараметра(ПараметрОтчетнаяДата) <> Неопределено Тогда
НастройкиОтчета.ПараметрыДанных.УстановитьЗначениеПараметра(ПараметрОтчетнаяДата, ЭтотОбъект.ОтчетнаяДата);
КонецЕсли;
ЭтотОбъект.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиОтчета);
// СКД.
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(
ЭтотОбъект.СхемаКомпоновкиДанных,
ЭтотОбъект.КомпоновщикНастроек.Настройки,
ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
// Подвал.
ПодвалОтчета = МакетДопОформление.ПолучитьОбласть("ПодвалОтчета");
ДокументРезультат.Вывести(ПодвалОтчета);
КонецПроцедуры
Комментарии
Отправить комментарий