среда, 28 сентября 2011 г.

Использование СКД вне отчета

Столкнулся с ситуацией когда надо в табличный документ вывести результат выполнения системы компоновки данных - на первый взгляд все просто, но давайте вместе разберемся шаг за шагом.

1. Необходимо получить нужный макет СКД

СхемаКомпоновкиДанных = ПолучитьМакет(ИмяМакетаСКД);

2. Проинициализировать компоновщик настроек.

КомпоновщикНастроек = Новый КомпоновщикНастроекКомпоновкиДанных
    КомпоновщикНастроек.ЗагрузитьНастройки(СхемаКомпоновкиДанных.НастройкиПоУмолчанию);
    ИсточникНастроек = Новый ИсточникДоступныхНастроекКомпоновкиДанных(СхемаКомпоновкиДанных);
    КомпоновщикНастроек.Инициализировать(ИсточникНастроек);

Можно обойтись и без компоновщика, передавая параметры напрямую, но тогда в настройках необходимо их скрыть, и присваивать напрямую
СхемаКомпоновкиДанных.Параметры.Период.Значение = Период

3. Установить параметры компоновщика настроек

Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период"));
    Если Не Параметр = Неопределено Тогда
        Параметр.Использование = Истина;
        Параметр.Значение = ЗначениеПараметра;
    КонецЕсли;

4. Получить макет компоновки

ДанныеРасшифровки = Новый ДанныеРасшифровкиКомпоновкиДанных;
    КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
    Настройки = КомпоновщикНастроек.Настройки;
    МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки);

5. Инициировать процессор компоновки данных, процессор вывода и вывести в коллекцию значений или в табличный документ

ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки,, ДанныеРасшифровки);

    ЭлементыФормы.ДокументРезультат.Очистить();

    ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
    ПроцессорВывода.УстановитьДокумент(ЭлементыФормы.ДокументРезультат);

    ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);