ЭЦП в отчетах |
Пред. Начало След. |
Вывод ЭП при печати документов (об указании места вывода штампа ЭП в ОД см описание "Оправдательные документы")
Возможные способы:
1) В виде штампа, согласно Приказа Министерства связи и массовых коммуникаций РФ и Федеральной службы охраны РФ от 27 мая 2015 г. № 186/258.
Для вывода эмблемы (герба) следует задать настройку "Эмблема для визуального отображения в штампе ЭП" , иначе штамп будет выведен без герба.
1.1) В печатных формах документов и отчетов. Вывод штампа с использованием переменной выборки данных для печати, содержащей набор реквизитов ЭП. Обычно (в большинстве отчетов) это переменная ecp .
Пример формулы в Excel шаблоне (.xlt): >>>FIND_ECP_STAMP({ecp};5;1)
Пример формулы в RTF шаблоне (.rtf): <ep>[dbo.get_one_ecp(max(ecp),1)]</ep>
1.2) В файлах ОД. Вывод штампа с использованием специальных тэгов, обозначающих место вывода штампа ЭП. Метод применяется в файлах ОД. При этом ЭП считывается из документа напрямую, без применения каких-либо переменных выборки данных для печати.
В Excel и RTF файлах (в т.ч. шаблонах), прикрепляемых как ОД, можно обозначить место, в котором должен выводится штамп ЭП наложенный на ОД: для этого прописать в нужном месте файла тег <ep>#stamp_paste:У;Х</ep> , где У - параметр ЭП (см далее), Х - значение параметра. Например <ep>#stamp_paste:5;1</ep> - вывести штамп ЭП 1 уровня, где 5 - параметр, обозначающий уровень ЭП, 1 - требуемый уровень ЭП, чей штамп нужно отобразить. В шаблоне документа "Реестр соглашений" и его приложениях рекомендуем использовать теги для обозначения места вывода штампа ЭП, а не сам штамп ЭП.
Возможные параметры:
Наборы символов/слов допустимые при описании формата (format): d День месяца, в диапазоне от 1 до 31. dd День месяца, в диапазоне от 01 до 31. ddd Сокращенное название дня недели (вт). dddd Полное название дня недели (вторник).
M Месяц, в диапазоне от 1 до 12. MM Месяц, в диапазоне от 01 до 12. MMM Сокращенное название месяца. MMMM Полное название месяца.
y Год, в диапазоне от 0 до 99. yy Год, в диапазоне от 00 до 99. yyyy Год в виде четырехзначного числа.
g, gg Период или эра (нашей эры).
h Час в 12-часовом формате от 1 до 12. hh Час в 12-часовом формате от 01 до 12. H Час в 24-часовом формате от 0 до 23. HH Час в 24-часовом формате от 00 до 23. m Минуты, в диапазоне от 0 до 59. mm Минуты, в диапазоне от 00 до 59. s Секунды, в диапазоне от 0 до 59. ss Секунды, в диапазоне от 00 до 59.
K Данные о часовом поясе. t Первый символ указателя AM/PM (до полудня "A", после полудня "P"). tt Указатель AM/PM (до полудня AM, после полудня PM).
Любые символы вне этого списка выводятся в дате как есть.
2) В виде набора реквизитов ЭП, расположение и набор реквизитов на усмотрение пользователя. Вывод отдельных параметров (ФИО, уровень, достоверность и т.п.) ЭП с использованием переменной выборки данных для печати, содержащей набор реквизитов ЭП. Обычно (в большинстве отчетов) это переменная ecp .
Пример формулы в Excel шаблоне для приведенного примера - выводится 4 параметра (должность, ФИО, дата наложения ЭП и достоверность) : >>>ПАРАМЕТР(FIND_ECP({ecp};5;1); 1; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp};5;1); 2; "|") &" Дата подписания: "& ПАРАМЕТР(FIND_ECP({ecp};5;1); 3; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp};5;1); 4; "|")
Пример формулы в RTF шаблоне для вывода реквизитов ФИО подписанта и даты подписания ЭП 3 уровня: Исполнитель _____________________ /[dbo.GetElement(dbo.find_ecp(max(ecp),5,3), '|', 1)]/ ( [dbo.GetElement(dbo.find_ecp(max(ecp),5,3), '|', 2)] ) Результат
Исполнитель _____________________ /[dbo.GetElement(dbo.find_ecp(max(ecp),5,3), '|', 1)]/ ( [Left(dbo.GetElement(dbo.find_ecp(max(ecp),5,3), '|', 2),10)] ) Результат
Варианты с использованием переменной (см выше п.1.1 и 2) выборки данных для печати - используют переменную {ecp} (в большинстве случаев), которая содержит информацию обо всех ЭП документа в виде строки с разделителями # и | : (1) должность подписанта первой ЭП по данным сертификата |(2) ФИО подписанта 1-й ЭП по данным сертификата |(3) дата наложения 1-й ЭП |(4) примечание к 1-й ЭП (достоверность) |(5) номер уровня 1-й ЭП |(6) номер сертификата |(7) срок действия сертификата |(8) идентификатор логина наложившего ЭП |(9) всегда пусто |(10) логин наложивший ЭП |(11) телефон логина наложившего ЭП |(12) тип уровня ЭП #...вторая ЭЦП... #...
В скобках показан порядковый номер реквизита (параметра ЭЦП) в блоке. В функциях Excel (ПАРАМЕТР() и FIND_ECP()) порядковый номер используется как есть, в функции для RTF шаблона GetElement() следует указывать порядковый номер на единицу меньше.
Должность (параметр №1) берется :
ФИО (параметр №2) берется из сертификата. Телефон (параметр №11) берется из реквизитов логина подписанта (см меню "Пользователи" вкладка "Исполнитель"). Тип уровня ЭП(параметр №12) - согласно значению в поле "Тип" справочника "Уровни ЭП".
Существует неявный индекс 0 (номер реквизита), который содержит порядковый номер ЭП (в порядке наложения ЭП, начиная с 1, не путать с уровнем ЭП) - который применяется в формулах и тэгах по выводу информации об ЭП. См далее примеры.
При использовании тэгов stamp_paste для задания условий выводимой ЭП возможно применение параметров №№: 0,1,2,5,6,8,10.
Пример значения поля ecp для документа, на который наложено три ЭП: Специалист|Иванов Иван Иванович|02.03.2017 14:31:36| Подпись верна.|2|1D87D9|с 16.12.2016 по 16.03.2018|34#Специалист|Петров Петр Перович|05.03.2017 16:31:36|Подпись верна.|2|1D87D9|с 16.12.2016 по 16.03.2018|123#Руководитель|Сидоров Сидр Сидорович|02.04.2017 15:31:36| Неверная подпись.|3|1D87D9|с 16.12.2016 по 16.03.2018|36
Примеры применения формул
Вывод ЭЦП в виде штампа c эмблемой (для ЭЦП наложенных на клиенте не ниже 17.4.11 и с применением Сервиса ОД ) (согласно Приказа Министерства связи и массовых коммуникаций РФ и Федеральной службы охраны РФ от 27 мая 2015 г. № 186/258)
Примеры формул вывода штампа для Excel шаблонов (.xlt) Подпись первого уровня: >>FIND_ECP_STAMP({ecp}; 5; 1) Подпись максимального уровня: >>FIND_ECP_STAMP({ecp}; 5; "max") Все подписи 1-го уровня: >>FIND_ECP_STAMP_ALL({ecp};5;1)
Первая по дате подписания подпись: >>FIND_ECP_STAMP({ecp}; 3; "min") Последняя по дате подписания подпись: >>FIND_ECP_STAMP({ecp}; 3; "max") Последняя по дате подписания подпись 2 уровня: >>FIND_ECP_STAMP({ecp}; 5; 2; 3; "max")
Подпись бухгалтера Иванова: >>FIND_ECP_STAMP({ecp}; 1; "бухгалтер"; 2; "Иванов") Последняя по списку подпись: >>FIND_ECP_STAMP({ecp}; 0; "max")
Подпись заданного типа: >>>FIND_ECP_STAMP({ecp};12;"Председатель комиссии")
Примеры формул вывода штампа для WORD шаблонов (.rtf) <ep>[dbo.get_one_ecp(max(ecp),1)]</ep> - подпись 1 уровня
Примеры тэгов вывода штампа <ep>#stamp_paste:5;3</ep> - вывод штампа ЭП 3 уровня. <ep>#stamp_paste:1;"директор"</ep> - вывод штампа ЭП подписанной сертификатом директора (любой ЭП, в должности которой присутствует слово "директор"). <ep>#stamp_paste:2;"Иванов"</ep> - вывод штампа ЭП подписанной сертификатом Иванова (т.е. это и Иванов Иван Иванович, и Иванов Петр Петрович и т.п.). <ep>#stamp_paste:2;"Иванов Иван Иванович"</ep> - вывод штампа ЭП подписанной сертификатом Иванова Иван Ивановича . <ep>#stamp_paste:10;"grbs"</ep> - вывод штампа ЭП подписанной логином grbs (или grbs_2, или m_grbs_prip и т.п.).
<ep>#stamp_paste:3;min</ep> - вывод штампа ЭП, наложенной первой (с минимальной датой установки ЭП). <ep>#stamp_paste:3;max</ep> - вывод штампа ЭП, наложенной последней (с максимальной датой установки ЭП). <ep>#stamp_paste:0;2</ep> - вывод штампа ЭП, наложенной второй (вторая по порядку наложения ЭП). <ep>#stamp_paste:0;1;all</ep> - вывод штампа всех ЭП документа.
<ep>#stamp_paste:5;2;date</ep> - вывод даты (не штампа) наложения ЭП 2 уровня, в формате ДД.ММ.ГГГГ, например 25.03.2022 . <ep>#stamp_paste:5;2;date:"dd MMMM yyyyг."</ep> - вывод даты (не штампа) наложения ЭП 2 уровня, в виде 25 марта 2022г. . <ep>#stamp_paste:5;2;date:"dd.MM.yyyy HH:mm:ss"</ep> - вывод даты и времени (не штампа) наложения ЭП 2 уровня, в виде 25.03.2022 10:45:32 .
Вывод ЭЦП текстом (для xlt шаблонов)
Примеры формул по выводу ФИО (реквизит 2) и примечания (реквизит 4) ЭЦП Подпись третьего уровня: >>>ПАРАМЕТР(FIND_ECP({ecp};5;3); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp};5;3); 4; "|") Подпись максимального уровня: >>>ПАРАМЕТР(FIND_ECP({ecp};5;"max"); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp};5;"max"); 4; "|") Первая по дате подписания подпись: >>>ПАРАМЕТР(FIND_ECP({ecp}; 3; "min"); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp}; 3; "min"); 4; "|") Последняя по дате подписания подпись 2 уровня: >>>ПАРАМЕТР(FIND_ECP({ecp}; 5; 2; 3; "max"); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp}; 5; 2; 3; "max"); 4; "|") Подпись бухгалтера Иванова: >>>ПАРАМЕТР(FIND_ECP({ecp}; 1; "бухгалтер"; 2; "Иванов"); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp}; 1; "бухгалтер"; 2; "Иванов"); 4; "|") Последняя по списку подпись: >>>ПАРАМЕТР(FIND_ECP({ecp}; 0; "max"); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp}; 0; "max"); 4; "|")
Описание функций
Для Excel шаблонов FIND_ECP_STAMP(имя_поля; N; значение [; N2; значение2]) Для вывода штампа ЭЦП в Excel шаблонах. Параметры функции: имя_поля - имя поля с данными ЭЦП, обычно {ecp}; N - число от 0 до 9, номер реквизита ЭП. Где: 0 - порядковый номер ЭП, 1-8 - реквизиты ЭП (см выше); 9 - аналог 1 (должность подписанта), но только точный поиск (по умолчанию поиск неточный - по вхождению) ; значение - искомое значение заданного параметра. Может быть числом (для реквизита "Уровень ЭЦП" или порядкового номера) или строкой (текстом). Для строк поиск происходит не точный - по вхождению подстроки в строку, кроме параметра 9 - точный поиск заданной должности. Имеются зарезервированные значения "max" и "min" для поиска максимального и минимального значения. [; N2; значение2] - если задана вторая пара значений, то сначала вычисляется первая пара, затем в результирующем наборе ищется вторая пара значений. Важно: пары значений с min и max ставить вторыми.
Пример: >>>FIND_ECP_STAMP({ecp}; 5; 2) - вывести в виде штампа ЭП 2-го уровня. Если их несколько, то выведен будет только один штамп первой попавшеся ЭП 2-го уровня. Пример: >>>FIND_ECP_STAMP({ecp}; 1; "бухгалтер") - вывести в виде штампа ЭП с должностью подписанта, содержащей слово "бухгалтер". Пример: >>>FIND_ECP_STAMP({ecp}; 9; "бухгалтер") - вывести в виде штампа ЭП с должностью подписанта дословно "бухгалтер".
FIND_ECP_STAMP_ALL(имя_поля; N; значение [; N2; значение2]) Для вывода штампа всех ЭП, подпадающих под заданное условие, в Excel шаблонах. Параметры функции идентичны функции FIND_ECP_STAMP(). Пример: >>>FIND_ECP_STAMP_ALL({ecp}; 5; 2) - вывести в виде штампа все ЭП 2-го уровня. Пример: >>>FIND_ECP_STAMP_ALL({ecp}; 0; 1) - вывести в виде штампа все ЭП.
FIND_ECP_STAMP_AUTO_SIZE(имя_поля; N; значение [; N2; значение2])
FIND_ECP({имя_поля}; N; значение [; N2; значение2]) Для поиска определенной ЭП в специальном тексте (поле), содержащем информацию об ЭП. Применяется в качестве первого параметра к функции ПАРАМЕТР(). Назначение параметров такое же, как у функции FIND_ECP_STAMP().
ПАРАМЕТР(строка; N; разделитель) Для вывода значения одного заданного реквизита ЭП в текстовом виде. В общем случае назначение функции - выделить из произвольного текста с разделителями заданный порядковым номером кусок. Параметры функции: строка - строка текста с разделителями. N - порядковый номер части текста, ограниченной разделителем. разделитель - символ, разделяющий части текста, в контексте ЭЦП это "|".
Пример: >>>ПАРАМЕТР(FIND_ECP({ecp}; 1; "бухгалтер"; 2; "Иванов"); 2; "|") &" "& ПАРАМЕТР(FIND_ECP({ecp}; 1; "бухгалтер"; 2; "Иванов"); 4; "|") - при наличии ЭП бухгалтера Иванова будет выведено его ФИО (первая функция, с параметром 2) и достоверность ЭП (вторая фнкция, с параметром 4).
Для RTF шаблонов dbo.get_one_ecp(max(ecp),1) Для вывода штампа ЭЦП в rtf шаблонах. Первый параметр - max(ecp) - имя поля содержащее информацию об ЭЦП, второй параметр - порядковый номер подписи.
dbo.find_ecp(строка ЭЦП, N, значение) - полный аналог Excel функции FIND_ECP(), но для RTF шаблонов - для поиска ЭП по заданному реквизиту. Применяется совместно с функцией dbo.GetElement(). Параметры функции:
Пример: dbo.find_ecp(max(ecp), 5, 2) - найти в поле ecp ЭП с "уровнем ЭЦП=2" Пример: dbo.find_ecp(max(ecp), 1, "бухгалтер") - найти в поле ecp ЭП с должностью подписанта, содержащей слово "бухгалтер". Пример: dbo.find_ecp(max(ecp), 9, "бухгалтер") - найти в поле ecp ЭП с должностью подписанта дословно "бухгалтер".
Если нужен поиск по нескольким значениям, то вызывать функцию от функции, например: dbo.find_ecp(dbo.find_ecp(строка ЭЦП, N1, значение1), N2, значение2) .
dbo.GetElement(строка, разделитель, N) Для вывода значения одного заданного реквизита ЭП в текстовом виде. В общем случае назначение функции - выделить из произвольного текста с разделителями заданный порядковым номером кусок. Параметры функции: строка - строка текста с разделителями. разделитель - символ, разделяющий части текста, в контексте ЭЦП это "|". N - порядковый номер части текста, ограниченной разделителем. Отсчет начинается с 0, т.е. первый реквизит имеет номер 0, второй - номер 1, и т.д. Например в Excel шаблоне вывод ФИО (реквизит №2) формулой: >>ПАРАМЕТР(FIND_ECP({ecp};5;1); 2; "|") а в RTF шаблоне формулой (номер реквизита на 1 меньше): [dbo.GetElement(dbo.find_ecp(max(ecp),5,1), '|', 1)]
Настройки
Проверять электронную подпись в печати документа Настройка на документ/отчет.
|