Событие ПриКомпоновкеРезультата
1С:Предприяятие 8.3
Событие ПриКомпоновкеРезультата вызывается при выполнении метода объекта отчета СкомпоноватьРезультат. Обработчик события находится в модуле объекта.
ПриКомпоновкеРезультата(<ДокументРезультат>, <ДанныеРасшифровки>, <СтандартнаяОбработка>)
Параметры:
- <ДокументРезультат> – Документ, в который выводится результат.
- <ДанныеРасшифровки> – Переменная, в которую необходимо поместить данные расшифровки. Если данный параметр имеет значение Null, то данные расшифровки создавать не нужно.
- <СтандартнаяОбработка>Тип: Булево. В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.Значение по умолчанию: Истина.
Замечание:Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.
Обработчик события ПриКомпоновкеРезультата чаще всего используется для установки значения параметров при оформлении компоновки данных или для передачи внешних наборов данных при инициализации процессора компоновки.
Пример №1. Установка значения параметров при компоновке результата
Следующий фрагмент кода показывает как установить значение параметра основание , которое является документом основания друговог параметра – регистратор
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)СтандартнаяОбработка = Ложь;
Настройки = КомпоновщикНастроек.ПолучитьНастройки();
ПараметрыДанных = Настройки.ПараметрыДанных;
Регистратор = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Регистратор")).Значение;
Основание = Регистратор.Основание;
ПараметрыДанных.УстановитьЗначениеПараметра("Основание", Основание);
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, , , Ложь);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Отметим, что если параметр Основание не найден, будет вызвано исключение в методе УстановитьЗначениеПараметра
.
Пример №2 Передача Внешних Наборов Данных при компоновке результата
В данном примере нужно передать временную таблицу занчений в качестве внешнего набора данных
Процедура ПриКомпоновкеРезультата( ТабличныйДокумент, ДанныеРасшифровки, СтандартнаяОбработка) СтандартнаяОбработка = Ложь; НастройкиКомпоновки = КомпоновщикНастроек.ПолучитьНастройки(); КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновки, ДанныеРасшифровки); Тз = ПолучитьМоюТаблицуЗначений() ; // это пользователькая функция в молуле обекта ВнешниеНаборы = Новый Структура("ТЗ", ТЗ); ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборы, ДанныеРасшифровки); ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент( ТабличныйДокумент ); ПроцессорВывода.Вывести(ПроцессорКомпоновки); КонецПроцедуры
Пример №3 Изменение запрос набора данных
СтандартнаяОбработка = Ложь;СхемаКомпоновкиДанных.НаборыДанных.НаборыДанных1.Запрос = ТекстЗапроса();
НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры
Пример № 4 Изменение в табличном документе до его вывода
В данном примере тревуется делать изменения в документе, в который выводится результат.
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)СтандартнаяОбработка = Ложь; НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
ВнестиМоиИзменения(НастройкиОтчета, ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки);
КонецПроцедуры Процедура ВнестиМоиИзменения(КомпоновщикНастроек, ДокументРезультат)Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ПараметрыДанных = Настройки.ПараметрыДанных;
ПериодОтчета = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета")).Значение;
Если ПериодОтчета< ТекущаяДата() Тогда
ТекстПредупреждения = "Данные отчета не актуальные"; ТаблицаПредупреждение = Новый ТабличныйДокумент;
ОбластьПредупреждение = ТаблицаПредупреждение.Область(1,1,1,1);
ОбластьПредупреждение.Текст = ТекстПредупреждения;
ОбластьПредупреждение.ЦветТекста = ЦветаСтиля.ЦветОтрицательногоЧисла;
ДокументРезультат.ВставитьОбласть(ОбластьПредупреждение, ДокументРезультат.Область(1,1,1,1),
ТипСмещенияТабличногоДокумента.ПоВертикали);
КонецЕсли
; КонецПроцедуры
Пример №5 Вывода результата компоновки в дерево значений.
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
пример фрагмента кода в модуле объекта отчета:
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ТаблицаСверокВзаиморасчетов = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Подскажите пожалуйста, в Пример №2 , если Таблицу значений получаю в модуле формы, как ее передать в модуль объекта, чтобы выполнить остальной код по примеру 2?
В примере №3 нужно в начало добавить строчку из примера №1 (а не из №2):
Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)