Имя: Пароль:
1C
1С v8
Выгрузить в таблицу значений СКД
0 Germeer
 
26.02.15
20:47
Приветствую.
Есть отчет на СКД, в отчете есть 2 варианта Основной и Расчет
Пытаюсь выгрузить в Таблицу значений Вариант Расчет - не выгружается, ТЗ получается пустой.

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

    // устанавливаем параметры отчета
    ЗначениеПараметра = ПараметрыНастройки.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("НачДата"));
    ЗначениеПараметра.Значение = НачДата;
    ЗначениеПараметра.Использование = Истина;

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

Что делаю не так?
По идее ТЗ нужна для расчета колонок, которые потом будут загружены в отчет Основной. Может кто-нибудь может предложить более лёгкий вариант, всё перепробовал и вычисляемые поля (но там загвоздка: колонки выгружаются в цикле, поэтому получить сразу все колонки для обработки не получается) Заранее Спасибо всем откликнувшимся.
1 Germeer
 
27.02.15
10:38
Ни у кого нет соображений?
2 Godofsin
 
27.02.15
10:42
(1) То есть вариант, что запрос ничего не вернул, вы отвергаете?
3 Germeer
 
27.02.15
10:56
Там есть колонки, но нет строк :-(
+ есть отбор по Подразделению, Сотруднику, как эти отборы в варианте ОСНОВНОЙ программно засунуть в вариант РАСЧЕТ?
4 Godofsin
 
27.02.15
10:58
(3) Еще раз, по вашему запросу и отбору есть данные для выборки? Или ТЗ пустое, ибо ему показывать нечего
5 Godofsin
 
27.02.15
10:59
(3) Ну отборы СКД доступны программно, крутите их как хотите?
6 Godofsin
 
27.02.15
10:59
? = .
7 vhl
 
27.02.15
10:59
(3) есть колонки, но нет строк - как раз и значит, что скд отработала и результат запроса - пустой
8 Germeer
 
27.02.15
11:16
Всё, допетрил.

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

Так всё работает и отбор и выводит строки.
Вспомнил про ДАТУ, но забыл про ОРГАНИЗАЦИЮ.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс