В обработчике печати не был сформирован табличный документ для:

1. 1c_uZer 25.04.17 08:39 Сейчас в теме
Здравствуйте! Помогите пожалуйста, мне требуется реализовать внешнюю печатную форму для документа "Командировка" ЗУП 3.1. Обработка мной сделана, но при попытке открыть появляется ошибка:

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


Прикладываю модуль обработки и сам файл обработки. Релиз ЗУП 3.1.1.103 платформа 8.3.9.1850

Функция СведенияОВнешнейОбработке() Экспорт

ПараметрыРегистрации = Новый Структура;
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма");
ПараметрыРегистрации.Вставить("Назначение", ПолучитьНазначениеОбработки());
ПараметрыРегистрации.Вставить("Наименование", "Приказ На Служебную Поездку");
ПараметрыРегистрации.Вставить("Версия", "1.0");
ПараметрыРегистрации.Вставить("Информация", "Приказ на служебную поездку (внешний)");
ПараметрыРегистрации.Вставить("БезопасныйРежим", Ложь);

Команды = ПолучитьТаблицуКоманд();
ДобавитьКоманду(Команды, "Приказ на служебную поездку (внешний)",
					 	 "ПриказНаСлужебнуюПоездку",
						 "ВызовСерверногоМетода",
						 Ложь,
						 "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", Команды);
Возврат ПараметрыРегистрации;
КонецФункции

Функция ПолучитьНазначениеОбработки()
	
	Массив= Новый Массив;
	Массив.Добавить("Документ.Командировка");
	Возврат Массив;
	
КонецФункции

Функция ПолучитьТаблицуКоманд()
	
	Команды = Новый ТаблицаЗначений;
	Команды.Колонки.Добавить("Представление", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Идентификатор", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("Использование", Новый ОписаниеТипов("Строка"));
	Команды.Колонки.Добавить("ПоказыватьОповещение", Новый ОписаниеТипов("Булево"));
	Команды.Колонки.Добавить("Модификатор", Новый ОписаниеТипов("Строка"));
	Возврат Команды;
	
КонецФункции

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры

Процедура Печать (МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
ПараметрыВывода.ДоступнаПечатьПоКомплектно = Истина;

Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПриказНаСлужебнуюПоездку") Тогда
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(
			КоллекцияПечатныхФорм,
			"ПриказНаСлужебнуюПоездку",
			НСтр("ru = 'Приказ о направлении в командировку (Т-9)'"),
			ТабличныйДокументПриказОНаправленииСотрудникаВКомандировку(УправлениеПечатью.МакетПечатнойФормы("ПФ_MXL_Т9"), МассивОбъектов, ОбъектыПечати), ,
			"ПФ_MXL_Т9");
КонецЕсли;

КонецПроцедуры

Функция ТабличныйДокументПриказОНаправленииСотрудникаВКомандировку(Макет, МассивОбъектов, ОбъектыПечати)
	
	НастройкиПечатныхФорм = ЗарплатаКадрыПовтИсп.НастройкиПечатныхФорм();
	
	ДокументРезультат = Новый ТабличныйДокумент;
	
	ДокументРезультат.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_Командировка_Т9";
	ДокументРезультат.ОриентацияСтраницы = ОриентацияСтраницы.Портрет;
	ДокументРезультат.АвтоМасштаб = Истина;
	
	// получаем данные для печати
	ДанныеДляПечати = ДанныеДляПечатиКомандировки(МассивОбъектов).Выбрать();
	ПервыйДокумент = Истина;
	Пока ДанныеДляПечати.СледующийПоЗначениюПоля("Ссылка") Цикл
		
		Если ПервыйДокумент Тогда
			ПервыйДокумент = Ложь;
		Иначе
			// Все документы нужно выводить на разных страницах.
			ДокументРезультат.ВывестиГоризонтальныйРазделительСтраниц();
		КонецЕсли;
		
		// Запомним номер строки, с которой начали выводить текущий документ.
		НомерСтрокиНачало = ДокументРезультат.ВысотаТаблицы + 1;
		
		ОбластьМакетаПриказ = Макет.ПолучитьОбласть("Приказ");
		
		ОбластьМакетаПриказ.Параметры.Заполнить(ДанныеДляПечати);
		ОбластьМакетаПриказ.Параметры.Сотрудник = ДанныеДляПечати.ФИОПолные;
		
		ОбластьМакетаПриказ.Параметры.ТабельныйНомер = ПрефиксацияОбъектовКлиентСервер.УдалитьПрефиксыИзНомераОбъекта(ДанныеДляПечати.ТабельныйНомер, Истина, Истина);		
		
		РезультатСклонения = "";
		Если ФизическиеЛицаЗарплатаКадры.Просклонять(Строка(ДанныеДляПечати.ФИОПолные), 4, РезультатСклонения, ДанныеДляПечати.Пол) Тогда
			ОбластьМакетаПриказ.Параметры.Сотрудник	= РезультатСклонения
		КонецЕсли;
		
		ОбластьМакетаПриказ.Параметры.НомерДокумента = КадровыйУчетРасширенный.НомерКадровогоПриказа(ДанныеДляПечати.НомерДокумента);
		
		Если НастройкиПечатныхФорм.ВыводитьПолнуюИерархиюПодразделений И ЗначениеЗаполнено(ОбластьМакетаПриказ.Параметры.Подразделение) Тогда
			ОбластьМакетаПриказ.Параметры.Подразделение = ОбластьМакетаПриказ.Параметры.Подразделение.ПолноеНаименование();
		КонецЕсли;
		
		ДокументРезультат.Вывести(ОбластьМакетаПриказ);
		
		// В табличном документе необходимо задать имя области, в которую был 
		// выведен объект. Нужно для возможности печати покомплектно.
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ДокументРезультат, НомерСтрокиНачало, ОбъектыПечати, ДанныеДляПечати.Ссылка);
		
	КонецЦикла;
	
	Возврат ДокументРезультат;
	
КонецФункции

Функция ДанныеДляПечатиКомандировки(МассивОбъектов)
	
	Запрос = Новый Запрос;
	Запрос.МенеджерВременныхТаблиц = Новый МенеджерВременныхТаблиц;
	
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Командировка.Ссылка КАК Ссылка,
	|	Командировка.Сотрудник КАК Сотрудник,
	|	Командировка.Организация КАК Организация,
	|	Командировка.Дата КАК Дата,
	|	Командировка.Дата КАК ДатаДокумента,
	|	Командировка.Номер КАК НомерДокумента,
	|	ВЫБОР
	|		КОГДА Организации.НаименованиеПолное ПОДОБНО """"
	|			ТОГДА Организации.Наименование
	|		ИНАЧЕ Организации.НаименованиеПолное
	|	КОНЕЦ КАК НазваниеОрганизации,
	|	Организации.КодПоОКПО КАК КодПоОКПО,
	|	Командировка.ДатаНачала КАК ДатаНачала,
	|	Командировка.ДатаНачала КАК Период,
	|	Командировка.ДатаОкончания КАК ДатаОкончания,
	|	Командировка.МестоНазначения КАК МестоНазначения,
	|	Командировка.ОрганизацияНазначения КАК ОрганизацияНазначения,
	|	Командировка.Основание КАК Основание,
	|	Командировка.Цель КАК Цель,
	|	Командировка.ДнейВПути КАК ДнейВПути,
	|	Командировка.Руководитель КАК Руководитель,
	|	Командировка.ДолжностьРуководителя КАК ДолжностьРуководителя,
	|	Командировка.КомандировкаЗаСчетСредств
	|ПОМЕСТИТЬ ВТДанныеДокумента
	|ИЗ
	|	Документ.Командировка КАК Командировка
	|		ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Организации КАК Организации
	|		ПО Командировка.Организация = Организации.Ссылка
	|ГДЕ
	|	Командировка.Ссылка В(&МассивОбъектов)";
	
	Запрос.Выполнить();
	
	ЗарплатаКадры.СоздатьВТФИООтветственныхЛиц(Запрос.МенеджерВременныхТаблиц, Истина, ОбщегоНазначенияКлиентСервер.ЗначениеВМассиве("Руководитель"), "ВТДанныеДокумента");
	
	ОписательВременныхТаблиц = КадровыйУчет.ОписательВременныхТаблицДляСоздатьВТКадровыеДанныеСотруднико­в(
		Запрос.МенеджерВременныхТаблиц,
		"ВТДанныеДокумента");
	КадровыйУчет.СоздатьВТКадровыеДанныеСотрудников(ОписательВременныхТаблиц, Истина, "ФИОПолные,Подразделение,Должность,ТабельныйНомер,ДокументПредставление,Пол");
	
	Запрос.Текст =
	"ВЫБРАТЬ
	|	Командировка.Ссылка КАК Ссылка,
	|	Командировка.ДатаДокумента КАК ДатаДокумента,
	|	Командировка.НомерДокумента КАК НомерДокумента,
	|	Командировка.Сотрудник КАК Сотрудник,
	|	Командировка.Организация КАК Организация,
	|	Командировка.НазваниеОрганизации КАК НазваниеОрганизации,
	|	Командировка.КодПоОКПО КАК КодПоОКПО,
	|	Командировка.ДатаНачала КАК ДатаНачала,
	|	Командировка.ДатаОкончания КАК ДатаОкончания,
	|	Командировка.МестоНазначения КАК МестоНазначения,
	|	РАЗНОСТЬДАТ(Командировка.ДатаНачала, Командировка.ДатаОкончания, ДЕНЬ) + 1 КАК Продолжительность,
	|	РАЗНОСТЬДАТ(Командировка.ДатаНачала, Командировка.ДатаОкончания, ДЕНЬ) + 1 - Командировка.ДнейВПути КАК ПродолжительностьЧистая,
	|	Командировка.ОрганизацияНазначения КАК ОрганизацияНазначения,
	|	Командировка.Основание КАК Основание,
	|	Командировка.КомандировкаЗаСчетСредств КАК КомандировкаЗаСчетСредств,
	|	Командировка.Цель КАК Цель,
	|	КадровыеДанныеСотрудников.ФИОПолные КАК ФИОПолные,
	|	КадровыеДанныеСотрудников.ДокументПредставление КАК ДокументПредставление,
	|	КадровыеДанныеСотрудников.Подразделение КАК Подразделение,
	|	КадровыеДанныеСотрудников.Должность КАК Должность,
	|	КадровыеДанныеСотрудников.ТабельныйНомер КАК ТабельныйНомер,
	|	КадровыеДанныеСотрудников.Пол КАК Пол,
	|	Командировка.ДолжностьРуководителя КАК ДолжностьРуководителя,
	|	ФИООтветственныхЛиц.РасшифровкаПодписи КАК РуководительРасшифровкаПодписи
	|ИЗ
	|	ВТДанныеДокумента КАК Командировка
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТФИООтветственныхЛиц КАК ФИООтветственныхЛиц
	|		ПО Командировка.Ссылка = ФИООтветственныхЛиц.Ссылка
	|			И Командировка.Руководитель = ФИООтветственныхЛиц.ФизическоеЛицо
	|		ЛЕВОЕ СОЕДИНЕНИЕ ВТКадровыеДанныеСотрудников КАК КадровыеДанныеСотрудников
	|		ПО Командировка.Сотрудник = КадровыеДанныеСотрудников.Сотрудник
	|			И Командировка.Период = КадровыеДанныеСотрудников.Период
	|
	|УПОРЯДОЧИТЬ ПО
	|	Командировка.Ссылка";
	
	Возврат Запрос.Выполнить();
	
КонецФункции
Показать
Прикрепленные файлы:
ПриказНаСлужебнуюПоездку.epf
По теме из базы знаний
Вознаграждение за ответ
Показать полностью
Найденные решения
23. m-serg74 46 26.04.17 12:23 Сейчас в теме +0.16 $m
отставить...

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры



а где?

НоваяКоманда.Идентификатор = Идентификатор;
AlexxGor; Maito; user1347915; ivan_luzinov; synelf; olololeg; +6 Ответить
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
7. lefthander 25.04.17 14:01 Сейчас в теме
(1)Не видно где сформировалась коллекцияПечатныхФорм. Перед тем как проверить нужно ли печатать форму в коллукцию нужно поместить печатную форму что бы УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПриказНаСлужебнуюПоездку") вернула Истину, иначе печать пролетает с указанной вами ошибкой.
10. 1c_uZer 26.04.17 07:27 Сейчас в теме
(7) да, вы правы) сейчас у меня возникла проблема чтобы реализовать возможность отладки данной пф)
2. alanto23 35 25.04.17 11:17 Сейчас в теме
Массив лучше формировать тут же. Тогда работает.
Прикрепленные файлы:
ПриказНаСлужебнуюПоездку.epf
avusachev; +1 Ответить
3. 1c_uZer 25.04.17 11:24 Сейчас в теме
(2) спасибо, но к сожалению у меня та же ситуация...и та же самая ошибка, даже после загрузки вашей обработки.
8. Spektr 998 25.04.17 22:17 Сейчас в теме
(2)Не вижу отличия от источника в прикрепленном файле. Можно показать с комментарием. В чем ошибка? Почему не выводит на печать?
12. 1c_uZer 26.04.17 08:38 Сейчас в теме
(8)
Прикрепленные файлы:
4. alanto23 35 25.04.17 11:25 Сейчас в теме
Странно... У меня заработала...
5. 1c_uZer 25.04.17 11:30 Сейчас в теме
(4) я так понимаю вы убрали функцию с формированием массива?
6. alanto23 35 25.04.17 11:42 Сейчас в теме
Да. Массив тут же в процедуре объявил.
У Вас запрос пустой массив формирует. Когда ссылку ему на документ указываешь... Сейчас отвлекли меня, через полчасика - вернусь.
9. VmvLer 25.04.17 22:44 Сейчас в теме
скорее всего в модуле менеджера документа "Командировка" не все функции для обеспечения внешних печатных форм прописаны.

Необходимо посмотреть в модуле менеджера другого документа методы поддержки печатных форм и скопировать в этот
11. 1c_uZer 26.04.17 07:28 Сейчас в теме
(9) сейчас гляну, спасибо.
13. 1c_uZer 26.04.17 11:51 Сейчас в теме
(9) и я лично и до меня в модуль менеджера никто не лазил, думаете есть возможность косяка в релизе? я открываю и формирую данную печатную форму через файл-открыть но если подключить обработку в самой 1с, то отображается ошибка, которую я описал выше.
14. m-serg74 46 26.04.17 11:54 Сейчас в теме
(13) не понял, не исправилось разве?
15. 1c_uZer 26.04.17 11:59 Сейчас в теме
(14) еще раз здравствуйте) через файл-открыть все шикарно, все работает и формируется без проблем но когда я хочу печатать из формы списка или формы документа, у меня ошибка, эта проблема идет у меня еще со вчера:

{ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(247)}: В обработчике печати не был сформирован табличный документ для: 
            ВызватьИсключение(ТекстСообщенияОбОшибке);
16. m-serg74 46 26.04.17 12:02 Сейчас в теме
(15)
В обработчике печати не был сформирован табличный документ для:


вот эта пустота после для смущает, такое впечатление что он чего то не находит
17. 1c_uZer 26.04.17 12:05 Сейчас в теме
(16) я тоже заметил, попробую обновиться сейчас. вдруг будет результат.
18. m-serg74 46 26.04.17 12:05 Сейчас в теме
Функция СведенияОВнешнейОбработке() Экспорт

здесь тоже сделай

ДобавитьКоманду(Команды, "Приказ на служебную поездку (внешний)",
"ПФ_MXL_Т9",
"ВызовСерверногоМетода",
Ложь,
"ПечатьMXL");
19. 1c_uZer 26.04.17 12:13 Сейчас в теме
(18) ничего не поменялось, тот же результат.
20. m-serg74 46 26.04.17 12:15 Сейчас в теме
изменил внеш. печ. форму, сохранил, сделал загрузить в 1С заново, а ошибка та же выходит?
21. 1c_uZer 26.04.17 12:16 Сейчас в теме
22. m-serg74 46 26.04.17 12:21 Сейчас в теме
для проверки что хоть что то выводится, добавь после строки

Пока ДанныеДляПечати.СледующийПоЗначениюПоля("Ссылка") Цикл

строку сообщалку

Сообщить(ДанныеДляПечати.Ссылка);
23. m-serg74 46 26.04.17 12:23 Сейчас в теме +0.16 $m
отставить...

Процедура ДобавитьКоманду(ТаблицаКоманд, Представление, Идентификатор, Использование, ПоказыватьОповещение = Ложь, Модификатор = "")
	НоваяКоманда = ТаблицаКоманд.Добавить();
	НоваяКоманда.Представление = Представление;
	НоваяКоманда.Использование = Использование;
	НоваяКоманда.ПоказыватьОповещение = ПоказыватьОповещение;
	НоваяКоманда.Модификатор = Модификатор;
КонецПроцедуры



а где?

НоваяКоманда.Идентификатор = Идентификатор;
AlexxGor; Maito; user1347915; ivan_luzinov; synelf; olololeg; +6 Ответить
24. 1c_uZer 26.04.17 12:29 Сейчас в теме
(23) это решило проблему, спасибо большое. Пока даже тяжело понимаю за что они отвечают, делал по шаблону, упустил "Идентификатор" видимо.
25. VmvLer 26.04.17 20:04 Сейчас в теме
Идентификаторы нужны для вызова по расписанию. Как правило это актуально для обработок.

Но печать документов тоже можно выполнять по расписанию с отправкой по почте, причем вариантов вызова
и для регламентного задания, и для печати, и для открытия отчета(обработки) может быть несколько

тут отвлеченный пример из обработки в качестве примера:

Функция СведенияОВнешнейОбработке() Экспорт
	
	ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке("2.2.2.0"); // Версия БСП 
	
	ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиДополнительнаяОбработка();
	ПараметрыРегистрации.Наименование = "Json выгрузка";
	ПараметрыРегистрации.Версия = "20.04.2017";
	ПараметрыРегистрации.БезопасныйРежим = Ложь;
	ПараметрыРегистрации.Информация = "Json выгрузка";
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Json выгрузка по поступлению (регламентное задание)'");
	Команда.Идентификатор = "JsonВыгрузкаПоПоступлениюПоРасписанию";  // Срока, уникальная в пределах данной обработки
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Ложь;
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Json выгрузка по реализации (регламентное задание)'");
	Команда.Идентификатор = "JsonВыгрузкаПоРеализацииПоРасписанию";  
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
	Команда.ПоказыватьОповещение = Ложь;
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Json выгрузка по поступлению (ручной режим)'");
	Команда.Идентификатор = "JsonВыгрузкаПоПоступлениюФорма";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Истина;
	
	Команда = ПараметрыРегистрации.Команды.Добавить();
	Команда.Представление = НСтр("ru = 'Json выгрузка по реализации (ручной режим)'");
	Команда.Идентификатор = "JsonВыгрузкаПоРеализацииФорма";
	Команда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыОткрытиеФормы();
	Команда.ПоказыватьОповещение = Истина;
	
	
	Возврат ПараметрыРегистрации;
	
КонецФункции

Процедура ВыполнитьКоманду(ИдентификаторКоманды, ПараметрыВыполненияКоманды) Экспорт
	
	// Реализация логики команд вызова по расписанию
	Если ИдентификаторКоманды = "JsonВыгрузкаПоПоступлениюПоРасписанию" Тогда
		 JsonВыгрузкаПоПоступлениюСформировать();
		 
	ИначеЕсли ИдентификаторКоманды = "JsonВыгрузкаПоРеализацииПоРасписанию" Тогда	
		JsonВыгрузкаПоРеализацииСформировать();
		
	КонецЕсли;
	
КонецПроцедуры
Показать
26. 1c_uZer 27.04.17 07:39 Сейчас в теме
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)