Имя: Пароль:
1C
1С v8
Табличный документ на сервере и на форме
0 rustamoff
 
24.12.12
17:53
Два рабочих варианта вывода ТабличногоДокумента в управляемую форму:

1) из этой темы v8: Вывод в табличный документ (управляемые формы)

&НаСервере
Функция ВыводВФорму()

Макет = Отчеты.Отчет3.ПолучитьМакет("МакетОтчета");    
ОбластьЗаголовок = Макет.ПолучитьОбласть("ШапкаОтчета");        
ТабДок=Новый ТабличныйДокумент;    
ТабДок.Вывести(ОбластьЗаголовок);
ТабДок.ОтображатьСетку = Ложь;
ТабДок.Защита = Ложь;
ТабДок.ТолькоПросмотр = Истина;
ТабДок.ОтображатьЗаголовки = Ложь;

Возврат ТабДок;
КонецФункции

Процедура Сформировать(Команда)
    ВыводВФорму().Показать();
КонецПроцедуры

2) второй не использует функцию для возврата ТабличногоДокумента

&НаКлиенте
Процедура Сформировать(Команда)
   СформироватьОтчет(ТабДок, ДатаОтчета);
КонецПроцедуры

&НаСервереБезКонтекста
Процедура СформироватьОтчет(ТабДок, ДатаОтчета)

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

Второй явно элегантнее. Но возникает вопрос, где хранится реквизит формы типа ТабличныйДокумент (второй код подсказыает, что на сервере) и как происходит передача из серверной процедуры в клиентскую во втором коде?
Выдавать глобальные идеи — это удовольствие; искать сволочные маленькие ошибки — вот настоящая работа. Фредерик Брукс-младший