Визуализация электронной подписи на исходящих документах в соответствии с ГОСТ Р 7.0.97-2016. Полная автоматизация

22.05.20

Учетные задачи - Печатные формы

Визуализация ЭЦП по ГОСТу Р 7.0.97-2016, предложенная в предыдущей статье (https://infostart.ru/public/931674/) на данную тему, очень прижилась у меня в организации. Начальник часть писем повелел подписывать ЭЦП и не тревожить его по пустякам. Но механизм подписи требовал некоторого количества ручных действий, а хочется полной автоматизации. Итак, постановка задачи: штамп должен позиционироваться сам, pdf-файл со штампом ЭЦП должен создаваться сам и в карточку исходящего документа тоже должен сам загружаться.

Скачать файлы

Наименование Файл Версия Размер
Визуализация ЭП на документах в соответствии с ГОСТ Р 7.0.97-2016. Полная автоматизация.:
.zip 27,76Kb
79
.zip 27,76Kb 79 Скачать

На помощь нам приходит заполнение файла по шаблону, в который мы поместим особую метку. Но раз мы используем заполнение по шаблону, то правильно будет заполнять автоматически исходящий номер, краткое наименование документа, сведения о подписывающем лице и исполнителе документа. Файл шаблона и алгоритмы заполнения полей MS Word я приложу в архиве вместе с реализацией алгоритмов заполнения.
Алгоритм действий пользователей при подготовке исходящего письма следующий:

  1. Исполнитель создаёт письмо по шаблону, заполняет реквизиты и допечатывает необходимый текст в частично заполненный документ.
  2. Документ проходит процессы согласования, которые приняты в организации для такого вида документов.
  3. Согласованный документ отправляется на регистрацию.
  4. Сотрудник документооборота, снабжённый ЭЦП начальника:
    • проверяет правильность оформления документа;
    • регистрирует документ;
    • заполняет регистрационную информацию в файле;
    • подписывает документ ЭЦП;
    • формирует визуализацию данного документа;
    • отправляет документ по почте (при использовании внутренней почты в исходящем письме необходимо удалить файл, подписанный ЭЦП, т. к. он всё равно не уйдёт).

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

Небольшая ремарка про метки. Их в общем случае может быть несколько. Называются они «Sign1”, “Sign2” и т. д. Они расставляются в нужных местах документа и красятся белым цветом, чтобы их не было видно. Размер штампа по вертикали составляет 2,7 см, и чтобы текст ниже штампа не поплыл (MS Word не позволяет использовать поля формы в колонтитулах), необходимо создавать запас пространства. В файле примера используется невидимая таблица с фиксированной высотой.

Непосредственно в форме элемента справочника «Исходящие документы» необходимо создать команды «Визулизация ЭЦП» и «Создать файл визуализации», и привязать их к функциональной опции «Использовать электронные подписи». Эти команды нужно разместить в группе «Форма ЭП и Шифрование/ЭП» с настройкой «Только во всех действиях» и в группе “КонтекстноеМенюФайлыГруппаЭП” таблицы значений «Файлы». Чтобы было совсем красиво, можно внести изменения в процедуру «УстановитьДоступностьКоманд».

Пара моментов про создание файлов PDF. Файлы создаются на компьютере пользователя и по этому MS Word 2007+ должен стоять там. Но MS Word умеет сохранять документы в формат PDF только с версии 2010. Для пользователей MS Word 2007 необходимо установить надстройку 2007 Microsoft Office: сохранение в формате PDF или XPS (Майкрософт).

Блоки кода большие и я их спрячу под спойлер.

 
 Модифицированная процедура "УстановитьДоступностьКоманд"
 
 Текст команд визуализации

Вот и всё, останется только заставить пользователей делать исходящие письма по шаблону. Очень помогает открыть тайну копирования карточки документов, а то люди думают, что им нужно будет заново набирать тексты у всех исходящих писем.

В архиве содержатся следующие файлы:

  1. файл конфигурации для объединения с основной;
  2. пример шаблона исходящего письма;
  3. скрипты заполнения полей файла шаблона.

P.S. Чуть не забыл. При заполнении шаблона в качестве телефона исполнителя документа выводится рабочий телефон и чтобы он появился в системе нужно добавить соответствующую запись в справочнике "Виды контактной информации" в группу "Контактная информация справочника "Пользователи".

Все доработки реально работают в 1С:Документооборот версии 2.1.12.2. Теперь не стыдно и в XXI век шагнуть.

UPD: Для версии 1С:Документооборот 2.1.13.28 и выше смотрите другую статью, там много чего поменялось.

ЭЦП электронная подпись ГОСТ Р 7.0.97-2016

См. также

1С:Документооборот - цена на лицензии КОРП, ПРОФ и ДГУ

Документооборот и делопроизводство (СЭД) Типовые Платформа 1С v8.3 Управленческий учет Платные (руб)

Организуйте правильный документооборот на вашем предприятии. Ведение учета и хранения документов. Управление потоками документации между подразделениями. Работа с договорами в компании. Автоматизация подготовки, согласования и подписания документов. Сократите время и объем ошибок с 1С:Документооборот!

42500 руб.

19.02.2016    106999    103    5    

84

SALE! 25%

Infostart PrintWizard

Пакетная печать Печатные формы Инструментарий разработчика Платформа 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:Конвертация данных 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 Платные (руб)

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

18000 15300 руб.

06.10.2023    7292    21    6    

39

Таймлист (1С:Совещание, Таймлист Лайт)

Документооборот и делопроизводство (СЭД) Конфигурации 1cv8

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

10000 руб.

06.12.2023    1260    0    0    

5

Универсальная печать по шаблонам Word (Печать договоров из 1С БП 3, УНФ 1.6, ЗУП 3, УТ 11, КА 2, ERP 2, ДО 3)

Печатные формы Платформа 1С v8.3 Управляемые формы Конфигурации 1cv8 1С:ERP Управление предприятием 2 Платные (руб)

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

5400 руб.

08.10.2019    42694    144    88    

134

SALE! 30%

Распознавание и загрузка сканов в 1С "одним нажатием": УПД, ТОРГ-12, накладные, счета, номенклатура, заказы и т.д.

Загрузка и выгрузка в Excel Документооборот и делопроизводство (СЭД) Учет документов Распознавание документов и образов Управляемые формы 1С:Комплексная автоматизация 1.х 1С:Бухгалтерия 2.0 1С:Управление торговлей 10 1С:Розница 2 1С:Управление производственным предприятием 1С:Управление нашей фирмой 1.6 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление холдингом 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Бухгалтерский учет Управленческий учет Платные (руб)

Универсальная программа для распознавания ЛЮБЫХ СКАНОВ ИЛИ ФОТО ТОВАРНЫХ ДОКУМЕНТОВ в 1С. Не требует указания параметров и предварительной настройки. Просто выбираете файл (PDF, JPG, DOC, XLS, HTML и т.д.) выбираете документ 1С и нажимаете кнопку "Распознать и загрузить".

6000 5520 руб.

04.06.2019    101378    296    173    

312

1С:Архив

Документооборот и делопроизводство (СЭД) Платформа 1С v8.3 Платные (руб)

"1С:Архив" – это универсальная система, обеспечивающая надежное долговременное хранение документов с гарантией юридической значимости на неограниченный срок. "1С:Архив" разработан на основе нормативно-правовых актов по архивному делу, поддерживает операции хранения документов – от попадания в архив до уничтожения – и не имеет ограничений на объем хранимых данных. "1С:Архив" сопровождается методологической поддержкой в виде организационных документов по хранению, входящих в состав "Комплекта нормативных документов" к "Методике управления документами и совместной работой", разработанной специалистами фирмы "1С". Использование "1С:Архива" позволяет организовать единое хранилище всех бумажных и электронных документов из разных информационных систем, вести архивный учет в соответствии с требованиями Росархива и снизить нагрузку на учетные системы. Продукт подходит для малых, средних, крупных предприятий и учреждений любых отраслей.

90000 руб.

24.10.2022    4859    4    1    

4

SALE! 25%

УТ 11, КА 2, ERP 2: Настраиваемые под каждую организацию печать и подпись ответственных лиц в печатных формах (ТОРГ-12, Счёт-фактура, УПД, УКД, Заказ клиента, Акт сверки, М-15 и др.)

Печатные формы Взаиморасчеты Оптовая торговля Производство готовой продукции (работ, услуг) Акт сверки Оперативный учет Управляемые формы 1С:Управление торговлей 11 Россия Бухгалтерский учет Управленческий учет Платные (руб)

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

12000 9000 руб.

13.03.2018    56444    179    76    

112
Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. antonio_i 80 18.03.19 17:53 Сейчас в теме
Здравствуйте.
Правильно ли я понимаю, что штамп позиционируется только при использовании шаблона файла, а в случае, если файл будет загружен не по шаблону, а произвольный, то установка штампа не произойдёт?
И вопросец. А пробовали добавлять штамп в xml в нижней части страницы, чтобы просто отдельной строкой или таблицей?
2. soulner 359 18.03.19 23:37 Сейчас в теме
Доброй ночи! Штамп ЭЦП впечатывается вместо текстовой метки "Sign1" (или 2, 3 и т.д.). Эта метка может быть где угодно и её удобно использовать в шаблоне, но совершенно не обязательно.
Обработка меток происходит в 2 этапа:
1. сначала определяется количество меток в тексте шаблона
код подсчёта количества меток

2. потом xml-файл пересоздаётся с заменой этих меток на код соответствующего по номеру штампа.
код замены меток на штампы

Второго вопроса я не понял. Что имеется ввиду под нижней частью таблицы? Нижний колонтитул? Если да, то штамп туда поставить можно, а вывести поля формы для автозаполнения нет.
3. antonio_i 80 19.03.19 07:11 Сейчас в теме
(2)То есть к первому вопросу. Если нет меток то штамп не будет вставлен, т.е. в произвольном документе, который загрузит пользователь ничего не изменится, если его попытаться подписать и впечатать штампы.
2. Во втором вопросе я имел в виду:
А почему бы не добавлять абзацы(строки) с подписями и штампами прямо в нижней части документа без использования позиционирования? Я предположил, что, возможно, вы это пробовали сделать, может быть столкнулись с трудностями.

Дело в том, что мне всю вставку штампа нужно обработать на сервере, т.к. клиентская машина может быть не-windows.
В добавок, шаблон документа не подходит, т.к. неизвестно заранее количество подписей, и часто сам документ пользователь может добавить не по шаблону.
Плюс ко всему этому есть желание подписывать именно уже визуализированный документ в pdf, чтобы отправлять подписанный, а не "визуализацию" подписанного файла. Думаю, подписывать оба файла будет правильнее. И уже после вставки штампика.
4. antonio_i 80 19.03.19 08:53 Сейчас в теме
(2) Словил ошибку:

{ОбщийМодуль.ПЛ_ВизуализацияЭЦПСервер.Модуль(42)}: Поле объекта не обнаружено (SN)
?(Сертификат.Субъект.Свойство("O"), Сертификат.Субъект.SN + " " + Сертификат.Субъект.GN, Сертификат.Субъект.CN)));


У себя поправил на:
...Сертификат.Субъект.Свойство("SN ")...

И ещё:
{ОбщийМодуль.ПЛ_ВизуализацияЭЦП_Клиент.Модуль(215)}: Ошибка при вызове метода контекста (Close)
МСВорд.Documents.Close();
по причине:
Произошла исключительная ситуация (Microsoft Word): Метод или свойство недоступны, поскольку эту команду нельзя использовать в режиме чтения.
5. soulner 359 19.03.19 09:07 Сейчас в теме
1. Там в меню 2 команды: "Визуализация ЭЦП" и "Создать файл визуализации". По команде "Визуализация ЭЦП" метки не ищутся и выводится штамп прямо сверху документа, чтобы его можно было позиционировать руками куда надо (предварительно запрашиваются координаты). А по команде "Создать файл визуализации" ищутся метки и вместо них вставляются штампы. Если метки не найдены, то файл визуализации не формируется и выводится предупреждение.
2. Отвечу цитатой п.п. "а" п. 5.23 ГОСТ Р 7.0.97-2016: "место размещения отметки об электронной подписи должны соответствовать месту размещения собственноручной подписи в аналогичном документе на бумажном носителе;". Однако многим на это начхать. В версии 1С БГУ 1.0, например, информация об ЭЦП выводится над документом, полученным по ЭДО. И ничего страшного, мы публикуем такие документы на портале госзакупок и пока никто ничего не сказал. Несоответствие ГОСТу не делает документ юридически менее значимым.
3. По этому вопросу ничего не скажу. Выводить подписи снизу не по ГОСТу, но при формировании на сервере без меток непонятно как распределить штампы. ХЗ, короче.
Подписывать визуализированный файл идеологически неверно. По закону № 63-ФЗ "Об ЭЦП" есть определение: электронная подпись - информация в электронной форме, которая присоединена к другой информации в электронной форме (подписываемой информации) или иным образом связана с такой информацией и которая используется для определения лица, подписывающего информацию; Соответственно ЭЦП может быть прикреплённая и откреплённая (отдельный файл). Если Вы хотите отправлять юридически значимый файл контрагенту, то нужно его отправлять вместе с файлом ЭЦП, а на принимающей стороне должна производиться проверка корректности ЭЦП.
В настоящее время складывается практика отправки сканов документов со штампами ЭЦП (визуализированных документов), что неверно с точки зрения закона, но, как сказал наш юрист, "допустимо в сложившейся практике документооборота".
7. antonio_i 80 19.03.19 09:23 Сейчас в теме
(5)
Подписывать визуализированный файл идеологически неверно.

Это потому что подписывание идёт вслед за установкой штампа?
Но получается, что установка штампа после подписи сломает подпись.


(5)
Выводить подписи снизу не по ГОСТу

А почему не по ГОСТу? Ведь даже в примере подпись (штампик) снизу.
Ну может я плохо объясняю.
Я имел в виду всю строку, где указан подписант, его должность и сам штамп формировать полностью.
9. antonio_i 80 19.03.19 09:29 Сейчас в теме
(5) И ещё
Правильно ли я понимаю, что на не-windows системах работать не будет?
6. soulner 359 19.03.19 09:13 Сейчас в теме
По поводу имён свойств не подскажу, всегда считал, что есть общепринятые свойства сертификата (O, CN, SN и т.д.), если у вас по-другому, то это странно.
Команду МСВорд.Documents.Close(); оберните в конструкцию Попытка ... Исключение ... У меня на клиентских машинах без данной команды оставались висеть процессы MS Word.
8. antonio_i 80 19.03.19 09:25 Сейчас в теме
(6) Да в итоге когда закомментировал уже ошибка совместного доступа.
{ОбщийМодуль.ПЛ_ВизуализацияЭЦП_Клиент.Модуль(181)}: Ошибка при вызове метода контекста (ПереместитьФайл)
	ПереместитьФайл(НовыйФайлZip, НовыйПутьКФайлу);
по причине:
Ошибка переименования файлов
по причине:
Ошибка совместного доступа к файлу 'C:\temp\!!!!!!!Исх шаблон.docx'. 32(0x00000020): Процесс не может получить доступ к файлу, так как этот файл занят другим процессом. 


Надо будет добавить проверку на существование одноимённого файла.
11. antonio_i 80 19.03.19 14:07 Сейчас в теме
(6)
Оказалось, что документ открывался только на чтение в строке
WordДокумент = МСВорд.Documents.Open(НовыйПутьКФайлу,, -1);

Исправил на
WordДокумент = МСВорд.Documents.Open(НовыйПутьКФайлу,, Ложь);

и ошибка пропала.
Возможно разные версии office. Не понятно.

Ещё всё же, думаю, стоит имена файлов во временном хранилище формировать с помощью
ПолучитьИмяВременногоФайла ()
Ну или уникальный идентификатор приписывать...
и потом в конце прикрепления удалять файлы из временного хранилища. (в процессе их можно накапливать в массиве, к примеру)
10. soulner 359 19.03.19 10:24 Сейчас в теме
1. Идеологически неверно потому, что визуализируется уже существующая подпись (так следует из ГОСТа), а сама подпись - это информация. И, конечно, вставка подписи в файл сделает подпись недействительной (1C:Документооборот не даст сохранить файл).
2. В примере штампик внизу, но он находится между полей формы, которые заполняются при заполнении шаблона: слева должность подписанта, справа его ФИО, так, что строго выполняется п.п. "а" п. 5.23 ГОСТа.
3. Для не-Windows систем есть следующие выходы:
а) если не-Windows клиент, а сервер Windows, то можно переписать алгоритм для формирования визуализации на сервере, но тогда только по шаблону с метками;
б) если Windows нет совсем, то можно адаптировать работу алгоритма к LibreOffice (тут коллеге удалось, можно связаться и уточнить), но тогда нужно решать вопрос с созданием PDF и либо искать соответствующую команду COM-сервера, либо пытаться реализовать печать на виртуальном принтере PDF (примеры для 1С и windows я находил в сети).
4.Ошибка МСВорд.Documents.Close(); очень странная. Я тестировал работу алгоритма на MS Word 2007 и 2016 и всё было нормально. Может переменная МСВорд.Documents как-то переинициализируется. Не знаю что и предположить.
12. kaljro 21.03.19 13:22 Сейчас в теме
"Произошла исключительная ситуация (Microsoft Word): Метод или свойство недоступны, поскольку эту команду нельзя использовать в режиме чтения." - Такая же ошибкаи у меня. Ворд подвешивается, и если еще раз прожать, то уже "Процесс не может получить доступ к файлу" естественно.
13. soulner 359 21.03.19 14:15 Сейчас в теме
(12) Очень жаль, что вы не указываете хотя бы номер строки, в которой произошла ошибка. А в телепатии я пока слаб.
Очень похоже на ошибку, описанную с посте № 4, уважаемого antonio_i, он нашёл решение и описал его в посте № 11. Лично я с такой ошибкой не сталкивался.
14. antonio_i 80 21.03.19 15:14 Сейчас в теме
(12)
Посмотрите мой ответ № 11
Там у меня была такая же ошибка, я исправил.
15. Монту 31.05.19 16:12 Сейчас в теме
Неплохая реализация, никаких проблем как у antonio_i не было. Жаль что юридическая составляющая этого всего никакая... т.к. док не подписан, а просто картинка.

А идей по поводу добавления визуализации в pdf нету?
16. soulner 359 31.05.19 16:38 Сейчас в теме
(15) Позвольте не согласиться. Юридическая составляющая нормальная. Документ подписан в соответствии с ФЗ № 63 и визуализирован согласно ГОСТу.
Визуализация в pdf делается с помощью библиотеки pdftk. Там можно слепить 2 pdf-документа. Верхний содержит визуализацию и прозрачный фон, а нижний - сам документ. Тут сложными являются вопросы позиционирования штампа и согласования размеров изображений, на основании которых сделаны файлы pdf.
ilya-golev; +1 Ответить
47. ilya-golev 04.02.21 15:31 Сейчас в теме
(16)По юридической составляющей - визуализация согласно ГОСТа требуется для документа, который будет просмотрен на экране или распечатан на принтере (бумаге). Это требование формально соблюдено, Но.... кода вы попытаетесь открыть такой файл в ПО, предназначено для проверки подписи, то увидите два штампа подписи - один Ваш, интегрированный в сам файл и второй, сгенерированный этим ПО на основании приложенного к документу сертификата, а это уже юридически неверно - добавленный Вами штамп (в виде картинки) никак не относится к ЭЦП, это просто картинка.
48. soulner 359 04.02.21 21:01 Сейчас в теме
(47) Не соглашусь. Какой "такой файл"? У нас есть 3 файла:
1. непосредственно сам документ (например, письмо или договор);
2. откреплённая электронная подпись в формате PKCS#7;
3. визуализация в формате Adobe PDF.
Программа проверки ЭП возьмёт файл 1 и 2, проверит, а потом создаст новую визуализацию.
49. ilya-golev 05.02.21 07:34 Сейчас в теме
(48)Какой из файлов вы отправите получателю в качестве эл.документа? 1 и 2. Тогда зачем делать 3, если визуализировать он будет 1+2? Но если 3, то он никак не относится к ЭД, т.к не подписан ЭЦП.
17. it@medipal-onko.ru 30.07.19 14:43 Сейчас в теме
1. Если файл подписан несколькими подписями (Петров, Сидоров), то выводится 2 подписи Петрова.
2. Как заставить подпись позиционироваться внизу документа?
18. soulner 359 30.07.19 16:45 Сейчас в теме
(17) 1. Я не тестировал на предмет вставки нескольких штампов (у меня только одна ЭП). Разные варианты штампов хранятся в массиве ГотовыеШтампыЭП. Надо посмотреть отладчиком что там. В новой версии ДО, разработчики суют все подписи в один штамп, может так и надо.
2. Штамп может вставляться вместо метки или по координатам. Подберите координаты, чтобы подпись вставала куда надо. Координаты указываются в форме настройки положения штрихода (https://infostart.ru/public/931674/)
it@medipal-onko.ru; +1 Ответить
19. it@medipal-onko.ru 05.08.19 10:06 Сейчас в теме
(18) 1. У Вас ошибка, Вы не обнуляете Шаблон после замены, поэтому при наличии нескольких подписей всегда печатается первая заполненная. Нужно добавить в конец цикла получение шаблона
ШаблонДляВставкиШтампа = ВизуализацияЭЦПСервер.ПолучитьТекстДляВставки();

Тогда все красиво

2. Подскажите, как получить координаты подвала последней страницы в файле?
20. izidakg 170 06.12.19 08:21 Сейчас в теме
а если нужно в обычную печатную форму сделать вывод и потом сохранить в PDF? есть варианты?
через Word все плывет, а вывод, т.е. дорисовка чего-либо в PDF требует дополнительных программ, что тоже стабильности и простоты не добавляет
21. soulner 359 08.12.19 12:37 Сейчас в теме
(20) Добрый день. Не по теме вопрос. В данной публикации рассматривается подпись и визуализация произвольного документа (формат MS Word 2007+). В частности исходящего письма. А как у вас реализована генерация писем через обычную печатную форму? Поделитесь, интересно.
Если у Вас печатная форма, то всё значительно проще. Штамп с параметрами для подписи можно задизайнить прямо в макете и потом вжух:
ТабДок.Записать(ИмяФайла,ТипФайлаТабличногоДокумента.PDF);

и получить pdf-файл.
22. izidakg 170 08.12.19 14:01 Сейчас в теме
(21) еще не доделал, по сути таже зд, только другие детали
сохранение в виде Word, Excel, PDF роли не играет. Ваш вариант заточен на письма, мне нужно шире. Нужно сохранить печатную форму, наложить подпись ЭЦП, возможно подписать ЭЦП
23. ignor 235 23.12.19 12:38 Сейчас в теме
Поправьте программный код с учётом моих доработок по DOC

	Если НЕ Результат.ФайлПолучен Тогда
		Сообщить("Файл не получен на клиент, работа не возможна");
		Возврат;
	КонецЕсли;
	
	
	ВременныйФайлZip = ПолучитьИмяВременногоФайла("zip");
	НовыйФайл = Новый Файл(Результат.ПолноеИмяФайла);

	Если НРег(Результат.ДанныеФайла.Расширение)=НРег("doc") Тогда
		ВременныйФайлDocx = РабочийКаталогДанныхПользователя()+НовыйФайл.ИмяБезРасширения+".docx";
		НовыйФайл = "";
		НовыйПутьКФайлу = ВременныйФайлDocx;
		Попытка
			МСВорд = Новый COMОбъект("Word.Application");
		Исключение
		    Сообщить("Ошибка при попытке создать объект ""MS Word""!" + Символы.ПС + 
		             "Возможно приложение ""MS Word"" не установлено или установлено неправильно.", СтатусСообщения.Внимание);
		    Возврат;
		КонецПопытки;
		WordДокумент = МСВорд.Documents.Open(Результат.ПолноеИмяФайла);
		WordДокумент .SaveAs(ВременныйФайлDocx,16);
	    
		МСВорд.Application.Quit();
		НовыйФайл = Новый Файл(ВременныйФайлDocx);
		КопироватьФайл(ВременныйФайлDocx, ВременныйФайлZip);
		
	Иначе
		КопироватьФайл(Результат.ПолноеИмяФайла, ВременныйФайлZip);
	КонецЕсли;
	
	
	// копируем файл во временный каталог
	
	// распаковываем архив
Показать
24. soulner 359 23.12.19 15:52 Сейчас в теме
(23) Респект, коллега! Я не брался за doc, т.к. было лень изучать формат файла, а до вашего решения не додумался. Обязательно внесу изменения.
25. ignor 235 23.12.19 17:21 Сейчас в теме
Пардон ещё чуть-чуть кода который я у себя добавил. На предмет проверки версии офиса

		ВременныйФайлDocx = РабочийКаталогДанныхПользователя()+НовыйФайл.ИмяБезРасширения+".docx";
		НовыйФайл = "";
		НовыйПутьКФайлу = ВременныйФайлDocx;
		Попытка
			МСВорд = Новый COMОбъект("Word.Application");
		Исключение
		    Сообщить("Ошибка при попытке создать объект ""MS Word""!" + Символы.ПС + 
		             "Возможно приложение ""MS Word"" не установлено или установлено неправильно.", СтатусСообщения.Внимание);
		    Возврат;
		КонецПопытки;
		ver=МСВорд.Version;
		Если Число(Лев(ver,Найти(ver,".")-1))<12 Тогда
			Сообщить("Требуется версия не ниже Winword 2007!");
			Возврат;
		КонецЕсли;
		
		WordДокумент = МСВорд.Documents.Open(Результат.ПолноеИмяФайла);
		WordДокумент .SaveAs(ВременныйФайлDocx,16);
Показать
26. ignor 235 24.12.19 02:02 Сейчас в теме
Я в том смысле что я проверяю версию офиса. Если мы можем ставить штамп только в docx то такая проверка особо не нужна. Достаточно откроется файл или не откроется, а если мы ставим ещё штамп и в docx то лучше всё-таки проверить номер версии офиса. Нагуглено что для WinWord 2007 номер версии 12.
27. ignor 235 24.12.19 08:33 Сейчас в теме
и ещё совет по моей практике....
в макете поменяйте конструкцию color2="fill lighten(0)"
на opacity="0" color2="fill lighten(0)"


opacity="0" даёт прозрачность заливки, а то под штампом текст у Вас не проглядывается

хорошо бы коллеги ещё свой вариант под libre office
28. soulner 359 26.12.19 13:29 Сейчас в теме
(27) Благодарю за интерес к моей публикации, но почему бы не перейти на визуализацию ЭП описанную тут https://infostart.ru/public/1090369/. Она и красивей и современней. Код из текущей публикации, в случае его модификации, мне негде проверить, а выкладывать код с потенциальными багами очень не хочется. Ваши замечания будут внесены последнюю версию визуализатора ЭП.
29. soulner 359 14.01.20 20:59 Сейчас в теме
(27) Натолкнулся на статью https://habr.com/ru/post/320268/ Понятно, что COM-объектов быть не может под LibreOffice, но не важно. Можно из MsWord сконвертить в PDF с помощью консольной команды. У меня скоро выйдет новая публикация про визуализацию https://infostart.ru/public/1179881/, там можно с помощью небольшой доработки сделать поддержку LibreOffice.
30. Jasam 20.05.20 19:48 Сейчас в теме
Планируется ли встроить что-то подобное в стандартную конфигурацию 1С-ДО ? С учетом "удаленки" и "самоизоляции" - это стало ОЧЕНЬ АКТУАЛЬНО!
31. soulner 359 21.05.20 17:35 Сейчас в теме
(30) Сделали в версии 2.1.13.28, но не красиво на мой взгляд. Посмотрите тут https://infostart.ru/public/1179881/
32. user1263334 22.05.20 06:18 Сейчас в теме
Можно ли кроме визуализации ЭП скопировать саму ЭП из docx файла в pdf? Т.е., в карточке документа, при подписании ЭП docx файла появляется отметка, что он подписан ЭП. Возможно ли такое сделать и куда смотреть?
33. soulner 359 22.05.20 08:38 Сейчас в теме
(32) Нет, так нельзя. Файл MS Word подписан ЭП и по этому у него отметка, а визуализация не подписана и у неё отметки быть не может. Сама ЭП это файл, вы можете его выгрузить и посмотреть.
34. user1263334 03.06.20 20:01 Сейчас в теме
Доброго времени суток! А данный механизм подойдет для реализации вставки штампа регистрации+штамп ЭП. Т.е. должны вставляться два штампа в PDF после подписания электронной подписью?
35. soulner 359 04.06.20 13:30 Сейчас в теме
(34) Добрый день. Это не просто. Я дам ссылки на мысли по этому поводу. Свои и чужие.
1. вот публикация на эту тему, недавно обсуждалась в телеграмм-канале https://infostart.ru/public/830374/
2. это мой алгоритм http://forum.infostart.ru/forum24/topic233386/message2368407/#message2368407
3. вот коллега интересную идею предложил http://forum.infostart.ru/forum24/topic233386/message2368672/#message2368672

Сама по себе задача не сложная, только один вопрос не знаю, как решить. Слой изображения у входного pdf нужно привести к определённому разрешению. А дальше дело техники.
36. user1263334 04.06.20 14:00 Сейчас в теме
(35) Спасибо за подсказки. Будем думать дальше в этом направлении.
37. user1263334 09.06.20 13:50 Сейчас в теме
Доброго времени суток! Гипотетически, если нужно сохранить штамп подписи в doc файл без создания нового, куда смотреть? В пример вставки штампа?
38. user1263334 09.06.20 13:54 Сейчас в теме
Получилось снимать и возвращать электронную подпись на файл в момент регистрации (могу позже публикацию сделать). Хотелось бы, чтобы вставлялся в этот момент штамп ЭП.
39. soulner 359 09.06.20 14:22 Сейчас в теме
(38) Извините, я ваш первый вопрос не понял. В данной версии, штамп это фигура с шаблоном текста внутри. В новых версиях ДО, штамп - это изображение (https://infostart.ru/public/1179881/). В новых версиях ДО, вставка ЭП работает примерно так, как вы хотите (не при подписи, а при первом просмотре).
40. user1263334 09.06.20 19:19 Сейчас в теме
(39)Версия Документооборот 8 КОРП, редакция 2.1 (2.1.12.2). Нужно сохранять штамп ЭЦП в первоначальный docx файл.
41. soulner 359 09.06.20 20:13 Сейчас в теме
(40) Тогда перестанет быть валидной ЭП. Так нельзя. Да и программа не даёт сохранить файл с признаком, что он подписан ЭП
42. user1263334 09.06.20 21:10 Сейчас в теме
(41)В данный момент при регистрации ЭП снимается, затем ставиться обратно после автозаполнения. Нужно, чтобы Штам ЭП отображался в файле doxc с ЭП. Ниже код обработчика.
    // автозаполнение файлов
    
    Документ = Событие.Источник;

	ПодчиненныеФайлы = РаботаСФайламиВызовСервера.ПолучитьВсеПодчиненныеФайлы(Документ, Ложь);
	
	Для Каждого Файл Из ПодчиненныеФайлы Цикл       
        Если (Файл.ТекущаяВерсияРасширение = "docx" ИЛИ Файл.ТекущаяВерсияРасширение = "doc") 
             И НЕ Файл.ПометкаУдаления 
             И НЕ Файл.ШаблонОснованиеДляСоздания = Справочники.Файлы.ПустаяСсылка()
             И Файл.Редактирует = Справочники.Пользователи.ПустаяСсылка() Тогда
 
           Если ПолучитьФункциональнуюОпцию("ИспользоватьЭлектронныеПодписи") И Файл.ПодписанЭП Тогда

			  СуществующаяВерсия = Файл.ТекущаяВерсия;
			  ФайлОбъект = Файл.ПолучитьОбъект();
			  ФайлОбъект.ПодписанЭП = Ложь;
			  ФайлОбъект.Записать();
                ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, Файл, Истина);
			  ФайлОбъект = Файл.ПолучитьОбъект();
			  ФайлОбъект.ПодписанЭП = Истина;
			  ФайлОбъект.Записать();
			  НоваяВерсия = Файл.ТекущаяВерсия;

                УстановитьПривилегированныйРежим(Истина);
				ТекВерсияФайла = Файл.ТекущаяВерсия;
            	ТекущаяВерсия = ТекВерсияФайла.ПолучитьОбъект();
            	ТекущаяВерсия.ПодписанЭП = Ложь;
            	ТекущаяВерсия.Автор = Файл.Автор;
            	ТекущаяВерсия.ПодписанЭП = Истина;
            	ТекущаяВерсия.Записать();

			НаборЗаписей = РегистрыСведений.ЭлектронныеПодписи.СоздатьНаборЗаписей();
			НаборЗаписей.Отбор.Объект.Установить(СуществующаяВерсия);
			НаборЗаписей.Прочитать();
			Для Каждого Запись Из НаборЗаписей Цикл
				НоваяЗапись = РегистрыСведений.ЭлектронныеПодписи.СоздатьМенеджерЗаписи();
				НоваяЗапись.ДатаПодписи = Запись.ДатаПодписи;
				НоваяЗапись.Объект = НоваяВерсия;
				НоваяЗапись.УстановившийПодпись = Запись.УстановившийПодпись;
				НоваяЗапись.Версия = Запись.Версия;
				НоваяЗапись.ДатаПроверкиПодписи = Запись.ДатаПроверкиПодписи;
				НоваяЗапись.Комментарий = Запись.Комментарий;
				НоваяЗапись.КомуВыданСертификат = Запись.КомуВыданСертификат;
				НоваяЗапись.Отпечаток = Запись.Отпечаток;
				НоваяЗапись.Подпись = Запись.Подпись;
				НоваяЗапись.ПодписьВерна = Запись.ПодписьВерна;
				НоваяЗапись.Сертификат = Запись.Сертификат;
				НоваяЗапись.СертификатДействителен = Запись.СертификатДействителен;
				НоваяЗапись.ТекстОшибкиПроверкиПодписи = Запись.ТекстОшибкиПроверкиПодписи;
				НоваяЗапись.ТекстОшибкиПроверкиСертификата = Запись.ТекстОшибкиПроверкиСертификата;
				НоваяЗапись.Записать();
			КонецЦикла;

              УстановитьПривилегированныйРежим(Ложь);

           Иначе
                ДанныеВыполнения = АвтозаполнениеШаблоновФайловКлиентСервер.ЗаполнитьПоляФайлаДаннымиВладельца(Истина, Файл, Истина);
            	ТекущаяВерсия = Файл.ТекущаяВерсия.ПолучитьОбъект();
            	ТекущаяВерсия.Автор = Файл.Автор;
            	ТекущаяВерсия.Записать();
           КонецЕсли;

        КонецЕсли;
    КонецЦикла;
Показать
43. user1263334 10.06.20 07:22 Сейчас в теме
(41) Для получения данных сертификата ЭП в шаблон word можно отталкиваться от этой автоподстановки?
ПодписалДолжность СведенияПользователей = РегистрыСведений.СведенияОПользователяхДокументооборот.Получить(Новый Структура("Пользователь", Файл.ВладелецФайла.Подписал));
РезультатОбработки = СведенияПользователей.Должность;
44. user1263334 10.06.20 08:21 Сейчас в теме
Пример
Прикрепленные файлы:
screenshotf6e.pdf
45. soulner 359 11.06.20 09:44 Сейчас в теме
(44) Очень может быть, что код рабочий, но я с вами не согласен по одной очень принципиальной позиции. Электронная подпись письма формируется на основе результата хэш-функции, на вход которой подаются двоичные данные документа. Т.е. любое изменение документа приведёт к изменению его хэша и соответственно к недействительности подписи. Это одна из задач подписи (п. 3 ст. 5 63-ФЗ). Т.е. если вы уже создали документ (по шаблону или нет, не важно) и подписали его, то вносить изменения в него нельзя. И то, что вы снимаете признак, запрещающий запись, ничего не меняет.
Также, на мой взгляд некорректно самостоятельно менять регистр, если для этого есть специализированный функционал. Например процедура "ДобавитьПодпись" из общего модуля "ЭлектроннаяПодпись". Поверьте, там не только изменение регистра. Для примера могу рекомендовать моё расширение по приёму письма с ЭЦП (https://infostart.ru/public/1231374/). Я много сил потратил, чтобы разобраться в этом механизме.
46. пользователь 21.09.20 14:42
Сообщение было скрыто модератором.
...
Оставьте свое сообщение