Стоит задача вывести результат работы СКД в таблицу значений.
1. Создаем обработку.
2. Добавляем макет. Тип макета: Схема компоновки данных.
3. В макете пишем запрос, его не будем усложнять.
ВЫБРАТЬ РасчетыСКонтрагентамиОстаткиИОбороты.Контрагент, РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовНачальныйОстаток, РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовКонечныйОстаток, РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовПриход, РасчетыСКонтрагентамиОстаткиИОбороты.СуммаВзаиморасчетовРасход ИЗ РегистрНакопления.РасчетыСКонтрагентами.ОстаткиИОбороты(, , Регистратор, , ) КАК РасчетыСКонтрагентамиОстаткиИОбороты
4. Переходим на закладку Параметры. Видим два параметра: НачалоПериода и КонецПериода. Данные параметры в СКД получены из виртуальной таблицы запроса. В дальнейшем мы будем использовать.
5. Вкладка Настройки. Добавим Новая группировка. Значение Поля оставим не заполненым. Тип: Без иерархии.
6. Добавляем новую форму. Размещаем элемент управления Выбор периода, таблицу значений ТЗЕ.
7. Код в модуле формы:
Процедура КнопкаВыполнитьНажатие(Кнопка) // Вставить содержимое обработчика. ВыгрузкаРезультатаСКД(ТЗЕ, НачПериода,КонПериода); ЭлементыФормы.ТЗЕ.СоздатьКолонки(); КонецПроцедуры Процедура ВыбПериодНажатие(Элемент) НастройкаПериода = Новый НастройкаПериода; НастройкаПериода.РедактироватьКакИнтервал = Истина; НастройкаПериода.РедактироватьКакПериод = Истина; НастройкаПериода.ВариантНастройки = ВариантНастройкиПериода.Период; НастройкаПериода.УстановитьПериод(НачПериода, ?(КонПериода='0001-01-01', КонПериода, КонецДня(КонПериода))); Если НастройкаПериода.Редактировать() Тогда НачПериода = НастройкаПериода.ПолучитьДатуНачала(); КонПериода = НастройкаПериода.ПолучитьДатуОкончания(); КонецЕсли; КонецПроцедуры
8. Код в модуле объекта:
Процедура ВыгрузкаРезультатаСКД(ТаблицаЗначенияРезультат, НачПериода,КонПериода) Экспорт СКД = ПолучитьМакет("Макет"); //Загружаем настройки (НастройкиПоУмолчанию) из схемы копоновки данных КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных; КомпоновщикНастроек.Инициализировать(Новый ИсточникДоступныхНастроекКомпоновкиДанных(СКД)); КомпоновщикНастроек.ЗагрузитьНастройки(СКД.НастройкиПоУмолчанию); // устанавливаем параметры отчета НастройкиКомпоновщика = КомпоновщикНастроек.Настройки; ПараметрыНастройки = НастройкиКомпоновщика.ПараметрыДанных; //Ищем парамеры: НачалоПериода и КонецПериода. (Эти параметры определены в СКД) ЗначениеПараметра = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачалоПериода")); ЗначениеПараметра.Значение = НачПериода; //НачПериода - получаем из формы ЗначениеПараметра = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("КонецПериода")); ЗначениеПараметра.Значение = КонецДня(КонПериода); //Получаем макет компоновки КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД, НастройкиКомпоновщика,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); //Через процессор компоновки получим результат ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ТаблицаЗначенияРезультат = Новый ТаблицаЗначений; ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; //Установливаем, куда выводим ПроцессорВывода.УстановитьОбъект(ТаблицаЗначенияРезультат); //собственно вывод ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); КонецПроцедуры