Как организовать процесс подписания документов простой электронной подписью через СМС и мессенджеры в 1С

Программист 1С v8.3 (Управляемые формы) Управленческий учет Сфера услуг, туризм и социальный сектор
← На главную

В современной бизнес-среде скорость подписания документов напрямую влияет на оборачиваемость капитала и качество сервиса. Использование усиленной квалифицированной электронной подписи (УКЭП) не всегда удобно для конечного клиента из-за сложности настройки КриптоПро или необходимости наличия токена. В таких случаях на помощь приходит простая электронная подпись (ПЭП). Рассмотрим подробно, как реализовать этот механизм в системе 1С, обеспечив юридическую значимость и техническую надежность.

Юридический фундамент и требования закона

Прежде чем приступать к написанию кода, проанализируем правовую базу. Согласно Федеральному закону № 63-ФЗ «Об электронной подписи», ПЭП — это подпись, которая подтверждает факт формирования подписи определенным лицом посредством кодов или паролей. Для того чтобы ПЭП имела юридическую силу, равнозначную собственноручной подписи, необходимо соблюдение трех условий:

  1. Соглашение сторон: Между вами и контрагентом (или сотрудником) должно быть подписано бумажное соглашение о признании ПЭП, где зафиксированы правила идентификации лица.
  2. Определение подписанта: Система должна однозначно связывать код подтверждения с конкретным физическим лицом (например, через номер телефона, указанный в договоре).
  3. Обязанность соблюдать конфиденциальность: Подписант обязан не передавать свой ключ (код из СМС) третьим лицам.

Важный нюанс: ПЭП нельзя использовать для счетов-фактур при работе с НДС, однако она идеально подходит для актов выполненных работ, накладных (ТОРГ-12) и внутренних кадровых документов.

Архитектура технического решения в 1С

Разберем классическую схему реализации процесса подписания документов из 1С через СМС-авторизацию. Нам потребуется интеграция 1С с СМС-шлюзом и создание веб-интерфейса для клиента.

Шаг 1. Формирование документа и уникальной ссылки

Процесс начинается в 1С. По нажатию кнопки менеджер инициирует подписание. Программа должна сформировать неизменяемую печатную форму (PDF) и сохранить её во внешнем хранилище или базе данных.

Рассмотрим пример формирования структуры для хранения данных сессии подписания:


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

Использование ХешДокумента (алгоритм SHA-256) критически важно. Это гарантирует, что клиент подписывает именно тот файл, который был сформирован, и вы не изменили его содержимое после отправки ссылки.

Шаг 2. Генерация одноразового кода и отправка СМС

Для генерации кода лучше использовать криптостойкий генератор случайных чисел. Хранить сам код в открытом виде в базе данных 1С не рекомендуется — лучше хранить его хеш.

Проанализируем пример функции отправки СМС через API провайдера:


Функция ОтправитьКодПодтверждения(Телефон, Код)
    Запрос = Новый HTTPЗапрос("/send_sms?phone=" + Телефон + "&text=" + "Ваш код для подписания акта: " + Код);
    Соединение = Новый HTTPСоединение("api.sms-gateway.ru", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
    Ответ = Соединение.ОтправитьДляОбработки(Запрос);
    Возврат Ответ.КодСостояния = 200;
КонецФункции

Шаг 3. Создание интерфейса для клиента (Landing Page)

Клиент получает СМС со ссылкой вида https://your-service.ru/sign/ID_сессии. Эта ссылка должна вести на веб-страницу (реализованную на базе HTTP-сервиса 1С или внешнего PHP/Python скрипта), где клиент сможет:

При использовании HTTP-сервисов 1С мы можем напрямую обращаться к базе данных для проверки кода:


// В методе POST HTTP-сервиса
КодОтКлиента = СодержимоеЗапроса.Код;
ID_Сессии = СодержимоеЗапроса.ID;

ЗаписьСессии = РегистрыСведений.СессииПодписанияПЭП.СоздатьМенеджерЗаписи();
ЗаписьСессии.ID = ID_Сессии;
ЗаписьСессии.Прочитать();

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

Шаг 4. Визуализация и хранение доказательств

После успешного ввода кода документ считается подписанным. Чтобы при печати было видно, что документ электронный, на него необходимо наложить визуальный штамп. В штампе обязательно указываем:

Для защиты в суде рекомендуется собирать и хранить дополнительные логи (пакет доказательств): IP-адрес клиента, User-Agent браузера и логи СМС-шлюза о доставке сообщения.

Альтернативные способы реализации: Мессенджеры и Flash Call

Рассмотрим современные способы удешевления и упрощения процесса:

  1. Flash Call: Вместо СМС клиенту поступает звонок. Кодом авторизации являются последние 4 цифры входящего номера. Это значительно дешевле СМС (стоимость звонка может быть в 5-10 раз ниже стоимости сообщения).
  2. Telegram/Viber боты: Если в соглашении прописан идентификатор мессенджера, подписание можно реализовать через кнопку в боте. Это удобно тем, что файл документа можно отправить прямо в чат, исключая лишние переходы по ссылкам.
  3. Голосовое подтверждение: Система звонит клиенту и просит нажать цифру «1» для согласия. В 1С фиксируется запись звонка и лог нажатия клавиши (DTMF).

Основные риски и как их минимизировать

Разберем типичные ошибки при внедрении ПЭП:

Изменение документа задним числом: Если менеджер изменит сумму в акте после того, как клиент ввел код, подпись станет недействительной. Чтобы этого избежать, всегда блокируйте документ 1С на редактирование после отправки ссылки (установка признака ТолькоПросмотр или смена статуса).

Перехват СМС-кода: Хотя риск невелик, для крупных сделок рекомендуется использовать усиленную неквалифицированную подпись (НЭП), которую можно выпустить облачно через специализированные сервисы (например, Sign.Me или Nopaper).

Отсутствие бумажного соглашения: Самая частая ошибка. Без первичного бумажного документа, в котором клиент разрешает использовать его номер телефона для ПЭП, логи 1С не будут иметь веса в суде.

Резюме

Реализация ПЭП в 1С — это не только программирование HTTP-запросов, но и выстраивание комплексной системы безопасности. Проанализируйте свои бизнес-процессы: если ваши клиенты — это малый бизнес или физические лица, внедрение подписания через СМС или Telegram-ботов может сократить цикл сделки с нескольких дней до пары минут. Главное — помнить про обязательное предварительное соглашение и неизменность документа после его формирования.

← На главную