четверг, 31 октября 2013 г.

Формирование запрос СКД вручную

Модуль формы
&НаСервере
Процедура ПодготовитьЗапросКВыполнению()
    Отчет = РеквизитФормыВЗначение("Объект");   
    СхемаКомпоновкиДанных = Отчет.ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");   
   
    ТЕКСТЗАПРОСА = СхемаКомпоновкиДанных.НаборыДанных[0].Запрос;

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

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

Комментариев нет:

Отправить комментарий