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