Т.к. используется режим совместимости с версией платформы 8.3.8, то с расширениями не забалуешь. Будем конфигурацию менять, но только чуть-чуть.
Конкретно передо мной стояла задача по подписанию исходящих писем, но вы можете встроить визуализацию ЭП в другие документы. Исходящее письмо — это документ формата MS Word 2007 и выше, который представляет из себя zip-архив, где текст документа лежит в файле document.xml. Туда и будем добавлять визуализацию.
Идею реализации впечатывания чего-либо в документ Word подсмотрел в модуле ШтрихкодированиеСервер основной конфигурации. Там штрихкоды впечатывают и в старый формат MS Word и даже в Open Document.
Чтобы избежать необходимости точно позиционировать штамп с информацией об ЭЦП, решено было его сделать в виде фигуры с абсолютным позиционированием и автоматическим размером по содержимому (LibreOffice Writer автоматический размер не понимает). Для пущей красоты сделан слабенький градиент. Перед печатью положение штампа пользователь может отрегулировать самостоятельно. Если документ подписан несколькими подписями, то все они выводятся по 2 штуки в строку. Первоначальное позиционирование штампа производится с помощью настроек положения штрихкода, форма которых выводится принудительно.
Файл конфигурации, который нужно объединить с основной, содержит общий макет «ВставкаЭЦПСуказаниемПоложения», где содержится xml-код фигуры с текстом и два общих модуля, в которых реализован серверный и клиентский функционал.
Непосредственно в форме элемента справочника «Исходящие документы» необходимо создать команду «ВизулизацияЭЦП», и привязать её к функциональной опции «ИспользоватьЭлектронныеПодписи». Эту команду нужно разместить в группе «ФормаЭПИШифрование/ЭП», желательно установить свойство «ТолькоВоВсехДействиях».
В модуле формы добавляем 2 процедуры:
#Область ВизуализацияЭЦП
&НаКлиенте
Процедура ВизулизацияЭЦП(Команда)
// открываем форму настройки положения
ПараметрыНастроек = Новый Структура;
ПараметрыНастроек.Вставить("ЗаголовокФормы", НСтр("ru = 'Положение штампа ЭПЦ на странице'"));
ПараметрыНастроек.Вставить("РежимИспользованияНастроек", 1);
ПараметрыНастроек.Вставить("ЗапросОриентацииСтраницы", Ложь);
ОписаниеОповещения = Новый ОписаниеОповещения("ВизуализацияЭЦППродолжение", ЭтотОбъект);
ШтрихкодированиеКлиент.ПолучитьНастройкиШтрихкода(ПараметрыНастроек, ОписаниеОповещения);
КонецПроцедуры
&НаКлиенте
Процедура ВизуализацияЭЦППродолжение(НастройкиШтрихкода, ДополнительныеПараметры) Экспорт
ВизуализацияЭЦПКлиент.ПоказатьДокументСЭЦП(ЭтаФорма);
КонецПроцедуры
#КонецОбласти
Вот и всё! Всех поздравляю с ещё одним шагом в цифровую эпоху.