|
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) да можно, не ожидал прямо
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |