ПараметрыФормы = Новый Структура;
ПараметрыФормы.Вставить("Вариант", НастройкиКомпоновкиДанных);
ПараметрыФормы.Вставить("ИсточникДоступныхНастроек", ИсточникДоступныхНастроекКомпоновкиДанных );
ПараметрыФормы.Вставить("КлючВарианта", );
ПараметрыФормы.Вставить("КлючПользовательскихНастроек", );
ПараметрыФормы.Вставить("Отбор", Новый Структура);
ПараметрыФормы.Вставить("ПользовательскиеНастройки", ПользовательскиеНастройкиКомпоновкиДанных);
ПараметрыФормы.Вставить("ПредставлениеВарианта", );
ПараметрыФормы.Вставить("ПредставлениеПользовательскихНастроек", );
ПараметрыФормы.Вставить("Расшифровка", ОписаниеОбработкиРасшифровкиКомпоновкиДанных);
ПараметрыФормы.Вставить("РежимОтображенияРезультата", РежимОтображенияРезультатаОтчета.Компактный);
ПараметрыФормы.Вставить("СформироватьПриОткрытии", Истина);
ПараметрыФормы.Вставить("ФиксированныеНастройки", НастройкиКомпоновкиДанных);
ПараметрыФормы.Вставить("КлючНазначенияИспользования", );
начала у формы отчета вызывается событие ПриСозданииНаСервере. В нем мы задаем необходимость формирования отчета сразу же при его открытии. Затем происходят четыре события, поставляемые расширением управляемой формы для отчета.
Сначала выполняется загрузка настроек варианта отчета (основного или выбранного пользователем при последнем формировании отчета) в компоновщик настроек. При этом вызываются события ПередЗагрузкойВариантаНаСервере и ПриЗагрузкеВариантаНаСервере. Очевидно, нам нужно создать обработчик события ПередЗагрузкойВариантаНаСервере, чтобы в нем изменить параметры настроек перед их загрузкой в компоновщик (листинг 2.9).
Листинг 2.9. Обработчик события «ПередЗагрузкойВариантаНаСервере»
&НаСервере
Процедура ПередЗагрузкойВариантаНаСервере(Настройки)
Настройки.ПараметрыВывода.УстановитьЗначениеПараметра("Заголовок","Продажа системных блоков");
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("НачалоПериода",'20111201');
Настройки.ПараметрыДанных.УстановитьЗначениеПараметра("КонецПериода",'20111231');
КонецПроцедуры
В параметре Настройки в обработчик передаются настройки варианта отчета, имеющие тип НастройкиКомпоновкиДанных. В данном обработчике методом УстановитьЗначениеПараметра() изменен заголовок отчета, а также установлены значения параметров начала и конца отчетного периода. Однако если настройки являются пользовательскими (в нашем случае – это параметры отчетного периода) и пользователь хоть раз задавал их значения в форме отчета, то устанавливать их в этом обработчике бесполезно.
Это происходит потому, что после загрузки настроек варианта отчета восстанавливаются пользовательские настройки, сделанные пользователем при последнем формировании отчета и автоматически сохраненные платформой. Пользовательские настройки накладываются на настройки варианта и загружаются в компоновщик настроек. При этом вызываются события ПередЗагрузкойПользовательскихНастроекНаСервере и ПриЗагрузкеПользовательскихНастроекНаСервере.
Так как в схеме компоновки данных мы указали параметры НачалоПериода и КонецПериода в составе быстрых пользовательских настроек (Быстрые пользовательские настройки), то нам нужно создать обработчик события ПередЗагрузкойПользовательскихНастроекНаСервере, чтобы в нем изменить параметры пользовательских настроек перед их загрузкой в компоновщик (листинг 2.10).
Листинг 2.10.Обработчик события «ПередЗагрузкойПользовательскихНастроекНаСервере»
&НаСервере
Процедура ПередЗагрузкойПользовательскихНастроекНаСервере(Настройки)
Настройки.Элементы[0].Значение = ‘20111201’;
Настройки.Элементы[0].Использование = Истина;
Настройки.Элементы[1].Значение = ‘20111231’;
Настройки.Элементы[1].Использование = Истина;
КонецПроцедуры
В параметре Настройки в обработчик передаются настройки варианта отчета, имеющие тип ПользовательскиеНастройкиКомпоновкиДанных. Так как параметра всего два, то можно обращаться к ним по индексу (0, 1) в коллекции элементов пользовательских настроек. Мы устанавливаем значения параметров начала и конца отчетного периода и задаем для них признак использования. Эти настройки загружаются в компоновщик настроек, и отчет формируется с заданными параметрами.
Дальше платформа автоматически вызывает метод СкомпоноватьРезультат(), и происходит событие отчета ПриКомпоновкеРезультата. Отчет компонуется и выводится пользователю.
