Доброе утро!
Отчет на СКД, сначала инициализирую процессор компоновки данных:
[code]
СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных");
КомпоновщикМакета = Новый МакетКомпоновкиДанных = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, КомпоновщикНастроек.Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
[/code]
потом формирую таблицу значений:
[code]
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
ДанныеТЗ = Новый ТаблицаЗначений;
ПроцессорВывода.УстановитьОбъект(ДанныеТЗ);
ПроцессорВывода.Вывести(ПроцессорКомпоновкиДанных);
ЭлементыФормы.ДанныеТЗ.СоздатьКолонки();
[/code]
все формируется на ура. Потом хочу повторить все в табличный документ:
[code]
ПроцессорКомпоновкиДанных.Сбросить();
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновкиДанных);
ПроцессорВыводаТД = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент;
ПроцессорВыводаТД.УстановитьДокумент(ЭлементыФормы.Результат);
ПроцессорВыводаТД.Вывести(ПроцессорКомпоновкиДанных);
[/code]
Не выходит каменный цветок, Данила-мастер:
{ВнешнийОтчет.НовыйОтчет.Форма.ФормаОтчета.Форма(60)}: Ошибка при вызове метода контекста (Вывести) ПроцессорВыводаТД.Вывести(ПроцессорКомпоновкиДанных);
по причине:
Ошибка вывода результата
по причине:
Неизвестный тип макета
Без сброса и повторной инициализации те же яйчишки, только в профиль(( Скопипастить весь код можно, но зачем тогда сброс процессора компоновки?
Схема = РегистрыСведений.ЗаказыИСтатусы.ПолучитьМакет("РасчетИтогов");
настройкиСхемы = Схема.НастройкиПоУмолчанию;
настройкиСхемы.Отбор.Элементы.Очистить();
Для Каждого элем Из настройки.Отбор.Элементы Цикл
эл1 = настройкиСхемы.Отбор.Элементы.Добавить(Тип("ЭлементОтбораКомпоновкиДанных"));
ЗаполнитьЗначенияСвойств(эл1, элем);
КонецЦикла;
настройкиСхемы.ПараметрыДанных.Элементы.Очистить();
Для Каждого элем Из настройки.ПараметрыДанных.Элементы Цикл
эл1 = настройкиСхемы.ПараметрыДанных.Элементы.Добавить();
ЗаполнитьЗначенияСвойств(эл1, элем);
КонецЦикла;
КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных();
МакетКомпоновки = КомпоновщикМакета.Выполнить(Схема, настройкиСхемы,,,Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
ПроцессорКомпоновки = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновки.Инициализировать(МакетКомпоновки);
ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
Результат = ПроцессорВывода.Вывести(ПроцессорКомпоновки);
(1) ну в принципе у меня та же песня, спасибо.
(2) точно, слона-то я и не заметил, дважды спасибо))
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший