Два рабочих варианта вывода ТабличногоДокумента в управляемую форму:
1) из этой темы
v8: Вывод в табличный документ (управляемые формы)
&НаСервере
Функция ВыводВФорму()
Макет = Отчеты.Отчет3.ПолучитьМакет("МакетОтчета");
ОбластьЗаголовок = Макет.ПолучитьОбласть("ШапкаОтчета");
ТабДок=Новый ТабличныйДокумент;
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Ложь;
Возврат ТабДок;
КонецФункции
Процедура Сформировать(Команда)
ВыводВФорму().Показать();
КонецПроцедуры
2) второй не использует функцию для возврата ТабличногоДокумента
&НаКлиенте
Процедура Сформировать(Команда)
СформироватьОтчет(ТабДок, ДатаОтчета);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СформироватьОтчет(ТабДок, ДатаОтчета)
Макет = Отчеты.ОстаткиТоваров.ПолучитьМакет("Макет");
ОблШапка = Макет.ПолучитьОбласть("ОблШапка");
ОблСтрока = Макет.ПолучитьОбласть("ОблСтрока");
ТабДок.Очистить();
ОблШапка.Параметры.ДатаОтчета = ДатаОтчета;
ТабДок.Вывести(ОблШапка);
Запрос = Новый Запрос;
Запрос.Текст =
"ВЫБРАТЬ
| Номенклатура,
| КоличествоОстаток
|ИЗ
| РегистрНакопления.ОстаткиТоваров.Остатки(&ДатаОтчета, ) ";
Запрос.УстановитьПараметр("ДатаОтчета", ДатаОтчета);
Результат = Запрос.Выполнить();
Выборка = Результат.Выбрать();
Пока Выборка.Следующий() Цикл
ОблСтрока.Параметры.Номенклатура = Выборка.Номенклатура;
ОблСтрока.Параметры.Количество = Выборка.КоличествоОстаток;
ТабДок.Вывести(ОблСтрока);
КонецЦикла;
КонецПроцедуры
Второй явно элегантнее. Но возникает вопрос, где хранится реквизит формы типа ТабличныйДокумент (второй код подсказыает, что на сервере) и как происходит передача из серверной процедуры в клиентскую во втором коде?