Подписание документа pdf#
Кнопка Подписать#
Кнопка Подписать отображается в окне просмотра только (указано в соответствующих разделах спецификации):
- для файлов, которые необходимо подписать пользователю
- пользователю с ролью, которая должна подписать файл
После нажатия на кнопку Подписать запускается процесс подписания, модальное окно НЕ закрывается.
Подписание#
В зависимости от Вида документа file.type и Типа подписания клиента customer.signingType могут применяться разные способы подписания ПФ (указано в соответствующих разделах спецификации):
Необходимый процесс подписания запускается при нажатии пользователем кнопки Подписать в модальном окне просмотра файлов pdf.
При нажатии на кнопку Подписать (вне зависимости от документа и типа подписания), выполняется проверка: указан ли срок действия документа - основания полномочия customer.company.representative.actionBasis.notValidAfter
- если указан, и текущая дата больше чем
notValidAfter(срок истек), то кнопкаПодписатьстановится неактивной, и на кнопке отображается тултипСрок основания полномочий истек. Предоставьте агенту обновленные подтверждающие документы. - во всех остальных случаях (срок действия не указан или не истек) запускается Необходимый процесс подписания
Логирование событий#
Система записывает в журнал аудита весь процесс подписания
Для всех видов подписания
- SIGN_START - пользователь нажал на кнопку
Подписать
Для ПЭП
- SIGN_SIMPLE_ELECTRONIC_SMS_SEND - каждую отправку СМС-кода, в т.ч. которые пользователь запросил повторно
- SIGN_SIMPLE_ELECTRONIC_SMS_RESEND - пользователь нажал на ссылку повторного запроса кода
- SIGN_SIMPLE_ELECTRONIC_SUBMIT - сабмит формы ввода кода
- SIGN_SIMPLE_ELECTRONIC_ADD_STAMP - в файл добавлен штамп подписи
Для ручной
- SIGN_HANDWRITTEN_DOWNLOAD - пользователь нажал ссылку скачивания исходного файла в процессе подписания
- SIGN_HANDWRITTEN_UPLOAD - пользователь приложил файл в процессе подписания
Подписание ПЭП#
| # | Шаг |
|---|---|
| 1. | Пользователь открывает ПФ документа на просмотр и нажимает кнопку Подписать |
| 1.a | Если для текущего документа код уже был отправлен SPA_OTP_RESEND_TIME секунд назад, то отрывается окно ввода кода с оставшимся до истечения таймером. Переход к шагу 5. |
| 2. | Система отправляет СМС с кодом на номер пользователя user.phone |
| 3. | Система запускает Таймер ограничения повторной отправки СМС |
| 4. | Система отображает модельное окно для ввода кода из СМС |
| 5. | Система ожидает ввода пользователем кода из СМС |
| 5.a | Если таймер ограничения повторной отправки кода истек, показывает в модельном окне ссылку для повторной отправки кода |
| 5.b | Если пользователь запросил Код повторно. Возврат к шагу 2 |
| 6 | Пользователь вводит код из СМС |
| 7 | Система сравнивает введенный код с отправленным |
| 7.1 | Если коды не совпадают, система показывает сообщение об ошибке, очищает введенное пользователем значение. Возврат к шагу 5 |
| 8 | Система сохраняет информацию о подписании |
| 9 | Система добавляет штамп ПЭП в ПФ |
| 10 | Система отображает сообщение об успешном подписании |
| 11 | Система показывает форму просмотра ПФ без кнопки Подписать |
Ограничения отправленного кода#
- Максимальное количество попыток ввода = SPA_OTP_MAX_ATTEMPTS.
- Считается общее количество по всем подписываемым документам.
- Обнуляется после удачного ввода кода пользователем.
- при достижении максимального количества попыток - пользователь блокируется, пользователю показывается системная ошибка.
- Время на которое блокируется пользователь если превысил количество попыток = SPA_OTP_LOCK_TIME.
- Измеряется в минутах.
- При значении
0- не блокируется.
- Время жизни токена = SPA_OTP_TIME_TO_LIVE в минутах.
- если время жизни кода истекло, пользователю показывается системная ошибка
Модальное окно#
- Модальное окно всегда в центре
- Вводить в поля можно только цифры
- При открытии формы активно первое (левое) поле. При вводе цифры, фокус перескакивает на следующее справа поле
- Таймер равен значению SPA_OTP_RESEND_TIME в секундах.
- Пользователю показывается ссылка повторного запроса кода только после того, как таймер истек
При нажатии на ссылку пользователем:
- Система отправляет СМС с новым кодом на номер пользователя
user.phone - Система запускает таймер ограничения повторной отправки СМС
- Система на этом же модальном окне показывает таймер
- Система ожидает ввода пользователем кода из СМС
- Система отправляет СМС с новым кодом на номер пользователя
- Отдельной кнопки сабмита нет, форма сабмитится сразу после ввода последнего 4го символа.
- Во время проверки кода системой, все поля и ссылки заблокированы, вместо таймера/ссылки повторного запроса кода отображается лоадер.
-
Если код проверен успешно, модальные окна ввода кода и просмотра pdf закрываются, отображается нотификация об успешном подписании

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

Сохранение#
Оригинальный не подписанный файл удаляется из системы.
Система сохраняет следующую информацию о подписании:
- все атрибуты копируются из оригинального файла
file.path- новый UUID и добавляется постфикс_sgnfile.name- добавляется постфикс_signedfile.signature.operationId- уникальный UUID операции.file.signature.signingType-SIMPLE_ELECTRONICfile.signature.signedAt- текущие дата и времяfile.signature.user-user.idfile.signature.userRole-user.rolefile.signature.smsCode- код из СМС которым пользователь подтвердил подписаниеfile.signature.phone-user.phonefile.signature.inn:- ЮЛ: -
company.inn - ФЛ: -
person.inn - ИП: -
person.inn
- ЮЛ: -
file.signature.kpp:- ЮЛ: -
company.kpp - ФЛ, ИП - пустое
- ЮЛ: -
file.signature.name:- ЮЛ: -
company.fullName - ФЛ: - пустое
- ИП: -
ИП {person.fio}
- ЮЛ: -
file.signature.fio:- ЮЛ: -
{company.representative.fio} - ФЛ: -
person.fio - ИП: -
person.fio
- ЮЛ: -
Добавление штампа#
- Для добавления штампа, система заново генерирует ПФ документа, в которую он вставляется, со всеми актуальными данными подписантов на момент подписания.
- Место вывода штампа указано в шаблонах, в которых его требуется добавлять
- Если подписывающий пользователь - клиент ИП или ФЛ, вторая строка в штампе подписи отсутствует.
Отображение на форме#
- Подписанный ПЭП файл отображается в системе в той же группе файлов где был оригинальный файл.
- Подписанный ПЭП файл пользователь не может удалить
- При просмотре подписанного ПЭП файла кнопка
Подписатьне отображается
Подписание вручную#
| # | Шаг |
|---|---|
| 1. | Пользователь открывает ПФ документа на просмотр и нажимает кнопку Подписать |
| 2. | Система показывает модалку со ссылкой для скачивания, пошаговой инструкцией, и ссылкой для загрузки подписанного скана |
| 3. | Пользователь скачивает документ, подписывает его и загружает скан |
| 4. | Система сохраняет загруженный файл, закрывает модалку просмотра и подписания, отображает в заявке загруженный файл |
Модальное окно#
- Модальное окно всегда в центре
- Закрыть модалку можно, нажав на иконку крестика или на фон (закрывается только модалка подписания)
- По ссылке
Скачайте документскачивается файл подписываемого документа
- Для загрузки файла пользователь может выбрать только один файл
-
Если файл не соответствует необходимому формату/размеру, он не загружается на бэк и в списке документов в табе “Документы” не появляется. В модельном окне отображается сообщение об ошибке
- В случае технической ошибки в модальном окне подписания отображается алерт:
Сохранение#
Оригинальный файл не удаляется из системы. Оба файла отображаются пользователю.
Сохранение загруженного файла:
- все атрибуты копируются из оригинального файла
file.path- новый UUID и добавляется постфикс_sgnfile.name- добавляется постфикс_signedfile.signature.operationId- уникальный UUID операции.file.signature.signingType-HANDWRITTENfile.signature.signedAt- текущие дата и времяfile.signature.user-user.idfile.signature.userRole-user.rolefile.signature.inn:- ЮЛ: -
company.inn - ФЛ: -
person.inn - ИП: -
person.inn
- ЮЛ: -
file.signature.kpp:- ЮЛ: -
company.kpp - ФЛ, ИП - пустое
- ЮЛ: -
file.signature.name:- ЮЛ: -
company.fullName - ФЛ: - пустое
- ИП: -
ИП {person.fio}
- ЮЛ: -
file.signature.fio:- ЮЛ: -
{company.representative.fio} - ФЛ: -
person.fio - ИП: -
person.fio
- ЮЛ: -
Отображение на форме#
- Подписанный вручную файл отображается в системе в той же группе файлов где и оригинальный файл.
- Пользователь, загрузивший документ, может удалить его и пройти процедуру подписания повторно.
- При удалении файл из системы не удаляется, помечается как удаленный, пользователю не отображается.
- Если уже существует подписанный загруженный файл, то при просмотре и загруженного подписанного и оригинального файлов, кнопка
Подписатьне отображается
Дополнительная кнопка загрузки подписанного документа вручную#
Кнопка Загрузить подписанный
- Отображается:
- в деталке договора:
- на группе файлов
Договор - если в статусе требуется ручная подпись пользователем (см. documents.json для договоров
- если подписанный файл ещё не загружен
- на группе файлов
- в деталке договора:
- При нажатии на кнопку:
- открывается диалоговое окно как при нажатии на кнопку
Подписатьв окне просмотра pdf
- открывается диалоговое окно как при нажатии на кнопку
Полный набор макетов
Все макеты и состояния по ссылкам:
Макеты Figma: Подписание клиентом Макеты Figma: Подписание ПЭП










