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

Внимание! Тема закрыта. Добавлять сообщения в закрытую тему запрещено.
1. 1c_uZer 04.08.17 09:23 Сейчас в теме
Здравствуйте! Сделал ВПФ, через файл открыть все работает отлично, добавил её в доп отчеты и обработки не открывается с ошибкой "В Обработчике печати не был сформирован табличный документ для ЗаказПокупателя".

Вот код обработки:

&НаСервере
Функция СведенияОВнешнейОбработке() Экспорт
ПараметрыРегистрации = Новый Структура;
МассивНазначений = Новый Массив;
МассивНазначений.Добавить("Документ.ЗаказПокупателя"); //Указываем документ к которому делаем внешнюю печ. форму
ПараметрыРегистрации.Вставить("Вид", "ПечатнаяФорма"); //может быть - ПечатнаяФорма, ЗаполнениеОбъекта, ДополнительныйОтчет, СозданиеСвязанныхОбъектов... 
ПараметрыРегистрации.Вставить("Назначение", МассивНазначений);
ПараметрыРегистрации.Вставить("Наименование", "ЗаказПокупателяСПечатьюШтукИКубов"); //имя под которым обработка будет зарегестрирована в справочнике внешних обработок
ПараметрыРегистрации.Вставить("БезопасныйРежим", ЛОЖЬ);
ПараметрыРегистрации.Вставить("Версия", "1.0"); 
ПараметрыРегистрации.Вставить("Информация", "Печатная форма заказа покупателя в разных единицах измерения "); 
ТаблицаКоманд = ПолучитьТаблицуКоманд();
ДобавитьКоманду(ТаблицаКоманд, "Заказ Покупателя в разных единицах измерения", "ПФ_MXL_ЗаказПокупателя", "ВызовСерверногоМетода", Истина, "ПечатьMXL");
ПараметрыРегистрации.Вставить("Команды", ТаблицаКоманд);

Возврат ПараметрыРегистрации;
КонецФункции

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

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

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

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

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

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

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

	ТабличныйДокумент.ИмяПараметровПечати = "ПАРАМЕТРЫ_ПЕЧАТИ_ЗаказПокупателя_ЗаказПокупателя";
		
	Запрос = Новый Запрос("ВЫБРАТЬ РАЗРЕШЕННЫЕ
	|	Документ.Ссылка                               КАК Ссылка,
	|	Документ.Номер                                КАК Номер,
	|	Документ.Дата                                 КАК Дата,
	|	Документ.Организация                          КАК Покупатель,
	|	Документ.Контрагент                           КАК Поставщик,
	|	Документ.Ответственный.ФизическоеЛицо         КАК Ответственный,
	|	Документ.Организация.Префикс                  КАК Префикс,
	|	Документ.УчитыватьНДС                         КАК УчитыватьНДС,
	|	Документ.ЦенаВключаетНДС                      КАК ЦенаВключаетНДС,
	|	ПРЕДСТАВЛЕНИЕ(Документ.Контрагент)            КАК ПоставщикПредставление,
	|	ПРЕДСТАВЛЕНИЕ(Документ.Организация)           КАК ПокупательПредставление,
	|	ПРЕДСТАВЛЕНИЕ(Документ.Ответственный.ФизическоеЛицо) КАК ОтветственныйПредставление
	|ИЗ
	|	Документ.ЗаказПокупателя КАК Документ
	|ГДЕ
	|	Документ.Ссылка В(&МассивОбъектов)
	|	И Документ.Проведен
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка
	|;
	|
	|ВЫБРАТЬ
	|	ТаблицаТовары.НомерСтроки КАК НомерСтроки,
	|	ТаблицаТовары.Номенклатура КАК Номенклатура,
	|	" + ?(ВыводитьКоды, "ТаблицаТовары.Номенклатура." + КолонкаКодов +" КАК КолонкаКодов,", "") + "
	|	ТаблицаТовары.Номенклатура.НаименованиеПолное КАК НоменклатураПредставление,
	|	ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Характеристика) КАК ХарактеристикаПредставление,
	|	ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения) КАК ПредставлениеБазовойЕдиницыИзмерения,
	|	ВЫБОР
	|		КОГДА ТаблицаТовары.Упаковка <> ЗНАЧЕНИЕ(Справочник.УпаковкиНоменклатуры.ПустаяСсылка)
	|			ТОГДА ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Упаковка.ЕдиницаИзмерения)
	|		ИНАЧЕ ПРЕДСТАВЛЕНИЕ(ТаблицаТовары.Номенклатура.ЕдиницаИзмерения)
	|	КОНЕЦ КАК ПредставлениеЕдиницыИзмеренияУпаковки,
	|	ТаблицаТовары.Количество КАК Количество,
	|	ТаблицаТовары.КоличествоУпаковок КАК КоличествоУпаковок,
	|	ТаблицаТовары.Цена КАК Цена,
	|	ТаблицаТовары.Сумма КАК Сумма,
	|	ТаблицаТовары.СуммаНДС КАК СуммаНДС,
	|	ТаблицаТовары.Ссылка КАК Ссылка 
	|ИЗ
	|	Документ.ЗаказПокупателя.Товары КАК ТаблицаТовары
	|ГДЕ
	|	ТаблицаТовары.Ссылка В(&МассивОбъектов)
	|	И ТаблицаТовары.Ссылка.Проведен
	|
	|УПОРЯДОЧИТЬ ПО
	|	Ссылка,
	|	НомерСтроки
	|ИТОГИ ПО
	|	Ссылка");
	
	Запрос.УстановитьПараметр("МассивОбъектов", МассивОбъектов);
	
	Результаты = Запрос.ВыполнитьПакет();
	
	//Макет = УправлениеПечатью.МакетПечатнойФормы("Документ.ЗаказПоставщику.ПФ_MXL_ЗаказПоставщику");
	  Макет = ПолучитьМакет("ПФ_MXL_ЗаказПокупателя");
	
	ОбластьЗаголовок 		= Макет.ПолучитьОбласть("Заголовок");
	ОбластьШапка 			= Макет.ПолучитьОбласть("Шапка");
	
	ОбластьШапкаТаблицыНачало 	= Макет.ПолучитьОбласть("ШапкаТаблицы|НачалоСтроки");
	ОбластьСтрокаТаблицыНачало 	= Макет.ПолучитьОбласть("СтрокаТаблицы|НачалоСтроки");
	ОбластьПодвалТаблицыНачало 	= Макет.ПолучитьОбласть("ПодвалТаблицы|НачалоСтроки");
	
	ОбластьШапкаТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаКодов");
	ОбластьСтрокаТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаКодов");
	ОбластьПодвалТаблицыКолонкаКодов 	= Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаКодов");
	
	ОбластьШапкаТаблицыКолонкаКодов.Параметры.ИмяКолонкиКодов = КолонкаКодов; 
	
	ОбластьШапкаТаблицыКолонкаУпаковок 		= Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаУпаковок");
	ОбластьСтрокаТаблицыКолонкаУпаковок 	= Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаУпаковок");
	ОбластьПодвалТаблицыКолонкаУпаковок		= Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаУпаковок");
	
	ОбластьКолонкаТоваров = Макет.Область("КолонкаТоваров");
	
	Если НЕ ВыводитьКоды Тогда
		
		ОбластьКолонкаТоваров.ШиринаКолонки = ОбластьКолонкаТоваров.ШиринаКолонки + Макет.Область("КолонкаКодов").ШиринаКолонки;
		
	КонецЕсли;
	
	Если НЕ ВыводитьУпаковки Тогда
		
		ОбластьКолонкаТоваров.ШиринаКолонки = ОбластьКолонкаТоваров.ШиринаКолонки + Макет.Область("КолонкаУпаковокКоличество").ШиринаКолонки
		+ Макет.Область("КолонкаУпаковокПредставление").ШиринаКолонки;
		
	КонецЕсли;
	
	ОбластьШапкаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ШапкаТаблицы|КолонкаТоваров");
	ОбластьСтрокаТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("СтрокаТаблицы|КолонкаТоваров");
	ОбластьПодвалТаблицыКолонкаТоваров 	= Макет.ПолучитьОбласть("ПодвалТаблицы|КолонкаТоваров");
		
	ОбластьШапкаТаблицыКонец 	= Макет.ПолучитьОбласть("ШапкаТаблицы|КонецСтроки");
	ОбластьСтрокаТаблицыКонец 	= Макет.ПолучитьОбласть("СтрокаТаблицы|КонецСтроки");
	ОбластьПодвалТаблицыКонец 	= Макет.ПолучитьОбласть("ПодвалТаблицы|КонецСтроки");
	
	ОбластьПодписей       = Макет.ПолучитьОбласть("Подписи");
	ОбластьИтого          = Макет.ПолучитьОбласть("Итого");
	ОбластьИтогоНДС       = Макет.ПолучитьОбласть("ИтогоНДС");
	ОбластьСуммаПрописью  = Макет.ПолучитьОбласть("СуммаПрописью");
	
	ВыборкаПоДокументам = Результаты[0].Выбрать();
	
	ВыборкаПоТабличнымЧастям = Результаты[1].Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
	ПервыйДокумент = Истина;
	
	Пока ВыборкаПоДокументам.Следующий() Цикл
		
		Если НЕ ВыборкаПоТабличнымЧастям.НайтиСледующий(Новый Структура("Ссылка",ВыборкаПоДокументам.Ссылка)) Тогда
			
			Продолжить;
			
		КонецЕсли;
		
		ВыборкаПоСтрокамТЧ = ВыборкаПоТабличнымЧастям.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
		
		Если НЕ ПервыйДокумент Тогда
			
			ТабличныйДокумент.ВывестиГоризонтальныйРазделительСтраниц();
			
		КонецЕсли;
		
		ПервыйДокумент = Ложь;
		НомерСтрокиНачало = ТабличныйДокумент.ВысотаТаблицы + 1;
		
		// ЗАГОЛОВОК
		ЗаполнитьЗначенияСвойств(РеквизитыДокумента, ВыборкаПоДокументам);
		ОбластьЗаголовок.Параметры.Заполнить(ВыборкаПоДокументам);
		ОбластьЗаголовок.Параметры.ТекстЗаголовка = ФормированиеПечатныхФормСервер.СформироватьЗаголовокДокумента(РеквизитыДокумента, СинонимДокумента);
		ТабличныйДокумент.Вывести(ОбластьЗаголовок);
		
		// ШАПКА
		ОбластьШапка.Параметры.Заполнить(ВыборкаПоДокументам);
		ТабличныйДокумент.Вывести(ОбластьШапка);
		ТабличныйДокумент.Вывести(ОбластьШапкаТаблицыНачало);
		
		Если ВыводитьКоды Тогда
			
			ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаКодов);
			
		КонецЕсли;
		
		ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаТоваров);
		
		Если ВыводитьУпаковки Тогда
			
			ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКолонкаУпаковок);
			
		КонецЕсли;
		
		ТабличныйДокумент.Присоединить(ОбластьШапкаТаблицыКонец);
		ВсегоНаименований  = 0;
		Итого              = 0;
		ИтогоНДС           = 0;
	
		// СТРОКИ ТЧ
		Пока ВыборкаПоСтрокамТЧ.Следующий() Цикл
			
			ОбластьСтрокаТаблицыНачало.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ТабличныйДокумент.Вывести(ОбластьСтрокаТаблицыНачало);
			
			Если ВыводитьКоды Тогда
				
				ОбластьСтрокаТаблицыКолонкаКодов.Параметры.Артикул = ВыборкаПоСтрокамТЧ["КолонкаКодов"];
				ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаКодов);
				
			КонецЕсли;
			
			ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ОбластьСтрокаТаблицыКолонкаТоваров.Параметры.Товар = ФормированиеПечатныхФормСервер.ПолучитьПредставлениеНоменклатурыДляПечати(ВыборкаПоСтрокамТЧ.НоменклатураПредставление,ВыборкаПоСтрокамТЧ.ХарактеристикаПредставление);
			ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаТоваров);
			
			Если ВыводитьУпаковки Тогда
				
				ОбластьСтрокаТаблицыКолонкаУпаковок.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
				ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКолонкаУпаковок);
				
			КонецЕсли;
			
			ОбластьСтрокаТаблицыКонец.Параметры.Заполнить(ВыборкаПоСтрокамТЧ);
			ТабличныйДокумент.Присоединить(ОбластьСтрокаТаблицыКонец);
			
			ВсегоНаименований = ВсегоНаименований + 1;
			Итого             = Итого + ВыборкаПоСтрокамТЧ.Сумма;
			ИтогоНДС          = ИтогоНДС + ВыборкаПоСтрокамТЧ.СуммаНДС;
	
		КонецЦикла;
		
		ТабличныйДокумент.Вывести(ОбластьПодвалТаблицыНачало);
		
		Если ВыводитьКоды Тогда
			
			ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаКодов);
			
		КонецЕсли;
		
		ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаТоваров);
		
		Если ВыводитьУпаковки Тогда
			
			ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКолонкаУпаковок);
			
		КонецЕсли;
		
		ТабличныйДокумент.Присоединить(ОбластьПодвалТаблицыКонец);
		
		// ИТОГО
		ТекстИтоговойСтроки = НСтр("ru = '%Итого%'");
		ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%",ФормированиеПечатныхФормСервер.ФорматСумм(Итого));
		ОбластьИтого.Параметры.Итого = ТекстИтоговойСтроки;
						
		ТекстИтоговойСтроки = НСтр("ru = '%Итого%'");
		ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%",ФормированиеПечатныхФормСервер.ФорматСумм(ИтогоНДС));
		
		Если НЕ ВыборкаПоДокументам.УчитыватьНДС Тогда
			ТекстИтоговойСтроки = НСтр("ru = 'Без НДС'");
		КонецЕсли;
		
		ОбластьИтогоНДС.Параметры.ИтогоНДС = ТекстИтоговойСтроки;
		ОбластьИтогоНДС.Параметры.НДС = ?(ВыборкаПоДокументам.ЦенаВключаетНДС, НСтр("ru='В том числе НДС:'"), НСтр("ru='Сумма НДС:'"));
		
		ТабличныйДокумент.Вывести(ОбластьИтого);
		ТабличныйДокумент.Вывести(ОбластьИтогоНДС);
		
		// СУММА ПРОПИСЬЮ
		
		ТекстИтоговойСтроки = НСтр("ru = 'Всего наименований %ВсегоНаименований%, на сумму %Итого%'");
		СуммаКПрописи = Итого + ?(ВыборкаПоДокументам.ЦенаВключаетНДС, 0, ИтогоНДС);
		
		ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%ВсегоНаименований%", ВсегоНаименований);
		ТекстИтоговойСтроки = СтрЗаменить(ТекстИтоговойСтроки,"%Итого%", ФормированиеПечатныхФормСервер.ФорматСумм(СуммаКПрописи));
				
		ОбластьСуммаПрописью.Параметры.ИтоговаяСтрока = ТекстИтоговойСтроки;
		ОбластьСуммаПрописью.Параметры.СуммаПрописью = ФормированиеПечатныхФормСервер.СформироватьСуммуПрописью(СуммаКПрописи);
			
		ТабличныйДокумент.Вывести(ОбластьСуммаПрописью);
		
		
		// ПОДПИСИ
		ОбластьПодписей.Параметры.Заполнить(ВыборкаПоДокументам);
		ОбластьПодписей.Параметры.ОтветственныйПредставление = ФормированиеПечатныхФормСервер.ФамилияИнициалыФизЛица(ВыборкаПоДокументам.Ответственный);
		ТабличныйДокумент.Вывести(ОбластьПодписей);
		
		УправлениеПечатью.ЗадатьОбластьПечатиДокумента(ТабличныйДокумент, НомерСтрокиНачало, ОбъектыПечати, ВыборкаПоДокументам.Ссылка);
		
	КонецЦикла;
	
	ТабличныйДокумент.АвтоМасштаб = Истина;
	
	Возврат ТабличныйДокумент;
	
КонецФункции
Показать


Подскажите, в чем ошибка?
По теме из базы знаний
Найденные решения
2. 1c_uZer 04.08.17 10:45 Сейчас в теме
тема закрыта, не знаю что было, перезапуск помог...
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. 1c_uZer 04.08.17 10:45 Сейчас в теме
тема закрыта, не знаю что было, перезапуск помог...
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот