Событие ПриКомпоновкеРезультата

Печать (Ctrl+P)

1С:Предприяятие 8.3

Событие ПриКомпоновкеРезультата вызывается при выполнении метода объекта отчета  СкомпоноватьРезультат. Обработчик события находится в модуле объекта.

ПриКомпоновкеРезультата(<ДокументРезультат>, <ДанныеРасшифровки>, <СтандартнаяОбработка>)

Параметры:

  • <ДокументРезультат> – Документ, в который выводится результат.
  • <ДанныеРасшифровки> – Переменная, в которую необходимо поместить данные расшифровки. Если данный параметр имеет значение Null, то данные расшифровки создавать не нужно.
  • <СтандартнаяОбработка>Тип: Булево.  В данный параметр передается признак выполнения стандартной (системной) обработки события. Если в теле процедуры-обработчика установить данному параметру значение Ложь, стандартная обработка события производиться не будет.Значение по умолчанию: Истина.

Замечание:Безопасный режим на время исполнения данного обработчика будет отключен. Данное замечание не относится к обработчикам событий, расположенным в расширении конфигурации.

Обработчик события ПриКомпоновкеРезультата чаще всего используется для установки значения параметров при оформлении компоновки данных или для передачи внешних наборов данных при инициализации процессора компоновки.

Пример №1. Установка значения параметров при компоновке результата

Следующий фрагмент кода показывает как установить значение параметра основание , которое является документом основания друговог параметра – регистратор

 Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 СтандартнаяОбработка = Ложь;
 Настройки = КомпоновщикНастроек.ПолучитьНастройки();
 ПараметрыДанных = Настройки.ПараметрыДанных;
 Регистратор  = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Регистратор")).Значение;
 Основание = Регистратор.Основание;
 ПараметрыДанных.УстановитьЗначениеПараметра("Основание", Основание);
 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, , , Ложь);
 ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
 ПроцессорКомпоновки.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки, Истина);
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
 ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
 ПроцессорВывода.Вывести(ПроцессорКомпоновки);
 КонецПроцедуры 

Отметим, что если параметр Основание не найден, будет вызвано исключение в методе УстановитьЗначениеПараметра.

Пример №2 Передача Внешних Наборов Данных при компоновке результата

В данном примере нужно передать временную таблицу занчений в качестве внешнего набора данных

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

Пример №3 Изменение запрос набора данных

СтандартнаяОбработка = Ложь;
 СхемаКомпоновкиДанных.НаборыДанных.НаборыДанных1.Запрос = ТекстЗапроса();
 НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
 ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
 ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
 ПроцессорВывода.Вывести(ПроцессорКомпоновки);

 КонецПроцедуры

Пример № 4 Изменение в табличном документе до его вывода

В данном примере тревуется делать изменения в документе, в который выводится результат.

Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)
 СтандартнаяОбработка = Ложь; НастройкиОтчета = КомпоновщикНастроек.ПолучитьНастройки();
 КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиОтчета, ДанныеРасшифровки);
 ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
 ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, , ДанныеРасшифровки, Истина);
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
 ПроцессорВывода.УстановитьДокумент(ДокументРезультат);
 ВнестиМоиИзменения(НастройкиОтчета, ДокументРезультат); ПроцессорВывода.Вывести(ПроцессорКомпоновки);
 КонецПроцедуры

 Процедура ВнестиМоиИзменения(КомпоновщикНастроек, ДокументРезультат)
 Настройки = КомпоновщикНастроек.ПолучитьНастройки(); ПараметрыДанных = Настройки.ПараметрыДанных;
 ПериодОтчета  = ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ПериодОтчета")).Значение; 
Если  ПериодОтчета< ТекущаяДата() Тогда 
ТекстПредупреждения = "Данные отчета не актуальные";     ТаблицаПредупреждение = Новый ТабличныйДокумент;
     ОбластьПредупреждение = ТаблицаПредупреждение.Область(1,1,1,1);
     ОбластьПредупреждение.Текст = ТекстПредупреждения;
     ОбластьПредупреждение.ЦветТекста = ЦветаСтиля.ЦветОтрицательногоЧисла;
     ДокументРезультат.ВставитьОбласть(ОбластьПредупреждение, ДокументРезультат.Область(1,1,1,1),
 ТипСмещенияТабличногоДокумента.ПоВертикали);
 КонецЕсли;
 КонецПроцедуры

Пример №5 Вывода результата компоновки в дерево значений.

 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений 

пример фрагмента кода в модуле объекта отчета:

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
 НастройкиКомпоновкиДанных = КомпоновщикНастроек.ПолучитьНастройки();
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, НастройкиКомпоновкиДанных,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
 ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
 ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки);
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
 ТаблицаСверокВзаиморасчетов = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
Previous Article
Next Article

2 Replies to “Событие ПриКомпоновкеРезультата”

  1. Михаил

    Подскажите пожалуйста, в Пример №2 , если Таблицу значений получаю в модуле формы, как ее передать в модуль объекта, чтобы выполнить остальной код по примеру 2?

  2. Алексей

    В примере №3 нужно в начало добавить строчку из примера №1 (а не из №2):
    Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка)

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте, как обрабатываются ваши данные комментариев.