Имя: Пароль:
1C
1С v8
програмная инициализация настроек отчета на СКД
0 lobo
 
19.08.15
14:19
есть отчет на СКД, хочу вызвать его из формы журнала по отбору журнала. Параметры заплненыи и отбор тоже. Запускаю отчет - не видит все отобранные поля. Если зайти в Настройка и там нажать Сформировать , то отчет выводиться как нужно.
тОтчет = Отчеты.Реестр.Создать();
НастройкиКД = тОтчет.КомпоновщикНастроек.ПолучитьНастройки();
... установка параметров и отборов
тОтчет.КомпоновщикНастроек.ЗагрузитьНастройки(НастройкиКД);
тФорма = тОтчет.ПолучитьФорму("ФормаОтчета");
тОтчет.СкомпоноватьРезультат(тФорма.ЭлементыФормы.Результат);
тФорма.Открыть();

я так понимаю, что не инициализированы настройки - а как это сделать.
1 _KaA
 
19.08.15
14:28
Если я правильно понял вопрос, то нехватат:

НастройкиКомпоновкиДанных = СхемаКомпоновкиДанных.НастройкиПоУмолчанию;

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

Так же не вижу где такое у тебя:
    ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
    ПроцессорКомпоновки.Инициализировать(Макет);
    ПроцессорКомпоновки.Сбросить();

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