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