Программно получить печатную форму документа БП 3.0 (БСП)
Каждый раз это настоящий квест! Потому что система БСП — это что-то анти-человеческое.
Приходится опираться не на логику, а брать в руки отладчик и искать точку, к которой можно привязаться:

Мне нужно было получить печатную форму для трех типов документов, поэтому я вывел в табло название переменных и записал себе их значения.

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




Непонятна ни постановка задачи, ни вывод
Т.к кода несколько строк, то ни задача ни вывод пользы никому никакой не принесут. Если все 1С программирование это оперирование подобным обьемом кода, то информация ходящая про 1С программистов не далека от истины.
В мире большого IT несколько строк это либо красивое решение алгоритмической проблемы, либо ответ на вопрос на stackoverflow.
Я пишу эти заметки о своей деятельности. Полезны они или нет? Не знаю. Если бы я загуглил и нашел способ печати из БП3, это сэкономило бы мне 15 минут. Я искал, не нашел ничего свежего, пришлось выяснять самому.
Очень полезно. Спасибо!
А вышестоящему комментатору из «большого IT» хочется заметить, что и там бывает такооое, что ни в сказке сказать, ни пером описать.
это да, Кризис IT от и в Большом IT кризис…
В мире 1С иногда, чтобы написать несколько работающих строк, приходится изучать несколько тысяч строк уже написанного кода разбросанного по множеству разных модулей. Ибо писали всё это такие же любители «настоящего» программирования… И да, польза этого кода в том, что он экономит кому час, а кому и пол дня работы…
да. верно…
продуктивность 1сника надо измерять не в количестве написанных строк, а в количестве проанализированных строк.
Именно. Кстати, спасибо! Мне тоже сэкономили немало времени…
я и себе этим экономлю много времени. Задачи часто повторяются. Тут заметки полезные как мне, так и другим.
Что именно не понятно в постановке и выводе.
у нас в за конструкции вида [0] ругают
это не критично в практической деятельности.
подскажите как получить печатную форму документа ТранспортнаяНакладная? ут11.4
Если ТекВид = «ТранспортнаяНакладная» Тогда
ИмяМенеджераПечати = «Обработка.ПечатьТранспортнойНакладной»;
//Макет = УправлениеПечатью.МакетПечатнойФормы(«Обработка.ПечатьТранспортнойНакладной.ПФ_MXL_ТранспортнаяНакладная_ru»);
ИменаМакетов = «ПФ_MXL_ТранспортнаяНакладная_ru»;
но чет не взлетает
Спасибо
Попробуйте отладчиком пройтись, посмотрите, где она стопорит.
Спасибо! Очень помогло, сэкономило время.
😉
Очень помогло, спасибо.
Подскажите , как сделать чтобы подпись и печать отображались ?
Делаю отправку по почте и прилетает без подписи.
А если вручную печатную форму формируете, подпись и печать ставится?
Думаю, надо отлаживать…
Да, при ручном формировании ставится и отправляется,
когда делаю массовую отправку , то в pdf попадает только макет.
Читал где то, что необходимо использовать процедуру УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью()
а также УправлениеПечатьюБП.ДобавитьФаксимилеПриОтправке(),
но не понял как это прикрутить.
Да. Наверное нужно. Поставьте точку останова в этих процедурах, посмотрите заходит ли в них 1С при печати.
Только запускайте с ключом РежимОтладки или ловите фоновые задания. Если заходит, посмотрите с какими параметрами и передавайте такие же.
Обратный инжиниринг — наше все.
Подсказка:
ИменаМакетов = «УниверсальныйПередаточныйДокументКомплект»
так печатает УПД
Спасибо, может кому-то пригодится.
И еще вопрос , при формировании акта реализации необходимо вместо накладной формировать АКТ УПД,
попытался ставить Обработку.ПечатьУПД и соответственно макеты от туда, не идет.
Какая то возможность существует это реализовать ?
Не могу сказать. Только отладчиком выяснять.
А как получить печатную форму с печатью и подписью?
Вооружиться отладчиком. При формировании печатных форм переданные параметры указывают, что нужно вставлять печать и подпись. Их придется выявить и передавать в процедуру печати.
Подпись и печать, если я правильно понимаю логику 1С, в типовых конфигурациях накладывается не в момент формирования макета :-(, а в момент показа макета пользователю. С одной стороны это позволяет не переформировывая макет показывать и скрывать в нем подписи в момент изменения значения галочки «Показать подписи». С другой после формирования макета для автоматической отправки печатных форм надо накладывать на него те самые подписи самому. Основной код по добавлению подписей и печати у 1С находится в общей форме «ПечатьДокументов», процедура «ДобавитьПодписьИПечать()» этот же код используется в общем модуле «УправлениеПечатьюБП» процедура «ДобавитьФаксимилеВПечатнуюФорму» в обоих случаях надо разбираться с передаваемыми параметрами. Мне показалось проще взять кусок процедуры «ДобавитьПодписьИПечать» (последние строки), передать туда уже сформированный макет и добавить пару дополнительных параметров: список значений «ОбъектыПечати» и структуру «ПараметрыВывода»…
я как-то добавлял программно печать и подпись. может даже об этом писал.
суть в том, что да, добавляешь область, которая должна называться как ожидает 1с.
Вот вроде тут: https://geniy1s.ru/kak-shtatno-dobavit-podpis-i-pechat-v-pechatnuyu-formu-bsp/
Еще один пример тут: https://geniy1s.ru/dobavlyaem-podpisi-pechati-v-upd-zakaz-naryada-alfa-avto-6/
И еще: https://geniy1s.ru/ne-vyvodilas-pechat-v-komplekt-dokumentov-v-vneshnej-pechatnoj-forme/
Спасибо за подсказку. Очень помогло при печати документа из внешней обработки
Рад помочь
Спасибо. Хорошая подсказка.
Сам пользуюсь.