Как реализовать проверку электронной подписи для выпуска серий продукции в 1С:УПП?

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

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

Организация процесса подтверждения качества

Для обеспечения надежной защиты мы предлагаем внедрить механизм «второго контура» безопасности. Суть метода заключается в создании цифрового следа для каждой серии, который невозможно подделать. Процесс выглядит следующим образом:

  1. Формирование XML-файла с ключевыми данными о серии (номер, дата выпуска, код препарата, статус).
  2. Подписание этого файла усиленной квалифицированной электронной подписью (УКЭП) ответственного сотрудника.
  3. Хранение подписанного файла и проверка его валидности при попытке создания документа Реализация товаров и услуг или при перемещении серии со склада карантина на склад готовой продукции.

Технические способы реализации подписания

Поскольку в 1С:УПП отсутствует встроенная современная подсистема ЭЦП (как в актуальных конфигурациях на базе БСП), нам необходимо интегрировать внешние инструменты криптографии.

Реализация через утилиту командной строки (Cryptcp)

Рассмотрим вариант с использованием утилиты cryptcp.exe от КриптоПро. Это решение удобно своей простотой интеграции, так как 1С может вызывать внешние процессы через ЗапуститьПриложение или ComОбъект.

Для реализации этого метода необходимо:

Пример логики запуска процесса через 1С:


Команда = "C:\Program Files\Crypto Pro\CSP\cryptcp.exe -signf -detached -cert " + ИмяСертификата + " " + ИмяФайлаXML;
ЗапуститьПриложение(Команда);
// Обработка кода возврата для проверки успешности операции

Коды возврата утилиты позволяют точно определить, была ли подпись наложена успешно. Для проверки подписи на стороне реализации используется аналогичный вызов с ключом -verify, который возвращает результат проверки целостности подписи и цепочки сертификатов.

Использование облачных крипто-сервисов

Более современным и изящным решением является использование облачных API для работы с подписью. Это избавляет от необходимости устанавливать криптопровайдеры на каждый сервер 1С и управлять их лицензиями. Такой подход позволяет:

Архитектура проверки в 1С

Независимо от выбранного способа подписания, алгоритм проверки при отгрузке должен быть встроен в проверку проведения документов. Проанализируем, как это сделать:

  1. В модуле объекта документа РеализацияТоваровУслуг или ЗаказПокупателя в процедуре ОбработкаПроведения добавьте проверку статуса серии.
  2. Система должна считывать XML-файл, привязанный к серии номенклатуры.
  3. Через вызов крипто-функции необходимо передать файл на валидацию. Если функция возвращает «Подпись верна» и данные в XML совпадают с данными серии, процесс проведения документа разрешается.

Важное замечание: Не забывайте про сроки действия сертификатов и необходимость использования меток доверенного времени (TSP). Если сертификат, которым была подписана серия год назад, сегодня отозван, важно иметь доказательство, что на момент подписания он был действителен.

Заключение и рекомендации

Мы рекомендуем начать с внедрения облачного сервиса или использования специализированных библиотек КриптоПро .NET через COM-интерфейс. Это позволит избежать лишних файлов на диске и обеспечит более высокую степень защиты данных в памяти 1С. Помните, что безопасность в фарм-производстве — это не только техническая реализация, но и строгий регламент контроля доступа к ключам ЭП, чтобы только «Уполномоченное лицо» имело возможность завизировать выпуск серии в продажу.

← На главную