Изменить размер штампа эцп в 1с документооборот
Начиная с версии 1С:Документооборот 2.1.13.28 появилась возможность визуализации документов, подписанных электронной подписью по ГОСТу Р 7.0.97-2016. Хочу рассмотреть реализацию этого механизма и предложить готовый вариант его использования.
На момент написания этой статьи, алгоритм визуализации электронной подписи не изменился и остаётся актуальным для версий 2.1.15.4 и 2.1.16.1. Кому интересно, прошу под спойлер.
Алгоритм визуализации следующий. В общем макете «ШаблонОтметкиЭП»содержится картинка, в которую с помощью ImageMagick впечатываются данные о серийном номере сертификата, субъекте и сроке действия сертификата.
Тут сразу 2 нюанса хочу отметить:
- ImageMagick нужен свежий, который запускается не командой «convert.exe», а «magick.exe convert», причём ошибку о несоответствии версий вы получить только если в персональных настройках работы с файлами вы не меняли имя программы по умолчанию, оставив «convert.exe»;
- у сертификатов, выданных на организацию, в качестве имени субъекта (CN, Соммon Name) указывается организация, а вот в полях фамилия (SN), имя и отчество (GN) , как раз то, что нам надо для выполнения п. 5.23 ГОСТа. Если в тексте файла есть метка «ВставитьЭП», то вместо неё вставляется полученная картинка, а если этой метки нет, то картинка вставляется в документ в угол, который указан в настройках.
За вставку отвечает соответственное содержимое двух общих макетов «ВставкаИзображенияВместоТегаВDocx» и «ВставкаИзображенияЭПСУказаниемПоложенияDocx».
Вернёмся ещё к ImageMagick. Координаты текстовых элементов для вставки в шаблон указываются в функции «СоздатьОтметкуЭП()» общего модуля «РаботаСЭП» относительно левого верхнего угла изображения. Там же указывается размер шрифта надписей (последний параметр функции «НаложитьСтроки()» общего модуля «РаботаСКартинками»). Цвет текста можно поменять в параметре -fill функции «НаложитьСтроки()». Также хочу отметить, что геометрические размеры изображения после вставки в MS Word определяются элементами cx и cy, которые выражены в каких-то странных единицах, которые в коде 1С называются EMU (English Metrick Units). Я уже всё посчитал и подогнал, так что если размер шаблона не будет изменён, то всё будет красиво.
Что можно сделать? Предлагаю формировать визуализацию документа в формате Adobe PDF и накладывать на него защиту. Я сразу оговорюсь, мне известно, что если у документа Adobe PDF разрешена печать, то снять с него защиту можно путём печати на виртуальном pdf-принтере, но есть несколько мыслей:
- в моём варианте разрешена только черновая печать, так что документы будут различаться;
- при некоторых вариантах документооборота, можно запретить печать;
- для злоумышленников это дополнительное лишнее действие, которое невозможно совершить по ошибке и оно подтверждает преступный умысел.
Попробуем наложить ограничения на использование файла визуализации. Мы вынуждены разрешить печать документа с визуализацией подписи, так как предполагаем, что документ у корреспондента может рассматриваться руководством в бумажном виде. Воспользуемся для этого бесплатным программным обеспечением PDFTK Free.
Программа (на момент написания статьи версии 2.02) представляет из себя консольную утилиту и графическую оболочку. В описании к данной утилиты сказано, что опытные пользователи (power users) могут использовать консольную утилиту. Мы естественно опытные, какие же ещё.
Среди публикаций на нашем сайте я находил обёртку для консольной утилиты PDFTK на 1С, в виде внешней обработки, там исполняемый файл лежал в макете и выгружался во временную папку для использования. Очень удобно, но запрещено текущим лицензионным соглашением. Может раньше было можно, не знаю.
Так что качаем программу с официального сайта, ставим на компьютер, где осуществляется визуализация подписываемых документов. Если процедура визуализации не сможет найти утилиту pdftk.exe, то файл в формате Adobe PDF будет всё равно создан, но пользователю будет выведено предупреждение о невозможности наложить дополнительную защиту. Путь к утилите зашит прямо в коде, т. к. по умолчанию инсталлятор ставит программу в одну папку: «C:\Program Files (x86)\PDFtk\bin» для 64-х битных систем.
Расширение проверено на конфигурации 1С:Документооборот государственного учреждения 2.1.15.4 и 2.1.16.1. Нет под рукой КОРП версии, но почти уверен, что взлетит.
Учитывая спорность наложения защиты, выкладываю два варианта расширения — с поддержкой pdftk и без. В версии без наложения защиты код просто закомментирован и его можно активировать.
Его тоже можно заставить создавать файлы PDF. Для этого используется параметр командной строки --convert-to. В расширении убираем весь код, от момента получения файла до запуска утилиты pdftk.
Я тестировал, у меня запустилось с такой строкой: C:\Program Files (x86)\LibreOffice\program\soffice.exe --headless --convert-to pdf:writer_pdf_Export " ТУТ_ИМЯ_ИСХОДНОГО_ФАЙЛА " --outdir " ТУТ_ДИРЕКТОРИЯ_ДЛЯ РЕЗУЛЬТАТА "
Как формировать и запускать консольные команды и проверять результат выполнения можно подсмотреть тут же в коде для утилиты PDFTK.
P.S. некоторые идеи, реализованные в расширении предложены пользователем ignor (они отмечены в тексте).
UPD: Механизм визуализации можно использовать совместно с возможностями отправки и приёма файлов с ЭЦП по почте.
UPD 26.01.2021: исправлены некоторые ошибки, проверена работоспособность на версии 2.1.27.1
Электронный документооборот шагает по стране, стали проходить в организацию мою электронные письма, даже 1С побаловала обновлением Документооборота с исправлением некоторых ошибок ЭДО. Однако совершенно непонятно, как с использованием 1С Документооборот выполнить пункт 5.23 ГОСТа Р 7.0.97-2016, а именно визуализировать электронную подпись (далее ЭП) на документе. Очень надеюсь, что в при следующих обновлениях 1С реализуют данную возможность, но пока предлагаю временное решение.
Т.к. используется режим совместимости с версией платформы 8.3.8, то с расширениями не забалуешь. Будем конфигурацию менять, но только чуть-чуть.
Конкретно передо мной стояла задача по подписанию исходящих писем, но вы можете встроить визуализацию ЭП в другие документы. Исходящее письмо — это документ формата MS Word 2007 и выше, который представляет из себя zip- архив, где текст документа лежит в файле document.xml. Туда и будем добавлять визуализацию.
Идею реализации впечатывания чего-либо в документ Word подсмотрел в модуле ШтрихкодированиеСервер основной конфигурации. Там штрихкоды впечатывают и в старый формат MS Word и даже в Open Document.
Чтобы избежать необходимости точно позиционировать штамп с информацией об ЭЦП, решено было его сделать в виде фигуры с абсолютным позиционированием и автоматическим размером по содержимому (LibreOffice Writer автоматический размер не понимает). Для пущей красоты сделан слабенький градиент. Перед печатью положение штампа пользователь может отрегулировать самостоятельно. Если документ подписан несколькими подписями, то все они выводятся по 2 штуки в строку. Первоначальное позиционирование штампа производится с помощью настроек положения штрихкода, форма которых выводится принудительно.
Файл конфигурации, который нужно объединить с основной, содержит общий макет «ВставкаЭЦПСуказаниемПоложения», где содержится xml- код фигуры с текстом и два общих модуля, в которых реализован серверный и клиентский функционал.
Непосредственно в форме элемента справочника «Исходящие документы» необходимо создать команду «ВизулизацияЭЦП», и привязать её к функциональной опции «ИспользоватьЭлектронныеПодписи». Эту команду нужно разместить в группе « ФормаЭПИШифрование/ ЭП», желательно установить свойство «ТолькоВоВсехДействиях».
В конфигурации 1С:Документооборот настройка визуализации электронной подписи хранится в персональных настройках пользователя в разделе НСИ и администрирование - Сервис - Персональные настройки - Настройки ЭП и шифрование
В типовом функционале в 1С:Документооборот есть возможность настраивать размещение электронной подписи на странице:
- В левом верхнем углу
- В левом нижнем углу
- В правом верхнем углу
- В правом нижнем углу
Чаще всего штамп электронной подписи может перекрывать текст документа.
Но начиная с версии 2.1.13 можно внедрить штамп в любое место автозаполняемого документа.
Для этого в файле, прикрепленном к шаблону документа нужно вставить Текстовое поле (см.рисунок) с тегом ВставитьЭП. Втавить текстовое поле можно включив в параметрах MS Word режим Разработчик (меню Разработчик - Элементы управления - Формы предыдущих версий - Поле)
При создании документа по шаблону с автозаполняемым файлом или при добавлении файла из шаблона
В результате в указанном месте (например, в конце документа) будет размещен штамп со всем электронными подписями, которыми подписан файл.
Специальные предложения
(1) Спасибо за Вашу поправку. Да. Действительно так. Можно вставить текст. Здесь я использовала параметр по аналогии с автозаполняемыми шаблонами, так как для автозаполняемых файлов параметр работает корректнее.
(3)
(4)
Добрый день
1. В Документооборот 8 КОРП, редакция 2.1 (2.1.27.1) данная функция работает для файла, размещенного в шаблоне документа.
После подписания документа сЭП, штамп вставляется в файл.
В конфигурации 1С:Документооборот изменился механизм Формирования визуализации подписанного файла (к сожалению, не могу сказать с какой версии). Файлы визуализации хранятся в регистре Служебные файлы документа. При открытии подписанного файла создается и открывается файл, размещенный в регистре.
2. В версии 2.1.27.1 не получилось разместить штамп в файле, созданном по шаблону.
Документооборот государственного учреждения, редакция 2.1 (2.1.16.1) есть функция Штампа ЭП. Сделал все как Вы описали. штампа нет в документе
Просмотры 7697
Загрузки 0
Рейтинг 11
Создание 09.04.20 12:43
Обновление 09.04.20 12:43
№ Публикации 1221956
Тип файла Нет файла
Операционная система Не имеет значения
Вид учета Не имеет значения
Доступ к файлу Бесплатно (free)
Код открыт Да
Главное отличие онлайн-тренажера - отработка теории в группах с последующим разбором, сразу, никаких автовебинаров.
См. также
Как настроить правильную техподдержку (helpdesk, service desk на коленке) Промо
Эта статья будет полезна для компаний, которые оказывают техническую поддержку своим пользователям - внешним или внутренним клиентам. В статье я расскажу, как оказываем поддержку мы, как выстроили этот бизнес-процесс, что контролируем и на что обращаем внимание в работе. Вы можете использовать наш опыт при построении собственной системы поддержки или обратиться к нам за помощью за построением такой системы, будем рады помочь. В статье формируется основной набор правил, которые мы сформировали при настройке системы для себя, а так же небольшие примеры того, как мы эти правила применяем.
24.04.2019 32484 siddy 0
Расширение согласования документов (справочников) в УХ на другие объекты
Возникает частенько потребность расширить согласование УХ на другие объекты (актуально для УХ и ERP.УХ). В данной статье будет дана подробная инструкция, как это сделать быстро.
26.01.2022 611 Shining_ninja 0
МЕРАСОФТ Чек-лист - приложение для проверок по чек-листам на платформе 1С:Предприятие
Мы автоматизируем проверки по чек-листам, сокращаем время на формирование отчетов с 2-3 дней в месяц до 1 часа и помогаем компаниям уйти от бумажной работы по составлению отчетов.
16.12.2021 735 Malina_Spb 2
Как вносить изменения в новое ЭДО от 1С в БП 3? Июнь 2021, БП 3.0.93.20
Обновились на 3.0.93.20, и все мои расширения под ЭДО перестали работать. Разберем, где вообще искать код, который выводит данные электронного документа в XML, где вмешиваться в ход этого вывода?
03.06.2021 8316 fixin 26
Права доступа в 1С:Документооборот 2.1 Промо
В программе 1С:Документооборот ред 2.1 механизм системы прав доступа сильно изменился. С одной стороны, права доступа в данной версии стали проще и быстрее, с другой стороны - права по рабочим группам объектов теперь могут противоречить политикам доступа. Разберемся в данной статье как работает механизм прав доступа в 1с документообороте 2.1.
16.09.2016 92996 vlush78 0
Исправление вывода списка процессов в 1С:Документооборот с группировкой
24.05.2021 2135 Xleo777 5
Диадок, модуль 1С - заполнение полей с дополнительной информацией
Некоторые контрагенты для настройки электронного обмена документами требуют заполнения специальных полей ИнфПолФХЖ1 и ИнфПолФХЖ2 дополнительной информацией.
21.05.2021 5151 _Vovik 11
Иной подход к схемам комплексных процессов (возможность пользователям в удобном формате видеть участников процесса до его запуска) в 1С: Документооборот
Предлагаю решение, как несложным образом переработать шаблоны комплексных процессов, чтобы пользователи могли видеть исполнителей процесса еще до запуска, а ответственные за ввод шаблонов упростили себе задачу при работе со сложными маршрутами.
30.03.2021 3977 Capitullo 2
Интеграция «1С:Управление производственным предприятием» с «1С:Документооборот» Промо
В данной статье пойдет речь о возможности интеграции 1С:Управление производственным предприятием ред. 1.3 с 1С:Документооборот КОРП и о том, что может получить предприятие от этой интеграции.
18.02.2013 66870 Vladimir_Konyrev 38
Перенос присоединенных файлов в документооборот при бесшовной интеграции
Сейчас присоединенные файлы, добавленные к документу, перенести в связанный документ документооборота можно только вручную. В статье приведен программный код для решения этой задачи в ERP.
26.02.2021 2339 ВикторП 26
Новое в 1С:Документооборот 3.0
Под новый год фирма 1С сделала нам всем подарок – вышла ознакомительная версия долгожданного 1С:Документооборот 3.0! По традиции новая версия кардинально отличается от предшественника как в плане интерфейса, так и по “начинке”. В данной статье рассмотрим самые интересные нововведения. Приступим к обзору.
11.02.2021 7645 Koder_Line 5
Запрет повторного запуска комплексных процессов типовыми средствами в 1С: Документооборот
Реализация решения изложенного в статье, исключает ошибочный (повторный) запуск комплексного процесса в 1С: Документооборот.
09.11.2020 2510 sulig 10
Блокировка повторного запуска комплексного процесса по документу в 1С: Документооборот
Доработка в 1С: Документооборот позволяет заблокировать повторный запуск комплексного процесса по шаблону для данного документа, если процесс по этому шаблону уже запущен.
02.11.2020 1906 vlad356987 15
Ограничение выбора вариантов шаблонов запуска процессов в Документообороте 2.1
Столкнулся с проблемой, что Документооборот позволяет пользователю выбрать к запуску шаблоны процессов, которые напрямую не указаны в том виде документа, для которого производится запуск процесса.
20.07.2020 3460 Maito 8
Делегирование в 1С:Документооборот
Важной составляющей при настройке прав доступа пользователей в электронный документооборот «1С:Предприятия» является механизм делегирования прав. Он применяется в случае временного отсутствия одного сотрудника (отпуск, больничный и пр.) и необходимости перенаправлять обязанности и ответственность за своевременное выполнение задач на другого сотрудника. При процессе делегирования возможна передача нескольких или всех прав.
25.02.2020 9088 Koder_Line 4
Отправка "Заявления на подключение к ЭДО ПФР" из программы "1С: Бухгалтерия предприятия, ред. 2" для СЗВ-ТД
Инструкция по отправке "Заявления на подключение к ЭДО ПФР" из программы "1С Бухгалтерия предприятия, ред. 2" для обмена сведениями об электронных трудовых книжках и отправки отчетов по форме СЗВ-ТД.
В конфигурации 1С:Документооборот реализована возможность вставлять штамп электронной подписи в подписанные документы. Однако, в процессе работы может возникнуть необходимость доработать штамп электронной подписи в документе. Как это сделать? Рассказываем.
За вставку подписи в документ отвечают два общих текстовых макета
Первый макет вставляет подпись вместо тега «ВставитьЭП», заданного в документе. Второй макет размещает подпись в соответствии с настройками, заданными в справочнике «Настройки электронной подписи и шифрования». Затем остается выбрать необходимый вариант вставки, например, «Левый нижний угол», или «Правый верхний угол» и т. д.
Вставка созданных шаблонов картинки электронной подписи, хранящихся в макете «ШаблонОтметкиЭП»(см. рис. 2), осуществляется с помощью DrawingML. DrawingML — это язык Open XML, предназначенный для определения графических объектов.
Вкратце, в макете нас интересуют 2 параметра cx и cy, которые отвечают за размер изображения. Здесь отмечаем, что значения задаются в EMU (English Metrick Units), которое высчитывается по формуле («РазмерВПикселях»/ 25.4) × 914400.
Далее, в картинку с помощью функции «СоздатьОтметкуЭП()» (см. рис. 3) общего модуля «РаботаСЭП» впечатывается текст с использованием ImageMagick. Настройки использования ImageMagick задаются непосредственно в конфигурации. Сама картинка хранится в формате png и может редактироваться в любом редакторе.
Это нужно, например, для того, чтобы добавить на подпись логотип. Размер текста, содержание, цвет, а также расположение указываются в «СоздатьОтметкуЭП()». Чтобы текст разместился по заданному шаблону, необходимо учитывать, что расположение задается от левого верхнего края.
Таким образом, после подписания документа, в зависимости от настроек, в него вставляется штамп электронной подписи.
Делать визуализацию по ГОСТ Р 7.0.97-2016 исходящего документа в формате MS Word мы уже умеем. А если пришел входящий документ в виде картинки или в формате Adobe PDF подписанный ЭЦП, что будем делать? Итак, набив руку на предыдущих работах, готов замахнуться на визуализацию ЭП на документах Adobe PDF и графических файлах.
Давно ходил вокруг решения данного вопроса и всё никак не получалось придумать каким образом пользователь будет определять куда ставить штамп (или штампы) ЭП при визуализации. Документ ведь может быть любым, в любом графическом формате, любой ориентации и любого разрешения. Значит машина не сможет сама выполнить требования п. 5.23 ГОСТ Р 7.0.97-2016, по части размещения штампа там, где в обычном документе размещается подпись. Решение пришло неожиданно в виде урока по javascript на тему перемещения картинки по web-странице мышкой. Сразу скажу, что javascript для меня не родной и, возможно, существует более оптимальные и красивые решения.
Алгоритм работы следующий:
- исходный файл на сервере конвертируется в набор изображений;
- формируется набор превьюшек изображений для формы указания положений штампов (по умолчанию ширина превьюшки 200 точек);
- на сервере формируются изображения штампов ЭЦП, для которых тоже создаются превьюшки;
- набор превьюшек и массив данных ЭЦП передаётся на клиент;
- на клиенте с помощью интерактивной формы задаётся положение штампов ЭЦП на документе (все штампы на одном листе, чтобы не усложнять);
- на сервере файлы штампов совмещаются с файлом нужного листа документа;
- все листы объединяются в файл формата Adobe PDF (для однообразия);
- полученный файл добавляется к карточке документа.
Вся работа с изображениями идёт с использованием программы ImageMagick, использовал версию 7.0.10-Q8 (Q16 не рекомендую, т. к. разницы в нашем случае нет, а нагрузка на сервер возрастает).
Размещение штампов на документе осуществляется на клиенте в специальной форме, на которой в поле HTML документа формируется web-страничка с превью листа документа, превью штампа (или штампов), который можно двигать мышкой. Для удобства работы с несколькими подписями справа выводится субъект ЭП. Файл визуализации всегда создаётся в формате Adobe PDF и автоматически добавляется в карточку входящего или исходящего документа. Там есть один момент, механизм по перетаскиванию картинки по web-страничке корректно работает только если размер страницы меньше или равен размеру окна (нет полос прокрутки), по этому сначала идёт измерение размера окна браузера и потом масштабирование превью листа документа под этот размер. Однозначный костыль, но работает исправно.
Все настройки находятся в процедуре ИнициализацияНастроекПоложения() общего модуля ВЭПД_ОбщегоНазначенияВызовСервера (он там один). Там указывается разрешение изображений, на которые разбивается исходный файл, ширина превью листов документа для передачи на клиент, размеры штампа ЭП (надо брать с запасом, т. к. длина серийного номера сертификата бывает разной), имя и размер шрифта надписей на штампе. Многие аспекты обработки изображений с использованием ImageMagick раскрыты в моих предыдущих публикациях (тут и тут).
Команды и пункты меню в формах документов создаются динамически, соответственно название команды в меню нужно искать с процедуре ВЭПД_ПриСозданииНаСервереПосле() для форм. Сейчас команда называется «Создать файл визуализации (произвольный документ)», т. к. существует похожая по функционалу и названию команда из другого моего расширения.
Расширение тестировалось на платформе версии 8.3.17.1851 в конфигурации Документооборот государственного учреждения, редакция 2.1 (2.1.28.12).
UPD: 22.09.2021 добавлена работа с внутренними документами, изменено название меню, функции из форм перенесены в общий модуль.
Читайте также: