Как реализовать флажок «Подпись и печать» во внешней печатной форме в 1С:Бухгалтерия 3.0?

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

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

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

---

Почему флажок не работает во внешней печатной форме по умолчанию?

Для того чтобы разобраться в проблеме, проанализируем архитектуру подсистемы печати 1С. Вывод факсимиле состоит из двух независимых процессов:

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

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

---

Шаг 1. Инициализация параметров печати во внешней обработке

Рассмотрим подробнее программный код, который решает проблему инициализации параметров. При вызове алгоритма печати из модуля объекта внешней обработки стандартными средствами БСП передается структура ПараметрыПечати. Однако для внешней печатной формы состав этой структуры может отличаться от контекста встроенных документов.

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

Добавьте в процедуру печати (обычно это функция Печать в модуле объекта внешней обработки) следующий код инициализации:


// Инициализируем структуру параметров печати с необходимыми свойствами
ПараметрыПечати = Новый Структура("ДополнитьКомплектВнешнимиПечатнымиФормами");
ПараметрыПечати.Вставить("ДополнитьКомплектВнешнимиПечатнымиФормами", Ложь);

Параметр ДополнитьКомплектВнешнимиПечатнымиФормами со значением Ложь указывает системе, что мы обрабатываем конкретный одиночный макет и не требуем от БСП сложных манипуляций по объединению пакетов печатных форм, что часто приводит к конфликтам во внешних обработках.

---

Шаг 2. Вызов функции дополнения документа подписью и печатью

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

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

Сразу после вывода финальных областей макета добавьте вызов следующего метода:


// Вызываем процедуру БП для наложения картинок подписей и печати
УправлениеПечатьюБП.ДополнитьДокументПодписьюИПечатью(
    ТабличныйДокумент, 
    Шапка, 
    ОбъектыПечати, 
    ПараметрыПечати
);

Давайте проанализируем параметры, которые мы передаем в эту процедуру:

---

Шаг 3. Подготовка макета табличного документа

Процедура ДополнитьДокументПодписьюИПечатью не работает «вслепую». Она ищет в макете строго определенные именованные области и объекты-рисунки. Если ваш макет не подготовлен, программа отработает без ошибок, но картинки на документе не появятся.

Выполним следующие требования к макету внешней печатной формы:

  1. В области подвала (где выводятся подписи руководителя, главного бухгалтера или ответственного лица) должны быть размещены пустые графические объекты (рисунки типа «Картинка»).
  2. Имена этих рисунков должны соответствовать стандартам БСП. Обычно используются имена: Печать, ПодписьРуководителя, ПодписьБухгалтера.
  3. Если вы используете штатный макет (например, макет документа «Акт сверки»), то переименовывать ничего не нужно — там уже заложены необходимые области и рисунки-якоря. Если же макет создается с нуля, убедитесь, что имена графических объектов совпадают с именами в коде типовой конфигурации.

---

Шаг 4. Настройки в пользовательском интерфейсе 1С

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

---

Дополнительные рекомендации и отладка

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

Если у вас возникает ситуация, когда картинки накладываются некорректно (например, «съезжают» или перекрывают важный текст), вы можете использовать более точечный программный метод для позиционирования картинок напрямую через координаты ячеек табличного документа:


// Альтернативный низкоуровневый метод для детальной настройки положения картинок
ОбщегоНазначенияБПВызовСервера.ВывестиПечатьИПодписьВТабличныйДокумент(
    ТабличныйДокумент, 
    ОбластьМакетПодвал, 
    ДанныеДокумента
);

Этот метод предоставляет разработчику больше контроля над масштабированием и точным размещением графических объектов в области подвала, минуя некоторые жесткие ограничения стандартной процедуры БСП.

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

← На главную