При работе в 1С:Документооборот 2.1 пользователи часто сталкиваются с тем, что стандартный штамп визуализации электронной подписи (ЭП) занимает слишком много места в документе или перекрывает важные данные. Особенно это актуально для документов формата DOCX, где используется автоподстановка через тег ВставитьЭП. В данной статье мы подробно разберем, как изменить размеры штампа, отредактировать его внешний вид и реализовать эти изменения правильно — через механизм расширений, чтобы не снимать конфигурацию с поддержки. Для этих задач также есть расширение для управления файлами электронных подписей в 1С.
Для начала проанализируем, как система генерирует штамп. Процесс состоит из нескольких этапов: создание графического изображения (PNG) с текстом подписанта и последующая вставка этого изображения в структуру XML-файла DOCX. Основная логика сосредоточена в общих модулях РаботаСКартинками и ВизуализацияЭПКлиентСервер. Если мы хотим изменить размер, нам нужно воздействовать либо на саму «подложку» (картинку), либо на параметры её контейнера в документе Word.
Когда система заменяет тег ВставитьЭП на изображение, она использует специальный XML-шаблон, описывающий свойства графического объекта в формате OpenXML (подобная логика применяется, когда реализуется вставка QR-кода в файлы doc и docx). Рассмотрим по шагам, как изменить эти параметры:
ВставкаИзображенияВместоТегаВDocx.cx и cy.cx="2160000".Изменяя эти значения, мы заставляем Microsoft Word принудительно масштабировать вставленное изображение до нужных нам размеров. Однако помните: если исходная картинка-штамп имеет другое соотношение сторон, она может выглядеть растянутой или сжатой. Чтобы избежать этого, можно внедрить визуализацию печати ЭЦП с возможностью точного позиционирования.
Если ваша задача не просто уменьшить штамп, но и добавить в него логотип компании или изменить границы (в частности, так настраивается цифровая подпись в Документооборот КОРП 2.1), нам нужно поработать с макетом ШаблонОтметкиЭП. Разберем этот процесс:
ШаблонОтметкиЭП на диск. Это файл формата PNG с прозрачным фоном.После изменения подложки нам может потребоваться скорректировать координаты вывода текста (ФИО, дата, серийный номер). Это делается в процедуре РаботаСКартинками.СформироватьШтампЭП. Проанализируем пример кода, который отвечает за позиционирование текста:
// Пример корректировки координат в модуле РаботаСКартинками
Процедура СформироватьШтампЭП(ПараметрыШтампа) Экспорт
// Здесь задаются отступы и шрифты
ТекущийШрифт = Новый Шрифт("Arial", 10);
// Координаты X и Y определяют, где на картинке начнется текст
КоординатаX = 50;
КоординатаY = 100;
// ... логика отрисовки текста ...
КонецПроцедуры
Многие разработчики опасаются снимать конфигурацию с поддержки. Выясним, как реализовать вышеописанные изменения через расширение (например, так же можно реализовать преобразование doc/docx в PDF). Современная платформа 8.3 позволяет переопределять макеты и методы без правки основной конфигурации.
Шаг 1. Перенос макетов. Добавьте в расширение общий макет ВставкаИзображенияВместоТегаВDocx и ШаблонОтметкиЭП. 1С в первую очередь обращается к объектам расширения. Просто изменив cx и cy в XML макета расширения, вы уже добьетесь результата.
Шаг 2. Перехват функций. Если необходимо программно менять размер в зависимости от условий, используйте аннотацию &Вместо для функций формирования штампа. Посмотрим на примере модуля ВизуализацияЭПКлиентСервер:
&Вместо("ВставитьВизуализациюЭПВместоТэга")
Функция Расш1_ВставитьВизуализациюЭПВместоТэга(ДвДанныеФайла, Расширение, Тэг, ДвоичныеДанныеШтампа, ЧислоПодписей)
// Здесь можно программно изменить ДвоичныеДанныеШтампа перед вставкой
// Или вызвать оригинальный метод и программно обработать результат
Результат = ПродолжитьВызов(ДвДанныеФайла, Расширение, Тэг, ДвоичныеДанныеШтампа, ЧислоПодписей);
Возврат Результат;
КонецФункции
Ситуация с PDF отличается. Здесь 1С часто использует внешние утилиты, такие как ImageMagick. Рассмотрим процедуру, упомянутую в обсуждении:
В модуле РаботаСКартинками существует процедура УменьшитьШтамп. Она работает именно с файлами PDF через командную строку ImageMagick. Если штамп в PDF не уменьшается, проверьте, установлена ли данная утилита на сервере и прописаны ли пути к ней в настройках программы.
Для формата ODT (OpenOffice) решение аналогично DOCX, но редактировать нужно общий макет ВизуализацияЭПOpenOfficeВызовСервера.ВставитьШтрихкодВФайлODTВместоТэга. Там размер задается в сантиметрах внутри SVG-контейнера: svg:width="11.198cm". Просто замените это число на нужное вам.
Проанализируем важный нюанс: при сильном уменьшении штампа текст может стать «мыльным» и нечитаемым. Это происходит потому, что Word сжимает растровое изображение (PNG). Чтобы этого избежать, мы рекомендуем:
СформироватьШтампЭП), чтобы буквы занимали максимум отведенного пространства на подложке.Таким образом, мы рассмотрели комплексный подход к изменению размеров штампа ЭП в «1С:Документооборот 2.1». Самым чистым и стабильным решением является использование расширения для переопределения EMU-параметров в XML-макете DOCX. Это гарантирует сохранение возможности обновления программы и точное позиционирование штампа в документах.