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

Печать (Ctrl+P)

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

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

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

Параметры:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Автор публикации

не в сети 9 часов

master1c8

1
Комментарии: 16Публикации: 449Регистрация: 25-12-2016

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

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

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