Имя: Пароль:
1C
1С v8
ОФ.Отчет на СКД, можно формировать в таблицу значений и в табличный документ?
0 vdeemer
 
29.11.19
08:45
Доброе утро!
Отчет на СКД, сначала инициализирую процессор компоновки данных:

[code]
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикМакета = Новый МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
[/code]

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

Не выходит каменный цветок, Данила-мастер:

{ВнешнийОтчет.НовыйОтчет.Форма.ФормаОтчета.Форма(60)}: Ошибка при вызове метода контекста (Вывести) ПроцессорВыводаТД.Вывести(ПроцессорКомпоновкиДанных);    
по причине:
Ошибка вывода результата
по причине:
Неизвестный тип макета

Без сброса и повторной инициализации те же яйчишки, только в профиль(( Скопипастить весь код можно, но зачем тогда сброс процессора компоновки?
1 ДенисЧ
 
29.11.19
08:54
У меня вот такое работает

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

для вывода в ТД нужен другой генератор
3 vdeemer
 
29.11.19
09:07
(1) ну в принципе у меня та же песня, спасибо.
(2) точно, слона-то я и не заметил, дважды спасибо))