В процессе работы с клиентами часто возникает потребность иметь не одну, а несколько вариаций печатной формы документа Счет на оплату покупателю — для этой задачи есть готовый бланк договора-счета в виде внешней печатной формы. Это может быть связано с необходимостью вывода различных юридических условий, специфических реквизитов для разных типов сделок (например, оферта, счет с доставкой или счет для госконтракта) или добавления графических элементов (логотипов, QR-кодов). Проанализируем все доступные способы решения этой задачи — от пользовательских настроек до профессиональной разработки.
Если ваша задача заключается лишь в изменении текстового блока в нижней части счета (условия оплаты, сроки поставки, реквизиты договора), то разберем самый простой способ, предусмотренный в 1С:Бухгалтерия 3.0. В этой конфигурации реализован справочник Дополнительные условия.
Рассмотрим пошагово, как это работает:
Дополнительные условия.Таким образом, мы можем иметь неограниченное количество вариантов текста счета, не меняя структуру самого макета. Этот метод идеально подходит для бухгалтеров и менеджеров, не требуя вмешательства программиста.
Когда требуется изменить визуальное оформление (шрифты, границы, добавить логотип или факсимиле), воспользуемся встроенным редактором макетов — также добавить графические элементы поможет программа автоматической настройки QR-кодов на печатных страницах. В современных версиях на базе БСП (Библиотека стандартных подсистем) это делается в разделе Администрирование.
Выясним алгоритм действий:
Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.Счет на оплату (СчетЗаказ).Использовать измененный макет (или Редактировать).Важный нюанс: штатно система позволяет назначить только один активный пользовательский макет. Чтобы иметь именно *несколько* разных кнопок печати с разными макетами, этот способ в чистом виде не подходит, так как он заменяет основную форму. Однако, как отмечают эксперты, в 1С:Бухгалтерия 3.0 появилась возможность создавать варианты настроек, которые можно переключать. Но для полноценного выбора из меню «Печать» лучше рассмотреть следующий метод.
Для создания действительно независимых вариантов печати (например, "Счет стандартный" и "Счет экспортный"), которые будут отображаться отдельными пунктами в меню кнопки Печать, применим механизм внешних печатных форм. Это самый гибкий и рекомендуемый способ для кастомизации под требования заказчика.
Проанализируем техническую реализацию. Внешняя печатная форма представляет собой обработку с определенной структурой в модуле объекта. Посмотрим на пример кода функции СведенияОВнешнейПечатнойФорме, которая регистрирует форму в системе:
Функция СведенияОВнешнейПечатнойФорме() Экспорт
ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
ПараметрыРегистрации.Наименование = "Счет на оплату (особая форма)";
ПараметрыРегистрации.БезопасныйРежим = Ложь;
ПараметрыРегистрации.Версия = "1.0";
НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
НоваяКоманда.Представление = "Счет с QR-кодом и условиями доставки";
НоваяКоманда.Идентификатор = "СчетДоставка";
НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
НоваяКоманда.ПоказыватьОповещение = Истина;
Возврат ПараметрыРегистрации;
КонецФункции
Основное преимущество ВПФ в том, что мы можем добавить одну и ту же обработку в справочник Дополнительные отчеты и обработки несколько раз под разными именами или с разными параметрами, в чём поможет комплект внешних печатных форм для 1С:Бухгалтерии 3.0. Внутри кода мы можем обращаться к любым данным информационной базы, например, вычислять СальдоВзаиморасчетов на дату счета и выводить его в печатную форму, что невозможно сделать через простой редактор макетов.
Если мы хотим использовать "силу" типового кода, но при этом иметь несколько вариантов вывода, разберем подход с использованием расширений конфигурации. Вместо создания полностью новой формы "с нуля", мы можем перехватить процедуру формирования печати и внедрить свои макеты.
Рассмотрим ситуацию, когда нужно вывести данные из нескольких табличных частей (Товары и Услуги) со сквозной нумерацией. Типовой конструктор макетов часто пасует перед этой задачей, так как он жестко привязан к структуре областей. В расширении мы можем переопределить метод ДобавитьКомандыПечати:
&После("ДобавитьКомандыПечати")
Процедура Расш_ДобавитьКомандыПечати(КомандыПечати)
Команда = КомандыПечати.Добавить();
Команда.Идентификатор = "СчетСводный";
Команда.Представление = "Счет (сводная форма товары + услуги)";
Команда.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
Команда.Порядок = 50;
КонецПроцедуры
Этот метод позволяет сохранить конфигурацию на поддержке и добавить в стандартное меню Печать столько пунктов, сколько необходимо пользователю.
В специализированных отраслевых решениях, таких как Альфа-Авто 6.1, архитектура подсистемы печати отличается от стандартной БСП. Проанализируем механизм "Комплекты печати". В этой программе можно настроить так называемый комплект, в который входят сразу несколько макетов. При нажатии одной кнопки система предложит напечатать или отправить по почте сразу несколько видов счетов.
Также в Альфа-Авто часто используется встроенный визуальный редактор, который позволяет пользователям самостоятельно включать и выключать видимость колонок (Артикул, Код, Скидка) без правки самого макета в конфигураторе. Это реализуется через настройки в справочнике Настройки печати.
Выясним причины, по которым стоит выбирать тот или иной метод:
Подведем итог: создать несколько печатных форм счета без программирования возможно только в части изменения текстовых условий или визуального оформления существующего макета — для этого разработан конструктор шаблонов печатных форм в пользовательском режиме. Для создания полноценно независимых форм, выбираемых из меню, наиболее эффективным и безопасным для обновлений инструментом остаются внешние печатные формы и расширения.