Имя: Пароль:
1C
1С v8
В обработчике печати не был сформирован табличный документ
0 Rizhij_Nikitos
 
04.07.12
12:19
Сижу парюсь с подключаемыми внешними печатными формами для упавляемой УТ 11.0.8.8.

В примере по этой теме есть такая штука, когда после того как выполнен запрос, выполняется строка
   ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ(ТабличныйДокумент, Запрос, ОбъектыПечати, Тип);

Которая, якобы, заполняет переданный табличный документ из запроса(я правда не очень понимаю по какому макету это делается и как это вообще работает), однако, в новой редакции нет стандартной функции в общем модуле ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ, да и макет я свой хочу использовать и самостоятельно перебрать запрос да засунуть куда что надо.


В общем виде выглядит все примерно так:

   УстановитьПривилегированныйРежим(Истина);
   
   ТабличныйДокумент = Новый ТабличныйДокумент;
   
   Запрос = Новый Запрос();
   Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
   Запрос.Текст =

Пишем запрос
Дальше в оригинале происходит магическая:
   ФормированиеПечатныхФорм.ЗаполнитьТабличныйДокументСчетЗаказ(ТабличныйДокумент, Запрос, ОбъектыПечати, Тип);

Если ПривилегированныйРежим() Тогда
   УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
   
Возврат ТабличныйДокумент;


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

И так же выполняю

Если ПривилегированныйРежим() Тогда
   УстановитьПривилегированныйРежим(Ложь);
КонецЕсли;
   
Возврат ТабличныйДокумент;

На что получаю ошибку:
{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(69)}: В обработчике печати не был сформирован табличный документ для: Упаковочный лист
           ВызватьИсключение(ТекстСообщенияОбОшибке);

Кто таким занимался, может подскажете - что не так или как лучше сделать, иначе?
1 Pro-tone
 
модератор
04.07.12
12:22
Я бы советовал ЗаполнитьТабличныйДокументСчетЗаказ() перенести в модуль печ.формы и делать там что захочешь (устанавливать макеты, например)
2 sanja26
 
04.07.12
12:23
парметры наверно не так используются
3 Rizhij_Nikitos
 
04.07.12
12:30
(1) Дело в том, что ЗаполнитьТабличныйДокументСчетЗаказ() в УТ 11.0.8.8 НЕТ.
4 Rizhij_Nikitos
 
04.07.12
12:30
(2) да, я сам докопался уже до параметров, проверяю. Если запашет, я отпишу, закроем тему.
5 Pro-tone
 
модератор
04.07.12
12:37
(3) ну так скопируй всю процедуру к себе в модуль печформы, вызывай и колбась ее. Отлаживать намного легче даже.
6 Rizhij_Nikitos
 
04.07.12
12:47
(5) это точно не выход.
Кстати нашел как отлаживать внешние печатные формы в конфигураторе в управляемых приложениях безо всяких обработок. Надо поставить точку останова в Общий модуль - ДополнительныеОтчетыИОбработки - Процедура ПечатьПоВнешнемуИсточнику - строка
ВнешняяОбработкаОбъект.Печать
И по Ф11 залезем в свою обработину.
7 Pro-tone
 
модератор
04.07.12
12:48
(6) это точно выход. Потому что процедуру ты можешь тогда менять так как тебе надо, а не как прописано в общем модуле. Дело твое в общем.
8 Rizhij_Nikitos
 
04.07.12
12:54
(7) Как минимум мне эта процедура не нужна, потому что она по своему заполняет табличный документ, а мне надо по моему макету это сделать.
9 sanja26
 
04.07.12
12:56
Процедура Печать(МассивОбъектов,
               КоллекцияПечатныхФорм,
               ОбъектыПечати,
               ПараметрыВывода) Экспорт
   
   ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;
   
   //Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактураВыданный1137") Тогда
   ТабличныйДокумент = ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати);
   
       УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
       КоллекцияПечатныхФорм,
       "СчетФактураВыданный1137_МЕТРО",
       "СчетФактураВыданный1137_МЕТРО",
       ТабличныйДокумент
       );
   //КонецЕсли;
   
   //Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "СчетФактураВыданный1137ПечатьВВалюте") Тогда
   //                    ПечатьСчетаФактуры(МассивОбъектов, ОбъектыПечати, Истина));
   //КонецЕсли;
   
КонецПроцедуры