ВПФ для УПД БП 3.0

1. Az18011993 13.03.20 14:22 Сейчас в теме
Добрый вечер!
Пишу ВПФ для УПД возникла проблема с выводом макета для документов РеализацияТоваровУслуг. При печати из Счет фактуры макет выводится.
Код прилагаю.
Процедура Печать(МассивОбъектов,КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода) Экспорт
	ПараметрыПечати = новый Структура();
	
	ЕстьСчетаФактурыВыданные = Ложь;
	ЕстьСчетаФактурыПолученные = Ложь;
		
	Для каждого Объект Из МассивОбъектов Цикл
		Если ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураВыданный") Тогда
			ЕстьСчетаФактурыВыданные = Истина;
			Прервать;
		ИначеЕсли ТипЗнч(Объект) = Тип("ДокументСсылка.СчетФактураПолученный") Тогда
			ЕстьСчетаФактурыПолученные = Истина;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	//
	////Если ЕстьСчетаФактурыВыданные И УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_УПД") Тогда
	//	 Макет = ПолучитьМакет("ПФ_MXL_УПД")
	//	 Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм,
	//	"ПФ_MXL_УПД") Тогда
	//			КонецЕсли;
	//	//УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, 
	//	//Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(Истина, Истина, Ложь),,, ПараметрыПечати),,
	//	//"ПФ_MXL_УПД");
		
	//КонецЕсли;
		//Если ЕстьСчетаФактурыВыданные И УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "ПФ_MXL_УПД") Тогда	
		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "ПФ_MXL_УПД", "УПД(внешняя)",
		ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, 
		Документы.СчетФактураПолученный.ТекстЗапросаПечатьСчетовФактур(Истина, Ложь),,, ПараметрыПечати),,
		"ПФ_MXL_УПД");
		//КонецЕсли;

		//
	//Если ЕстьСчетаФактурыВыданные И УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПДСтатус1_981") Тогда
	//	
	//	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПДСтатус1_981", "УПД (статус 1)",
	//	УчетНДС.ПечатьУниверсальныхПередаточныхДокументов981(МассивОбъектов, ОбъектыПечати, 
	//	Документы.СчетФактураВыданный.ТекстЗапросаПечатьСчетовФактур(Истина, Истина, Истина),,, ПараметрыПечати),,
	//	"Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981");
	//	
	//КонецЕсли;
	//
	//Если ЕстьСчетаФактурыПолученные И УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПДСтатус1_981") Тогда
	//	
	//	УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПДСтатус1_981", "УПД (статус 1)",
	//	УчетНДС.ПечатьУниверсальныхПередаточныхДокументов981(МассивОбъектов, ОбъектыПечати, 
	//	Документы.СчетФактураПолученный.ТекстЗапросаПечатьСчетовФактур(Истина, Истина),,, ПараметрыПечати),,
	//	"Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981");
	//	
	//КонецЕсли;
	//
	//Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПДСтатус2") Тогда
	//	ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = "";
	//	Для каждого Объект Из МассивОбъектов Цикл
	//		Если ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураВыданный")
	//			И ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураПолученный") Тогда
	//			ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = 
	//			Документы[Объект.Метаданные().Имя].ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов(Ложь);
	//			Прервать;
	//		КонецЕсли;
	//	КонецЦикла;
	//	Если НЕ ПустаяСтрока(ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов) Тогда
	//		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПДСтатус2", "УПД (статус 2)",
	//		УчетНДС.ПечатьУниверсальныхПередаточныхДокументов(МассивОбъектов, ОбъектыПечати, 
	//		ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов, Истина,, ПараметрыПечати),,
	//		"Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент");
	//	КонецЕсли;
	//КонецЕсли;
	//
	//Если УправлениеПечатью.НужноПечататьМакет(КоллекцияПечатныхФорм, "УПДСтатус2_981") Тогда
	//	ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = "";
	//	Для каждого Объект Из МассивОбъектов Цикл
	//		Если ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураВыданный")
	//			И ТипЗнч(Объект) <> Тип("ДокументСсылка.СчетФактураПолученный") Тогда
	//			ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов = 
	//			Документы[Объект.Метаданные().Имя].ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов(Истина);
	//			Прервать;
	//		КонецЕсли;
	//	КонецЦикла;
	//	Если НЕ ПустаяСтрока(ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов) Тогда
	//		УправлениеПечатью.ВывестиТабличныйДокументВКоллекцию(КоллекцияПечатныхФорм, "УПДСтатус2_981", "УПД (статус 2)",
	//		УчетНДС.ПечатьУниверсальныхПередаточныхДокументов981(МассивОбъектов, ОбъектыПечати, 
	//		ТекстЗапросаПечатьУниверсальныхПередаточныхДокументов, Истина,, ПараметрыПечати),,
	//		"Обработка.ПечатьУПД.ПФ_MXL_УниверсальныйПередаточныйДокумент981");
	//	КонецЕсли;
	//КонецЕсли;
	//
	//ОбщегоНазначенияБП.ЗаполнитьДополнительныеПараметрыПечати(МассивОбъектов, КоллекцияПечатныхФорм, ОбъектыПечати, ПараметрыВывода);	
	
КонецПроцедуры

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

При попытки печати формы из Реализации выводится ошибка : универсальный передаточный документ не применяется'
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. user705522_constantin_h 36 13.03.20 14:37 Сейчас в теме
(1)
При попытки печати формы из Реализации выводится ошибка : универсальный передаточный документ не применяется'

Это вот этот код:
    Если МассивОбъектов.Количество() = 1 И ПервыйДокумент Тогда
        СообщениеОбОшибке = СтроковыеФункцииКлиентСервер.ПодставитьПараметрыВСтроку(
        НСтр("ru='Для %1 универсальный передаточный документ не применяется'"), Строка(МассивОбъектов[0]));
        ОбщегоНазначенияКлиентСервер.СообщитьПользователю(СообщениеОбОшибке);
    КонецЕсли;

А правильный он или нет, разбирайтесь.
4. Az18011993 13.03.20 15:07 Сейчас в теме
(2)Это типовой код,а не мой:)
3. uriah 18 13.03.20 14:52 Сейчас в теме
Пишу ВПФ для УПД возникла проблема с выводом макета для документов РеализацияТоваровУслуг. При печати из Счет фактуры макет выводится.

Это происходит из-за того, что в документе Реализация не передается параметр «Статус», а в счет-фактуре он есть.
5. Az18011993 13.03.20 15:18 Сейчас в теме
Напишите ваше сообщение
(3)А как мне сделать,чтобы у меня форма выводилась и с реализации и с счет фактуры?
6. uriah 18 13.03.20 15:33 Сейчас в теме
(5) УПД можно сформировать из накладной только в случае, если организация не является плательщиком НДС (т.е. если сч-ф не используется). Если же организация работает с НДС и использует сч-ф, то УПД можно напечатать только из сч-ф.
Ищите в коде где установлен запрет на вывод печатной формы.
7. Az18011993 16.03.20 09:02 Сейчас в теме
(6)Все равно не могу разобраться где то...Это в функции формировании табличного документа?
8. user2065591 05.04.24 10:24 Сейчас в теме
Оставьте свое сообщение

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