В современной бизнес-среде скорость подписания документов напрямую влияет на оборачиваемость капитала и качество сервиса. Использование усиленной квалифицированной электронной подписи (УКЭП) не всегда удобно для конечного клиента из-за сложности настройки КриптоПро или необходимости наличия токена. В таких случаях на помощь приходит простая электронная подпись (ПЭП). Рассмотрим подробно, как реализовать этот механизм в системе 1С, обеспечив юридическую значимость и техническую надежность.
Прежде чем приступать к написанию кода, проанализируем правовую базу. Согласно Федеральному закону № 63-ФЗ «Об электронной подписи», ПЭП — это подпись, которая подтверждает факт формирования подписи определенным лицом посредством кодов или паролей. Для того чтобы ПЭП имела юридическую силу, равнозначную собственноручной подписи, необходимо соблюдение трех условий:
Важный нюанс: ПЭП нельзя использовать для счетов-фактур при работе с НДС, однако она идеально подходит для актов выполненных работ, накладных (ТОРГ-12) и внутренних кадровых документов.
Разберем классическую схему реализации процесса подписания документов из 1С через СМС-авторизацию. Нам потребуется интеграция 1С с СМС-шлюзом и создание веб-интерфейса для клиента.
Процесс начинается в 1С. По нажатию кнопки менеджер инициирует подписание. Программа должна сформировать неизменяемую печатную форму (PDF) и сохранить её во внешнем хранилище или базе данных.
Рассмотрим пример формирования структуры для хранения данных сессии подписания:
// Создадим структуру для регистрации запроса на подпись
ДанныеПодписи = Новый Структура;
ДанныеПодписи.Вставить("ДокументСсылка", Объект.Ссылка);
ДанныеПодписи.Вставить("НомерТелефона", Объект.Контрагент.ТелефонДляСМС);
ДанныеПодписи.Вставить("ДатаЗапроса", ТекущаяДата());
ДанныеПодписи.Вставить("УникальныйИдентификатор", Строка(Новый УникальныйИдентификатор()));
ДанныеПодписи.Вставить("ХешДокумента", ПолучитьХешФайлаPDF(ПутьКФайлу));
Использование ХешДокумента (алгоритм SHA-256) критически важно. Это гарантирует, что клиент подписывает именно тот файл, который был сформирован, и вы не изменили его содержимое после отправки ссылки.
Для генерации кода лучше использовать криптостойкий генератор случайных чисел. Хранить сам код в открытом виде в базе данных 1С не рекомендуется — лучше хранить его хеш.
Проанализируем пример функции отправки СМС через API провайдера:
Функция ОтправитьКодПодтверждения(Телефон, Код)
Запрос = Новый HTTPЗапрос("/send_sms?phone=" + Телефон + "&text=" + "Ваш код для подписания акта: " + Код);
Соединение = Новый HTTPСоединение("api.sms-gateway.ru", , , , , , Новый ЗащищенноеСоединениеOpenSSL());
Ответ = Соединение.ОтправитьДляОбработки(Запрос);
Возврат Ответ.КодСостояния = 200;
КонецФункции
Клиент получает СМС со ссылкой вида https://your-service.ru/sign/ID_сессии. Эта ссылка должна вести на веб-страницу (реализованную на базе HTTP-сервиса 1С или внешнего PHP/Python скрипта), где клиент сможет:
При использовании HTTP-сервисов 1С мы можем напрямую обращаться к базе данных для проверки кода:
// В методе POST HTTP-сервиса
КодОтКлиента = СодержимоеЗапроса.Код;
ID_Сессии = СодержимоеЗапроса.ID;
ЗаписьСессии = РегистрыСведений.СессииПодписанияПЭП.СоздатьМенеджерЗаписи();
ЗаписьСессии.ID = ID_Сессии;
ЗаписьСессии.Прочитать();
Если ЗаписьСессии.Выбран() И ЗаписьСессии.ХешКода = ПолучитьХешСтроки(КодОтКлиента) Тогда
ЗаписьСессии.Статус = Перечисления.СтатусыПодписания.Подписан;
ЗаписьСессии.ДатаПодписания = ТекущаяДата();
ЗаписьСессии.Записать();
// Вызываем процедуру наложения визуального штампа
СформироватьФайлСоШтампом(ЗаписьСессии.Документ);
КонецЕсли;
После успешного ввода кода документ считается подписанным. Чтобы при печати было видно, что документ электронный, на него необходимо наложить визуальный штамп. В штампе обязательно указываем:
Для защиты в суде рекомендуется собирать и хранить дополнительные логи (пакет доказательств): IP-адрес клиента, User-Agent браузера и логи СМС-шлюза о доставке сообщения.
Рассмотрим современные способы удешевления и упрощения процесса:
Разберем типичные ошибки при внедрении ПЭП:
Изменение документа задним числом: Если менеджер изменит сумму в акте после того, как клиент ввел код, подпись станет недействительной. Чтобы этого избежать, всегда блокируйте документ 1С на редактирование после отправки ссылки (установка признака ТолькоПросмотр или смена статуса).
Перехват СМС-кода: Хотя риск невелик, для крупных сделок рекомендуется использовать усиленную неквалифицированную подпись (НЭП), которую можно выпустить облачно через специализированные сервисы (например, Sign.Me или Nopaper).
Отсутствие бумажного соглашения: Самая частая ошибка. Без первичного бумажного документа, в котором клиент разрешает использовать его номер телефона для ПЭП, логи 1С не будут иметь веса в суде.
Реализация ПЭП в 1С — это не только программирование HTTP-запросов, но и выстраивание комплексной системы безопасности. Проанализируйте свои бизнес-процессы: если ваши клиенты — это малый бизнес или физические лица, внедрение подписания через СМС или Telegram-ботов может сократить цикл сделки с нескольких дней до пары минут. Главное — помнить про обязательное предварительное соглашение и неизменность документа после его формирования.