Программно получить печатную форму документа БП 3.0 (БСП)
Каждый раз это настоящий квест! Потому что система БСП — это что-то анти-человеческое.
Приходится опираться не на логику, а брать в руки отладчик и искать точку, к которой можно привязаться:
Мне нужно было получить печатную форму для трех типов документов, поэтому я вывел в табло название переменных и записал себе их значения.
В итоге функция для программной печати документа получилась такой:
Функция ПолучитьПечатнуюФормуДокумента(ТекДокумент) Экспорт
МД = Метаданные.НайтиПоТипу(ТипЗнч(ТекДокумент));
ТекВид = МД.Имя;
МассивОбъектов = Новый Массив();
МассивОбъектов.Добавить(ТекДокумент);
ПараметрыПечати = Новый Структура(); //»ДополнитьКомплектВнешнимиПечатнымиФормами» = ложь
ДопустимыеТипыОбъектовПечати = Неопределено;
Если ТекВид = «СчетНаОплатуПокупателю» Тогда
ИмяМенеджераПечати = «Обработка.ПечатьСчетаНаОплату»;
ИменаМакетов = «СчетЗаказ»;
ИначеЕсли ТекВид = «АктСверкиВзаиморасчетов» Тогда
ИмяМенеджераПечати = «Документ.АктСверкиВзаиморасчетов»;
ИменаМакетов = «АктСверки»;
ИначеЕсли ТекВид = «РеализацияТоваровУслуг» Тогда
ИмяМенеджераПечати = «Документ.РеализацияТоваровУслуг»;
ИменаМакетов = «Накладная»;
//ИменаМакетов = «Акт»;//Для акта
Иначе
Возврат Неопределено;
КонецЕсли;
ПечатныеФормы = УправлениеПечатью.СформироватьПечатныеФормы(ИмяМенеджераПечати, ИменаМакетов, МассивОбъектов, ПараметрыПечати, ДопустимыеТипыОбъектовПечати);
Возврат ПечатныеФормы.КоллекцияПечатныхФорм[0].ТабличныйДокумент;
КонецФункции
Непонятна ни постановка задачи, ни вывод
Т.к кода несколько строк, то ни задача ни вывод пользы никому никакой не принесут. Если все 1С программирование это оперирование подобным обьемом кода, то информация ходящая про 1С программистов не далека от истины.
В мире большого IT несколько строк это либо красивое решение алгоритмической проблемы, либо ответ на вопрос на stackoverflow.
Я пишу эти заметки о своей деятельности. Полезны они или нет? Не знаю. Если бы я загуглил и нашел способ печати из БП3, это сэкономило бы мне 15 минут. Я искал, не нашел ничего свежего, пришлось выяснять самому.
Очень полезно. Спасибо!
А вышестоящему комментатору из «большого IT» хочется заметить, что и там бывает такооое, что ни в сказке сказать, ни пером описать.
это да, Кризис IT от и в Большом IT кризис…
Что именно не понятно в постановке и выводе.
у нас в за конструкции вида [0] ругают
это не критично в практической деятельности.
подскажите как получить печатную форму документа ТранспортнаяНакладная? ут11.4
Если ТекВид = «ТранспортнаяНакладная» Тогда
ИмяМенеджераПечати = «Обработка.ПечатьТранспортнойНакладной»;
//Макет = УправлениеПечатью.МакетПечатнойФормы(«Обработка.ПечатьТранспортнойНакладной.ПФ_MXL_ТранспортнаяНакладная_ru»);
ИменаМакетов = «ПФ_MXL_ТранспортнаяНакладная_ru»;
но чет не взлетает
Спасибо
Попробуйте отладчиком пройтись, посмотрите, где она стопорит.
Спасибо! Очень помогло, сэкономило время.
😉
Очень помогло, спасибо.
Подскажите , как сделать чтобы подпись и печать отображались ?
Делаю отправку по почте и прилетает без подписи.
А если вручную печатную форму формируете, подпись и печать ставится?
Думаю, надо отлаживать…
Да, при ручном формировании ставится и отправляется,
когда делаю массовую отправку , то в pdf попадает только макет.
Читал где то, что необходимо использовать процедуру УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью()
а также УправлениеПечатьюБП.ДобавитьФаксимилеПриОтправке(),
но не понял как это прикрутить.
Да. Наверное нужно. Поставьте точку останова в этих процедурах, посмотрите заходит ли в них 1С при печати.
Только запускайте с ключом РежимОтладки или ловите фоновые задания. Если заходит, посмотрите с какими параметрами и передавайте такие же.
Обратный инжиниринг — наше все.
Подсказка:
ИменаМакетов = «УниверсальныйПередаточныйДокументКомплект»
так печатает УПД
Спасибо, может кому-то пригодится.
И еще вопрос , при формировании акта реализации необходимо вместо накладной формировать АКТ УПД,
попытался ставить Обработку.ПечатьУПД и соответственно макеты от туда, не идет.
Какая то возможность существует это реализовать ?
Не могу сказать. Только отладчиком выяснять.
А как получить печатную форму с печатью и подписью?
Вооружиться отладчиком. При формировании печатных форм переданные параметры указывают, что нужно вставлять печать и подпись. Их придется выявить и передавать в процедуру печати.
Спасибо за подсказку. Очень помогло при печати документа из внешней обработки
Рад помочь
Спасибо. Хорошая подсказка.
Сам пользуюсь.