(В!) Работа с Электронной подписью - это неотъемлемая часть современного документооборота. Но что делать, если нужно поставить несколько штампов электронной подписи в строго определенных местах документа формата .docx? В этой статье рассмотрен вопрос, как провести более тонкую настройку 1С и шаблон ворд для решения этой задачи. Здесь будет описан вопрос, как я настраивал 1С и шаблон ворд для корректноого отображения штампов электронной подписи, и некоторые нюансы с которыми столкнулся я. Будет рассмотрен вопрос, настройки 1С:Документооборот 3.0 для корректной установки штампов электронной подписи ответственных сотрудников в файлах .docx.
Здесь не используется сервис "1С:Штамп".
1. разработка макета документа .docx
Я изначально делаю очень просто, делаю пустой файл, сохраняю его на диск.
Далее захожу в настройки вида документа перехожу в блок настройки создания документов, на закладке файлы, нажимаю "Добавить" и выбираю файл с диска (подготовленный пустой). Далее в поле "Настройка заполнения" перехожу по ссылке, чем открывается окно выбора реквизитов создаваемого вида документа, в котором устанавливаю флаги на реквизиты которые должны будут заполняться исходя из заполненных реквизитов карточки документа, прописываю скрипты заполнения если необходимо. Далее перехожу на закладку "Штампы ЭП" и устанавливаю флаг "Вставлять штампы ЭП" нажимаю кнопку "Готово". После этого открывается файл на редактирование. Изначально, когда отработал с ним 1С, файл получил необходимые поля формы заполнения которые уже сразу будут заполняться из карточки без каких либо дополнительных настроек.
https://www.cyberforum.ru/blog... 1784472356
Файл получился не красивый, но уже вполне рабочий. Осталось его только доработать в части размещения полей формы в нужных местах и сформировать записи, где должны будут располагаться штампы электронных подписей.
2. именование мест установки штампов:
В тех местах, где должен будет установлен штамп электронной подписи пишем слово, которое будет однозначно уникальным во всем документе, даже после заполнения пользователем. У меня это "ЭППервыйПодписант", "ЭПВторойПодписант" и "ЭПТретийПодписант”. Далее закрываем документ и завершаем редактирование файла.
3. переходим на закладку "Настройка обработки" и оформляем ее, добавляя действия которые будем брать при получении штампов. Действия должны быть "Подписание". Для тестов я сделал "ПервыйПодписант", "ВторойПодписант", "ТретийПодписант", у Вас будут другие.
https://www.cyberforum.ru/blog... 1784472356
Подробно рассматривать настройку обработки здесь не будем *это совсем другая история.
4. в основных реквизитах "Форма" документа выбираем "Электронная" в противном случае штампы не хотят устанавливаться.
5. после этого закрываем создаваемый вид документа с сохранением.
6. настройка заполнения документа в 1С:Документооборот 3.0
= переходим в настройки заполнения файлов
==находим нашу настройку и открываем ее.
===в закладке "Штампы ЭП" добавляем новые строки заполняя:
в поле "Какую строку заменить" прописываем уникальную строку записанную в файле, (у меня это "ЭППервыйПодписант", "ЭПВторойПодписант" и "ЭПТретийПодписант")
в поле "на что заменить" пишем следующее:
| 1C | 1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
| //изначально результат пустая строка
РезультатОбработки = "";
//далее получаем ссылку на документ
Документ = Файл.ВладелецФайла;
//запросом необходимо получить всех сотрудников которые подписали документ
//у меня в отборах:
//1. подписывающий (по умолчанию),
//2. ссылка на документ (полученная выше),
//3. и наименование вида действия из настройки видов действий где настраивали обработку
//у меня это "ПервыйПодписант", "ВторойПодписант", "ТретийПодписант" соответственно
//4. и проверка бизнеспроцесса помещенного в историю (возможно прерванные обработки, ее не возьмет)
Запрос = Новый Запрос;
Запрос.Текст =
"выбрать первые 50 СведенияОбУчастникахДействий.ФактическийИсполнитель.факт как участник
|из РегистрСведений.СведенияОбУчастникахДействий как СведенияОбУчастникахДействий
|где СведенияОбУчастникахДействий.Действие в (
| выбрать ДействияПодписания.ссылка.Ссылка
| из Справочник.действияподписания.Участники как ДействияПодписания
| где ДействияПодписания.ФункцияУчастника = Значение(Перечисление.ФункцииУчастниковПодписания.Подписывающий)
| и ДействияПодписания.ссылка.предмет = &предмет
| и действияподписания.Ссылка.ВидДействия.Наименование = ""ПервыйПодписант""
| и не действияподписания.Ссылка.ПомещеноВИсторию
|)";
// Установка значений параметров
Запрос.УстановитьПараметр("Предмет", Документ);
РезультатЗапроса = Запрос.Выполнить();
// обходим запрос и получаем штампы электронных подписей
Выборка = РезультатЗапроса.Выбрать();
МассивПодписей = Новый Массив;
Пока Выборка.Следующий() Цикл
//используя общий модуль "РаботаСЭП" получаем штампы подписантов
значениеРезультата = РаботаСЭП.получитьФайлШтампаЭП(Файл, Выборка.участник);
//проверяем на пустое значение полученное в значениеРезультата
Если не ПустаяСтрока(значениеРезультата) Тогда
// закладываем все в массив подписей
МассивПодписей.Добавить(ЗначениеРезультата);
КонецЕсли;
КонецЦикла;
// далее просто берем тот штамп который нас интересует.
РезультатОбработки = МассивПодписей[0]; |
|
далее настройку записать и закрыть.
проверяем:
https://www.cyberforum.ru/blog... 1784472372
4. возможные ошибки при настройке файла и 1С
я пробовал сначала устанавливать в файле ворд имена штампов проставляя в конце 1, 2, 3.. но это
не срабатывает (после записи настройки, почемуто оставалась настройка ТОЛЬКО с записью 1)
по этому было принято решения номер нужной подписи прописывать буквами
важно понимать, что здесь получаем подпись подписанта который фактически подписал документ.
т.е. подпись сотруника которому были делегированы права на подписание, а не подписанта за которого выполняетя задача.
|