Как создать несколько вариантов печатных форм счета на оплату в 1С?

Программист 1С v8.3 (Управляемые формы) 1C:Бухгалтерия Управленческий учет IT и автоматизация бизнеса
← На главную

В процессе работы с клиентами часто возникает потребность иметь не одну, а несколько вариаций печатной формы документа Счет на оплату покупателю — для этой задачи есть готовый бланк договора-счета в виде внешней печатной формы. Это может быть связано с необходимостью вывода различных юридических условий, специфических реквизитов для разных типов сделок (например, оферта, счет с доставкой или счет для госконтракта) или добавления графических элементов (логотипов, QR-кодов). Проанализируем все доступные способы решения этой задачи — от пользовательских настроек до профессиональной разработки.

Способ 1: Использование механизма дополнительных условий (без программирования)

Если ваша задача заключается лишь в изменении текстового блока в нижней части счета (условия оплаты, сроки поставки, реквизиты договора), то разберем самый простой способ, предусмотренный в 1С:Бухгалтерия 3.0. В этой конфигурации реализован справочник Дополнительные условия.

Рассмотрим пошагово, как это работает:

  1. Откроем документ Счет на оплату покупателю.
  2. В нижней части формы найдем поле Дополнительные условия.
  3. Нажмем на кнопку выбора и создадим новую запись в справочнике. Например, назовем ее "Счет-оферта для самовывоза" и вставим необходимый текст.
  4. При печати типовой формы счета система автоматически подставит выбранный текст в соответствующую область макета.

Таким образом, мы можем иметь неограниченное количество вариантов текста счета, не меняя структуру самого макета. Этот метод идеально подходит для бухгалтеров и менеджеров, не требуя вмешательства программиста.

Способ 2: Пользовательское редактирование макетов печатных форм

Когда требуется изменить визуальное оформление (шрифты, границы, добавить логотип или факсимиле), воспользуемся встроенным редактором макетов — также добавить графические элементы поможет программа автоматической настройки QR-кодов на печатных страницах. В современных версиях на базе БСП (Библиотека стандартных подсистем) это делается в разделе Администрирование.

Выясним алгоритм действий:

  1. Перейдем в меню Администрирование — Печатные формы, отчеты и обработки — Макеты печатных форм.
  2. Найдем в списке макет с именем Счет на оплату (СчетЗаказ).
  3. Нажмем кнопку Использовать измененный макет (или Редактировать).
  4. Система откроет табличный документ, где мы можем менять оформление ячеек.

Важный нюанс: штатно система позволяет назначить только один активный пользовательский макет. Чтобы иметь именно *несколько* разных кнопок печати с разными макетами, этот способ в чистом виде не подходит, так как он заменяет основную форму. Однако, как отмечают эксперты, в 1С:Бухгалтерия 3.0 появилась возможность создавать варианты настроек, которые можно переключать. Но для полноценного выбора из меню «Печать» лучше рассмотреть следующий метод.

Способ 3: Внешние печатные формы (ВПФ)

Для создания действительно независимых вариантов печати (например, "Счет стандартный" и "Счет экспортный"), которые будут отображаться отдельными пунктами в меню кнопки Печать, применим механизм внешних печатных форм. Это самый гибкий и рекомендуемый способ для кастомизации под требования заказчика.

Проанализируем техническую реализацию. Внешняя печатная форма представляет собой обработку с определенной структурой в модуле объекта. Посмотрим на пример кода функции СведенияОВнешнейПечатнойФорме, которая регистрирует форму в системе:


Функция СведенияОВнешнейПечатнойФорме() Экспорт
    ПараметрыРегистрации = ДополнительныеОтчетыИОбработки.СведенияОВнешнейОбработке();
    ПараметрыРегистрации.Вид = ДополнительныеОтчетыИОбработкиКлиентСервер.ВидОбработкиПечатнаяФорма();
    ПараметрыРегистрации.Назначение.Добавить("Документ.СчетНаОплатуПокупателю");
    ПараметрыРегистрации.Наименование = "Счет на оплату (особая форма)";
    ПараметрыРегистрации.БезопасныйРежим = Ложь;
    ПараметрыРегистрации.Версия = "1.0";
    
    НоваяКоманда = ПараметрыРегистрации.Команды.Добавить();
    НоваяКоманда.Представление = "Счет с QR-кодом и условиями доставки";
    НоваяКоманда.Идентификатор = "СчетДоставка";
    НоваяКоманда.Использование = ДополнительныеОтчетыИОбработкиКлиентСервер.ТипКомандыВызовСерверногоМетода();
    НоваяКоманда.ПоказыватьОповещение = Истина;
    
    Возврат ПараметрыРегистрации;
КонецФункции

Основное преимущество ВПФ в том, что мы можем добавить одну и ту же обработку в справочник Дополнительные отчеты и обработки несколько раз под разными именами или с разными параметрами, в чём поможет комплект внешних печатных форм для 1С:Бухгалтерии 3.0. Внутри кода мы можем обращаться к любым данным информационной базы, например, вычислять СальдоВзаиморасчетов на дату счета и выводить его в печатную форму, что невозможно сделать через простой редактор макетов.

Способ 4: Программная модификация через расширения

Если мы хотим использовать "силу" типового кода, но при этом иметь несколько вариантов вывода, разберем подход с использованием расширений конфигурации. Вместо создания полностью новой формы "с нуля", мы можем перехватить процедуру формирования печати и внедрить свои макеты.

Рассмотрим ситуацию, когда нужно вывести данные из нескольких табличных частей (Товары и Услуги) со сквозной нумерацией. Типовой конструктор макетов часто пасует перед этой задачей, так как он жестко привязан к структуре областей. В расширении мы можем переопределить метод ДобавитьКомандыПечати:


&После("ДобавитьКомандыПечати")
Процедура Расш_ДобавитьКомандыПечати(КомандыПечати)
    Команда = КомандыПечати.Добавить();
    Команда.Идентификатор = "СчетСводный";
    Команда.Представление = "Счет (сводная форма товары + услуги)";
    Команда.Обработчик = "УправлениеПечатьюБПКлиент.ВыполнитьКомандуПечати";
    Команда.Порядок = 50;
КонецПроцедуры

Этот метод позволяет сохранить конфигурацию на поддержке и добавить в стандартное меню Печать столько пунктов, сколько необходимо пользователю.

Способ 5: Специфика "Альфа-Авто" и комплекты печати

В специализированных отраслевых решениях, таких как Альфа-Авто 6.1, архитектура подсистемы печати отличается от стандартной БСП. Проанализируем механизм "Комплекты печати". В этой программе можно настроить так называемый комплект, в который входят сразу несколько макетов. При нажатии одной кнопки система предложит напечатать или отправить по почте сразу несколько видов счетов.

Также в Альфа-Авто часто используется встроенный визуальный редактор, который позволяет пользователям самостоятельно включать и выключать видимость колонок (Артикул, Код, Скидка) без правки самого макета в конфигураторе. Это реализуется через настройки в справочнике Настройки печати.

Сравнение методов и ограничения

Выясним причины, по которым стоит выбирать тот или иной метод:

Подведем итог: создать несколько печатных форм счета без программирования возможно только в части изменения текстовых условий или визуального оформления существующего макета — для этого разработан конструктор шаблонов печатных форм в пользовательском режиме. Для создания полноценно независимых форм, выбираемых из меню, наиболее эффективным и безопасным для обновлений инструментом остаются внешние печатные формы и расширения.

← На главную