|   |   | 
| 
 | v8: Как вывести результат компоновки в таблицу значений | ☑ | ||
|---|---|---|---|---|
| 0
    
        IBTM 28.05.14✎ 18:01 | 
        Потребовалось и решил познакомиться с этим монстром на примере типового отчета зупы РасчетныеЛисткиОрганизаций.
 Мне было нужно программно получить результат выполнения КомпоновщикМакетаКомпоновкиДанных (некоторых полей). Решил что это можно (удобнее) сделать через ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений тыкаюсь в типовой код (немного упростил структуру и своё добавил): КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки); // создадим и инициализируем процессор компоновки данных ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпоновки.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, ДанныеРасшифровки); //свой кусок ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.НачатьВывод(); Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); // Обрадовался, вот думаю сейчас готовую таблицу получу... {Отчет.РасчетныеЛисткиОрганизаций.МодульОбъекта(650)}: Ошибка при вызове метода контекста (Вывести) Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); по причине: Ошибка вывода результата по причине: Неизвестный тип макета Попробовал обойти в цикле по элементно через ПроцессорКомпоновкиДанных.Следующий() ошибка та же самая. мне кажется что всё дело вообще в самом отчёте (ОсновнойСхемеКомпоновкиДанных). Что мне проверить или сравнить? | |||
| 1
    
        По-читатель 28.05.14✎ 18:06 | 
        (0) Может так?
 Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки); | |||
| 2
    
        fisher 28.05.14✎ 18:11 | 
        У страшного зверя есть метод УстановитьОбъект()     | |||
| 3
    
        IBTM 28.05.14✎ 18:13 | 
        (1) я не показал извеняюсь, там идёт переход из процедуры в процедуру с моим кодом. Через параметр сюда как раз передаётся именно ПроцессорКомпоновки, а здесь уже его обозвали как ПроцессорКомпоновкиДанных.     | |||
| 4
    
        kryptonite 28.05.14✎ 18:21 | 
        Как вариант:
 МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СКД, КомпоновщикНастроекОбщийСписок.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных); ПроцессорВывода.УстановитьОбъект(ДеревоЗначений); ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных); Возврат ДеревоЗначений | |||
| 5
    
        IBTM 28.05.14✎ 18:23 | 
        (2) тоже самое
 ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; Результат = Новый ТаблицаЗначений; ПроцессорВывода.НачатьВывод(); ПроцессорВывода.УстановитьОбъект(Результат); Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных) | |||
| 6
    
        fisher 28.05.14✎ 18:27 | 
        А, вспомнил!
 МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, ДанныеРасшифровки, Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений")); | |||
| 7
    
        fisher 28.05.14✎ 18:27 | 
        Одну запятую пропустил     | |||
| 8
    
        fisher 28.05.14✎ 18:28 | 
        Тип генератора - пятым параметром.     | |||
| 9
    
        fisher 28.05.14✎ 18:30 | 
        Тьфу, в (4) уже ответили     | |||
| 10
    
        IBTM 28.05.14✎ 18:41 | 
        ну спасибо, заработало, оказывается не так страшно.
 ещё маленький вопросик, мне дальше понадобится. Одновременно "Инициализировать" ПроцессорКомпоновкиДанных с разными МакетамиКомпановки за один проход в процедуре получится? | |||
| 11
    
        IBTM 28.05.14✎ 18:47 | 
        (10) + ну т.е. поочереди     | |||
| 12
    
        IBTM 02.06.14✎ 10:24 | 
        (10) да можно, не ожидал прямо     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |