0. soulner 141 14.01.20 20:12 Сейчас в теме

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

Начиная с версии 1С:Документооборот 2.1.13.28 появилась возможность визуализации документов, подписанных электронной подписью по ГОСТу Р 7.0.97-2016. Хочу рассмотреть реализацию этого механизма и предложить готовый вариант его использования.

Перейти к публикации

Комментарии
Избранное Подписка Сортировка: Древо развёрнутое
Свернуть все
1. Steelvan 15.01.20 18:48 Сейчас в теме
"... но учитывая российские реалии это можно доказывать долго. "


Фу. Бытие определяет сознание и мировосприятие. По таким вставкам про автора все ясно.
2. soulner 141 15.01.20 22:26 Сейчас в теме
(1) Вам, просто повезло. Пессимист часто это хорошо информированный оптимист.
raystlin; narutouzumaki_13; +2 Ответить
3. sikvel2012 94 16.01.20 09:54 Сейчас в теме
Если честно я не могу понять сокральный смысл данных визуализаций. Есть присоединенная ЭП. Она и так визуализированна.
Есть отсоединенная, проверяется отчётом, и проверять ее должно лицо получившее документ. Мы такие визуализированна документы отправляем назад контрагентам и требуем от них исходный файл + подпись (sig).
4. soulner 141 16.01.20 12:29 Сейчас в теме
(3) Вы категорически правы. Смысл данных визуализаций имеется только в том случае, если нет возможности отправить документ и подпись и принять от него документ с подписью, проверить её и сформировать подписанный входящий документ. Но 1С:Документооборот такой возможности не предоставляет при использовании внутренней почты (поправьте меня если это не так). У меня в планах такую возможность реализовать, но времени совсем нет. И вот тогда визуализация будет только вспомогательным механизмом.
5. susumanin 16.01.20 13:32 Сейчас в теме
Объясните такой момент, если не сложно.
Вот подняли мы Microsoft Enhanced CryptoProvide, выпустили сертификат, настроили 1С Документооборот.
Подписали под юзером какой-нибудь документв в 1С.
Правильно я понимаю: теперь из 1С можно выгрузить саму подпись и сам вордовский файл. При этом в самом вордовском файле нет никакой инфы (кроме штампа) что он подписан, т.е. его можно поменять.
Вопрос: можно ли как-то првоерить что файл ворд был изменен имея в наиличие ps7 файл выгруженный из 1С?
Спасибо.
6. soulner 141 16.01.20 21:02 Сейчас в теме
(5) Сейчас опишу, как с выгрузкой подписанных файлов дело обстоит:
1. при первом просмотре подписанного файла 1С:Документооборот создаёт версию, в которую помещает штамп для визуализации ЭП, файл при этом меняется и уже не соответствует подписи;
2. при выгрузке вместе с ЭП (это отдельная команда в меню) выгружается оригинальный файл и подпись (или много) к нему;
3. откреплённая подпись, выгружаемая из программы, соответствует стандарту PKCS#7 и может быть проверена где угодно (единственный момент, расширение лучше поменять на sig, это привычней), подпись, выданную авторизованным УЦ можно проверить, например, тут gosuslugi.ru/pgu/eds;
4. Вы можете взять документ, загрузить в 1С, потом отдельно загрузить подпись и если на рабочей станции (или на сервере) настроена цепочка для проверки сертификата, то данная подпись будет признана действительной, если документ не был изменён.

Я по этому и предлагаю слать pdf-с визуализацией, т.к. документ MS Word могут отредактировать, а средства для проверки подлинности документа остаются только на нашей стороне. 1С не умеет отправлять файл и подпись при использовании механизма внутренней почты. Вроде как умеет через лёгкую. Но у меня не получилось на одном рабочем месте запустить и такую и такую.

Думаю, что сами 1С эту функцию не внедрят т.к. она частично отнимет хлеб у сервиса 1С:ЭДО в части пересылки произвольных документов.
susumanin; +1 Ответить
7. susumanin 17.01.20 12:51 Сейчас в теме
8. ignor 222 19.01.20 15:14 Сейчас в теме
Посоветуйте что делать в случае когда подписантов может быть у нас несколько и когда требуется поставить штампики на последнюю страницу. У Вас в коде doc/docx как я понимаю преобразуется в pdf,а уже на него ставится штамп и накладывается защита? А не подскжете ли как быть в случае если в документообороте хранится уже файл pdf?
10. soulner 141 19.01.20 17:26 Сейчас в теме
(8) Разработчики 1С с своём решении отклонились от требований п.п. "а" п. 5.23 ГОСТа и сделали вывод всех печатей в один штамп. В данной публикации я не меняю алгоритм формирования штампа, только дизайн. Как будут выглядеть штамп с несколькими подписями, я не знаю т.к. нет возможности проверить.
Штамп ставится непосредственно в документ MS Word, и уже потом он преобразуется в PDF и накладывается защита.
Место, куда ставится штамп, определяется или настройками положения ЭП (Общие настройки - настройки электронной подписи - вкладка Штамп ЭП) или наличием в документе текстовой метки "ВставкаЭП" (эта метка может быть на любой странице)
9. ignor 222 19.01.20 15:26 Сейчас в теме
Кроме того у Вас указано

Тут сразу 2 нюанса хочу отметить:
ImageMagick нужен свежий, который запускается не командой «convert.exe», а «magick.exe convert», причём ошибку о несоответствии версий вы получить только если в персональных настройках работы с файлами вы не меняли имя программы по умолчанию, оставив «convert.exe»;



а в коде 1с стоит convert
11. soulner 141 19.01.20 17:34 Сейчас в теме
(9) Нет, в коде стоит
ПолныйПуть = Константы.ПутьКПрограммеКонвертацииPDF.Получить();
потом идёт проверка, что написано в этом полном пути
Если ПолныйПуть = "convert.exe" Тогда
    УдалитьВременныеФайлы(ФайлыКУдалению);
    ВызватьИсключение НСтр("ru = 'В настройках программы указан полный путь к устаревшей версии ImageMagick (convert.exe).'");
КонецЕсли;

В переменной ПолныйПуть должен быть путь к файлу magick.exe, потом к нему добавляется команда convert и параметры -pointsize %1 -draw ""%2"" %3 %4.
Это делается в 2-х процедурах общего модуля "РаботаСКартинками": НаложитьСтроки - параметры и ЗапуститьImageMagick - непосредственно запуск.
12. ignor 222 20.01.20 09:35 Сейчас в теме
Наверное надо будет как-то совместить Ваше решение с указанным https://infostart.ru/public/830374/
13. soulner 141 20.01.20 14:44 Сейчас в теме
(12) Я пробовал, механизм достаточно прост, но в общем случае нереализуем.
Причина в том, что необходимо указать координаты штампа в документе. Документ PDF имеет слой с изображением, но разрешение его заранее не известно и координаты штампа и его масштаб посчитать не получается, соответственно простой путь, а именно подготовить с помощью ImageMagic pdf-файл со штампом и прозрачным фоном, а потом с помощью утилиты pdftk.exe с ключом stamp их слепить вместе не катит.
Есть второй путь:
1. нарезаем файл pdf полистно с использованием утилиты pdftk и команды burst;
2. все листы с помощью ImageMagik переводим в формат jpeg (тут появляется возможность прочитать их свойства и понять размеры);
3. с помощью ImageMagik формируем печать и масштабируем её под размер листа;
4. с помощью ImageMagik ставим печать куда надо (тут основной вопрос);
5. с помощью ImageMagik из файлов jpeg делаем pdf.
Я пометил основную проблему данного алгоритма. Куда ставить штамп? Когда используется текстовый редактор, то есть текстовая метка, а какая метка может быть на картинке?
14. ignor 222 20.01.20 22:05 Сейчас в теме
Я пробовал решать проблему через для pdf через Adobe Acrobat DC по OLE (благо его можно арендовать как и офис 365), Но моё владение английским для целей чтения технической документации на данный момент оставляет желать лучшего:
У нас на предприятии есть два пожелания к вставке штампа в исторически хранящийся PDF
По положению штампов в документе: Вставлять штамп/штампы вниз на последнюю страницу. Насколько я понимаю в нашей ситуации речь идёт об отсканированных подписанных договорах, то есть это всегда А4. Отсюда можно взять некий стандартный размер штампа за основу и раскинуть их скажем на генерируемую PDF страницу с неким шагом снизу вверх. Я не думаю что ЭЦП может быть столько что мы перекроем лист формата А4
По прозрачности штампа/штампов: Крайне желательно чтобы сквозь штампы проглядывался бы оригинальный документ.
По эксплуатации: Хотелось бы, но данное требование не обязательное, чтобы пользователь мог сам двигать в некоей программе просмотра (отсюда и интерес к Adobe Acrobat DC) штампы располагая их как ему удобнее.
Что единственное что у меня получилось в PDF так это адаптировать код написанный в SDK на VBA к 1С
gApp = Новый COMОбъект("AcroExch.App");
gApp.CloseAllDocs();
gPDDoc = Новый COMОбъект("AcroExch.PDDoc");
Если gPDDoc.Open(PDFIN) Тогда

jso = gPDDoc.GetJSObject();

Page = gPDDoc.AcquirePage(0);
pageRect = Page.GetSize(); //' now use pageRect.x and/or pageRect.y for stamp placement

stampRect = Новый COMSafeArray("VT_I4", 4);
stampRect.SetValue(0,100); //' taking a shortcut here
stampRect.SetValue(1,100);
stampRect.SetValue(2,200);
stampRect.SetValue(3,200);

annot = jso.AddAnnot();

props = annot.getprops();
props.Type = "Stamp";
annot.setProps(props);

props = annot.getprops();
props.Page = 0;
props.rect = stampRect;
props.Author = "My Name";
props.contents = "My Contents";
props.AP = "Approved";// ' this would be your own AP string - "Approved" uses one of the standard stamps
annot.setProps(props);


КонецЕсли;
и это дало вставку их штампа с их предзашитой текстовкой
Прикрепленные файлы:
15. ignor 222 20.01.20 22:12 Сейчас в теме
Поначалу я выходной файл открывал в Adode Acrobat DC, но потом как то пытаясь заставить его открывать указанный документ на просмотр пользователю предварительно закрыв все ранее открытые поломал это функционал в своём коде. Мне бы по вашему описанию схемку бы и чертёж на предмет опсианного
"подготовить с помощью ImageMagic pdf-файл со штампом и прозрачным фоном, а потом с помощью утилиты pdftk.exe с ключом stamp их слепить вместе"
16. ignor 222 20.01.20 22:43 Сейчас в теме
В случае кстати А4 и последней страницы я могу создать пустой docx файл и раскидав по нему печати (по ситранице) сохранить его как pdf/ для целей объединения его с Основным документом с помощью команды pdftk Весь вопрос вот только как ему прозрачность приставить
17. soulner 141 21.01.20 18:17 Сейчас в теме
(16) Очень крутое решение, а главное изящное и без заморочек с ImageMagick!
Да, так можно.
1. Делаем документ MS Word или LibreOffice, размещаем штампы, как нам надо.
2. Перед листом со штампами делаем нужное количество пустых листов - это важно!
3. Сохраняем этот документ в формате PDF.
4. Команда выглядит так:
pdftk.exe ИМЯ_ВХОДНОГО_ФАЙЛА multistamp ИМЯ_ФАЙЛА_СО_ШТАМПАМИ output ИМЯ_ВЫХОДНОГО_ФАЙЛА

P.S.параметр stamp накладывает одностраничный pdf на каждую страницу входного документа, а нам надо один раз в нужное место, по этому используем multistamp.
18. ignor 222 22.01.20 15:31 Сейчас в теме
Можно кстати ещё ради универсальности в Adobe Reader перебирать страницы на входе и генерировать разделы пустые страницы с теми же размерами в Winword на выходе Часть функционала по OLE доступна и у Adobe Reader.

А ещё хотел Вас коллега спросить ан предмет видели ли Вы тут нижеследующую публикацию и что Вы по её поводу думаете если видели
https://infostart.ru/public/1171681/
19. Profenix 6 23.01.20 12:03 Сейчас в теме
А нельзя сбросить ссылку на ImageMagick?
я под винду не нахожу magick.exe convert
Прикрепленные файлы:
20. soulner 141 23.01.20 14:29 Сейчас в теме
(19) Вы всё правильно нашли. Convert - параметр консольного приложения magick. Примеров использования в сети масса, нужно забить в поиск фразу "imagemagick примеры". Часть примеров будет для Linux, но это не важно.
21. KRaSH13 28.01.20 17:41 Сейчас в теме
Уважаемый автор, не очень понимаю смысл всей этой "визуализации". По сути это картинка (файл), на которую вставлена еще одна картинка (штамп). Необходимо для понимания пользователем/контрагентом, что исходный файл (именно файл, а не этот образ со штампом) ранее был подписан ЭП. Никакой юридической силы не несет уж точно. Если нужно обменяться с контрагентом, то либо исходником+файлом подписи, либо уж вообще исходником без подписи и прочих красивых штампов.

В целом, спасибо за пояснения по работе с ImageMagic, полезно.
22. soulner 141 28.01.20 20:45 Сейчас в теме
(21) Уважаемый коллега! Смысл визуализации документа с ЭП описан в том, что электронный документ - это информация и ЭП - это информация, а если вам нужно исходящий документ зашить в дело, что вы будете делать? Это указано в ГОСТе. А вот пересылка визуализированных файлов - это другая песня. Я уже вверху писал, что это очень порочная практика, но пока иначе никак.
24. KRaSH13 29.01.20 00:45 Сейчас в теме
(22)
если вам нужно исходящий документ зашить в дело, что вы будете делать?

Наверное, надо доводить до функционального заказчика идею, что для документов, подписанных электронно и архив должен быть электронный. А уж если надо на бумагу, в дело и в железный шкаф на 50 лет - тогда будьте добры, возьмите ручку и поставьте подпись, а потом и в дело можно. Хотя букву закона в эту сторону изучать не приходилось, руководствуюсь только собственной логикой. У нас - электронный архив, pdf со штампами хранятся только для успокоения пользователей, что документ подписан и с ним все хорошо. А сами документы лежат рядом вместе с отпечатками.
25. soulner 141 29.01.20 14:14 Сейчас в теме
(24) Ну, давайте изучим букву закона.
Федеральный закон от 22.10.2004 N 125-ФЗ (ред. от 28.12.2017) "Об архивном деле в Российской Федерации" в ст. 3 говорит нам что такое архивный документ. Оказывается это материальный носитель с информацией. Отлично. Идём в ст. 22 и смотрим сколько лет нам нужно хранить материальные носители. Видим там цифры 20, 75 и даже 100 лет. Далее ищем материальные носители, которые могут гарантированно хранить информацию 100 лет. И что? Теоретически такие есть. Есть оптические накопители, которые вроде могут, есть сведения, что твердотельные накопители могут, если их не трогать. Но гарантию сохранности информации на государственном уровне никто не даёт.
Вот так. Значит бумага.
Прикрепленные файлы:
23. spiteful41 5 28.01.20 21:34 Сейчас в теме
Вашему контрагенту ничего не мешает дописать нужную информацию (допустим в договор) и отправить документ дальше. Вы серьезно? ))) Вы думаете эта картиночка на документе несёт какую-то юридическую силу?)) У вас в базе лежит документ без штампа и подпись, внутри подписи хеш подписанного документа, сертификат подписанта и время подписи. Визуализация нужна только для ваших внутренних целей, например, распечатать и показать руководителю, что он подписан, либо как то в программе по печатной форме вывести информацию о подписании! О какой пересылке контрагенту идёт речь и кому он там что-то перешлёт?)))))
26. soulner 141 29.01.20 16:55 Сейчас в теме
(23) Коллега, это не я думаю, а методисты 1С так думают. Я просто немного облагородил существующую технологию, но не изменил её. Попробуйте послать документ, подписанный ЭП без моего расширения и вы увидите, как это реализовано.
Моя публикация называется "Визуализация ЭП" и ни на что большее я не претендую, о чём выше писал.
А то, что по электронной и бумажной почте ходят документы просто со штампом ЭП - это факт, его можно отрицать, но он от этого на исчезнет.
Я в этой реальности живу и работаю, если вы живёте в другой, где документы пересылаются только с ЭП, а вы на своей стороне в своей информационной системе их проверяете, то я за Вас очень рад.
27. ignor 222 03.02.20 19:38 Сейчас в теме
К вопросу о выработанном изящном алгоритме к pdf....
Его наверное можно улучшить, хотя и замедлить за счёт версии ворда который умеет читать pdf
Прочитали им оригинальный pdf и записав его как docx наставили штампов
Сохранили как вспомогательный pdf и опцией мультиштамп пдфтк получили выходной pdf со штампами в нужных местах
28. Profenix 6 06.03.20 14:25 Сейчас в теме
Добрый день. А можно использовать свой тэг для вставки ЭП?
Например в шаблонах ДО.
Т.е. у нас есть шаблон автоматически заполняющийся из ДО, там же ставится тэг и на него потом натягивается ЭП
29. soulner 141 06.03.20 16:26 Сейчас в теме
(28) Добрый день! Всё возможно, но нужно будет самому переопределить тэг. Он указывается при вызове функции "ВставитьВизуализациюЭПВместоТэга()" общего модуля "ВизуализацияЭПКлиентСервер". Найдите использование этой функции и поменяйте тэг. Там будет 2 процедуры.
30. Profenix 6 10.03.20 09:54 Сейчас в теме
(29)
ВставитьВизуализациюЭПВместоТэга

А не подскажете, как вставить этот самый тэг средствами Word, я как понял код идет из КЭП_ВставкаИзображенияВместоТегаВDocx.
31. soulner 141 10.03.20 10:07 Сейчас в теме
Тэг это просто текст. Программа читает xml по узлам (содержимое документа MS Word описано в формате XML), находит тэг и заменяет его вставкой их шаблона. В данном расширении этого механизма нет, т.к. он поддерживается конфигурацией, а тут (https://infostart.ru/public/1006925/) я его реализовывал сам. Тут (http://forum.infostart.ru/forum8/topic210811/message2174320/#message2174320) прямо код замены приведён.
32. Profenix 6 10.03.20 13:51 Сейчас в теме
(31) Спасибо решено, действительно достаточно вставить текст "ВставитьЭП"
И в коде поправить с ВставкаИзображенияВместоТегаВDocx на КЭП_ВставкаИзображенияВместоТегаВDocx.
Сейчас отлично все работает еще раз спасибо!
33. Profenix 6 10.03.20 16:44 Сейчас в теме
(31)
У меня странная ситуация с PDF пишет что:
Magick с командной строкой:
"C:\Program Files\ImageMagick-7.0.9-Q16\magick.exe" convert -strip -density 150 -quality 0 C:\Users\USR1CV82\AppData\Local\Temp\v8_C819_2c\src.pdf C:\Users\USR1CV82\AppData\Local\Temp\v8_C819_2c\res.png

Это все тянется из функции ПреобразоватьPdfВPng
34. soulner 141 10.03.20 17:05 Сейчас в теме
(33) Не понял, что пишет? Это ошибка? Тогда в чём она?
35. Profenix 6 10.03.20 17:18 Сейчас в теме
(34)Да ошибка если пдф подписываешь.
Прикрепленные файлы:
36. Profenix 6 10.03.20 18:09 Сейчас в теме
(34) Извиняюсь заморочил голову, в целом на пдф не имеет смысл визуализации, я просто убрал ограничения у этой обработки. С Word в pdf нормально работает.
37. user1060797 08.04.20 14:40 Сейчас в теме
Дорогие друзья, не подскажите как уменьшит сам штамп ЭП, уже всё перепробовала что могла(
38. soulner 141 08.04.20 17:44 Сейчас в теме
(37) За размер печати отвечают параметры cx и cy в xml-вставках, которые находятся в общих макетах "КЭП_ВставкаИзображенияЭПСУказаниемПоложенияDocx" и "КЭП_ВставкаИзображенияВместоТегаВDocx" (в 2-х местах). Но они там указаны в загадочных единицах EMU (English Metrick Units). Предполагаю, что 1 мм равен 35995 EMU.
39. user1060797 09.04.20 08:21 Сейчас в теме
(38) Огромнейшее спасииибо
40. ligsht 11 14.04.20 13:24 Сейчас в теме
После установки расширения и подписания документа 1с просто виснет и блокируется документ. Разблокировать удается только перезапуском агента. Подскажите в чем проблема?
41. ligsht 11 14.04.20 13:30 Сейчас в теме
(40)
Решилась проблема. Ошибка в пути к ImageMagick.
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист 1С
Екатеринбург
зарплата от 80 000 руб. до 130 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству

Программист 1С
Санкт-Петербург
зарплата до 150 000 руб.
Полный день

Ведущий программист 1С
Москва
зарплата от 150 000 руб.
Полный день

Ведущий программист 1С (УТ 11)
Москва
зарплата до 200 000 руб.
Полный день