Использование СКД для отборов на форме

Возможности СКД можно использовать не только для создания отчетов, но и для произвольных отборов.

На форме документа необходимо поместить реквизит с типом КомпоновщикНастроекКомпоновкиДанных.

СКД для отборов

В модуле форме в обработчик формы ПриСозданииНаСервере добавляем следующий код для инициализации СКД:

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

На необходимый обработчик (команду, событие формы) вешаем процедуру обработки:

 //Здесь мы можем установить параметры для СКД
 ПараметрыКомпоновки = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы;
 ПараметрыКомпоновки.Найти("Параметр1").Значение = ЗначениеПараметра1;

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

Далее можно обрабатывать ТЗВывода как вам необходимо.

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

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