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