Внешняя печатная форма УПД в БП 3.0

1. odinyes 30.01.17 12:07 Сейчас в теме
БП 3.0 необходимо сделать ВПФ (Универсальный передаточный документ)
Несколько раз делал ВПФ все получалось, опыт не большой, но с УПД застрял.
Печатная форма изначально находится в обработке "Обработка.ПечатьУПД" (почему именно в обработке?) не понятно куда обращаться, в документе реализации ставлю точку останова в функции Печать и ничего не происходит. Пытался сделать по стандарту как остальные ПФ, но код другой, ВПФ не работает.

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

Даже не могу посмотреть, что за имена файлов, пытаюсь так

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


Всех параметров не понимаю, делаю так сказать по шаблону. но тут похоже хитрее все. Может кто-нибудь подсказать, что я делаю не так.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. spacecraft 30.01.17 12:42 Сейчас в теме
(1)
Печатная форма изначально находится в обработке "Обработка.ПечатьУПД" (почему именно в обработке?) не понятно куда обращаться, в документе реализации ставлю точку останова в функции Печать и ничего не происходит.

Это своего рода Дополнительная обработка встроенная в конфигурацию. Печатная форма УПД в регистре сведений зарегистрирована из обработки.
Соответственно используется процедура Печать из обработки, а не документа. Точку останова нужно ставить на процедуру Печать из модуля менеджера обработки.
3. odinyes 30.01.17 13:03 Сейчас в теме
(2) Подскажите пожалуйста в каком регистре это можно увидеть (на будущее)
5. spacecraft 30.01.17 13:38 Сейчас в теме
(3) конкретный обработчик печати для этого документа прописан жестко в коде: процедура ДобавитьКомандыПечати. И по команде печать будет выполняться нужный обработчик.
Далее есть 2 варианта.
1. Если макет не менялся, то макет берется из обработки.
2. Если макет изменялся, то сохраняется в регистре ПользовательскиеМакетыПечати. И если указано использовать измененный макет, то будет браться этот макет.

4. odinyes 30.01.17 13:32 Сейчас в теме
Пишет ошибку {ОбщийМодуль.ДополнительныеОтчетыИОбработки.Модуль(247)}: В обработчике печати не был сформирован табличный документ для: УПД
ВызватьИсключение(ТекстСообщенияОбОшибке);
Процедура Печать(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	
	ЕстьСчетаФактуры = Ложь;
	Для каждого Объект Из МассивОбъектов Цикл
		Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
			ЕстьСчетаФактуры = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если ЕстьСчетаФактуры И УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПДСтатус1") Тогда
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПДСтатус1", "УПД (статус 1)",
			УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, 
			Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(Истина, Истина)),,
			"ПФ_MXL_УниверсальныйПередаточныйДокумент");
			
	КонецЕсли;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПДСтатус2") Тогда
		ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = "";
		Для каждого Объект Из МассивОбъектов Цикл
			Если ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураВыданный") Тогда
				ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = 
					Документы[Объект.Метаданные().Имя].ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов();
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Если НЕ ПустаяСтрока(ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов) Тогда
			
			УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПД", "Универсальный передаточный документ (внешняя)",
				ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов, Истина,),,"ПФ_MXL_УниверсальныйПередаточныйДокумент");
		КонецЕсли;
	КонецЕсли;
	
	ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);	
	
КонецПроцедуры
Показать
6. vadim1011985 103 30.01.17 13:52 Сейчас в теме
(4) А не легче ли сделать отладку обработки как для ОФ и посмотреть что происходит
В прошлую пятницу делал для акта Сверки

Создаешь форму в своей обработке , добавляешь реквизит СсылкаНаОбъект С выбранным типом документа , добавляешь команду

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

	
	// Вставить содержимое обработчика.
КонецПроцедуры

&НаКлиенте
Процедура Печать(Команда)
	ПечатьНаСервере();
КонецПроцедуры
Показать


Мне кажется ошибка в том, что в процедуре печати у тебя не срабатывает ни одно из условий , поэтому он и не может вернуть макет
8. odinyes 30.01.17 14:26 Сейчас в теме
(6)
Это если я скопирую обработку и исправлю макет (там пару подписей и печать добавить) ? Я так понял?
(7)
Тяжко это отлаживать не имея большого опыта =(
9. vadim1011985 103 30.01.17 15:06 Сейчас в теме
(8) Теперь я тебя не понял. Я код привел как можно проверить работоспособность ВПФ - тебе нужно поставить точку останова и из формы вызвать печать. Это все ты делаешь в СВОЕЙ обработке (которую ты создал для реализации ВПФ)
10. odinyes 30.01.17 16:01 Сейчас в теме
(9) А ок, не о том подумал, спасибо.
7. spacecraft 30.01.17 14:03 Сейчас в теме
(4)
ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов, Истина,)

Тут ошибка скорее всего. Не возвращается готовый Табличный документ.
11. odinyes 01.02.17 09:15 Сейчас в теме
Код, если кому нужен Печати
Процедура Печать(Объекты, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	МассивОбъектов = УчетНДСВызовСервера.ПолучитьНастройкиПечатиУниверсальныхПередаточныхДокументов(Объекты).УниверсальныеПередаточныеДокументы;
	
	ЕстьСчетаФактуры = Ложь;
	Для каждого Объект Из МассивОбъектов Цикл
		Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
			ЕстьСчетаФактуры = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Если ЕстьСчетаФактуры И УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПД") Тогда   
		
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПД",,
			ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, 
			Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(Истина, Истина)),,
			"ПФ_MXL_УниверсальныйПередаточныйДокумент");
			
	КонецЕсли;
	
	Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПД") Тогда
		ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = "";
		Для каждого Объект Из МассивОбъектов Цикл
			Если ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураВыданный") Тогда
				ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = 
					Документы[Объект.Метаданные().Имя].ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов();
				Прервать;
			КонецЕсли;
		КонецЦикла;
		Если НЕ ПустаяСтрока(ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов) Тогда
			УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПД", "УПД",
				ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, 
				ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов, Истина),,
				"ПФ_MXL_УниверсальныйПередаточныйДокумент");
		КонецЕсли;
	КонецЕсли;
	
	ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);	
	
	
КонецПроцедуры
Показать
12. ks8585 3 13.01.20 23:59 Сейчас в теме
(11ну как в итоге победил?сижу сейчас сам хочу сделать внешнюю УПД на основе стандартной - ну никак совсем(
13. odinyes 14.01.20 09:14 Сейчас в теме
(12) Вроде выше код рабочий, не?
Оставьте свое сообщение

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