При организации многопользовательской работы с электронными перевозочными документами (ЭПД: электронные транспортные накладные ЭТрН, электронные заказы-заявки ЭЗЗ) компании часто сталкиваются с ситуацией, когда несколько ответственных сотрудников подписывают титулы документов собственными электронными подписями физических лиц с применением машиночитаемых доверенностей (МЧД). На практике возникает сбой: первый пользователь подписывает документ успешно, а при попытке второго пользователя подписать следующий титул или другой документ система либо выдает ошибку о несоответствии подписи и МЧД, либо берет случайный сертификат из списка, либо требует подпись того сотрудника, который работал в базе последним. Разберем детально, почему так происходит и как устранить данное поведение системы.
Выясним техническую причину сбоя
Для понимания корня проблемы проанализируем, как устроен процесс формирования и отправки титула ЭПД в программах 1С:
Рассинхронизация тела XML-файла и криптографического сертификата. Формат электронных перевозочных документов строго регламентирован. Блок сведений о лице, подписавшем документ (ФИО, должность, данные организации, а также реквизиты и идентификатор МЧД), сериализуется непосредственно в тело самого XML-файла титула до наложения электронной подписи. Если в процессе подготовки титула система заполнила блок данными одного пользователя, а на этапе подписания применили сертификат другого сотрудника, принимающая сторона (ГИС ЭПД или оператор ЭДО) бракует документ с ошибкой несоответствия реквизитов подписанта и открытого ключа сертификата.
Особенности типового алгоритма библиотеки электронных документов (БЭД). В ряде версий БЭД алгоритм автоматического сопоставления при наличии нескольких сертификатов в учетной записи ЭДО обращается к первой попавшейся строке списка либо кэширует контекст сессии последнего успешного подписания. В результате система не определяет текущего авторизованного пользователя сеанса, а подставляет «залипший» сертификат.
Использование серверного подписания. Если в параметрах криптографии включена опция выполнения операций на стороне сервера, диалоговое окно выбора сертификата на клиенте не открывается. Серверный вызов обращается к общему списку настроек и берет первый доступный сертификат, игнорируя то, кто именно инициировал операцию в интерфейсе.
Способ 1. Проверка и заполнение реквизита «Пользователь» в карточках сертификатов
Разберем базовую пользовательскую настройку, отсутствие которой часто приводит к хаотичному выбору ключей. Если сертификат добавлен в систему как общий, платформа не может однозначно определить его владельца в конкретном сеансе.
Перейдем в раздел Администрирование → Настройки электронной подписи и шифрования → вкладка Сертификаты.
Откроем карточку проблемного сертификата электронной подписи.
Обратим внимание на реквизит Пользователь. Если в поле «Используют сертификат:» выбрано значение «Все пользователи» или список из нескольких человек, реквизит Пользователь остается пустым.
Установим ограничение: привяжем каждый конкретный личный сертификат физического лица с МЧД строго к его учетной записи в 1С, указав конкретного пользователя информационной базы в данном поле.
Проверим табличную часть «Сертификаты» в карточке Учетной записи ЭДО: убедимся, что там присутствуют все действующие сертификаты сотрудников с корректно привязанными МЧД.
Способ 2. Отключение серверного подписания и очистка кэша
Проанализируем режим наложения электронной подписи на рабочих местах:
Откроем Настройки электронной подписи и шифрования, перейдем на вкладку Программы.
Проверим статус параметра Подписывать на сервере. Если ключевые носители (токены) или сертификаты установлены локально на компьютерах сотрудников, снимем данный флаг. Это заставит систему обращаться к криптопровайдеру на клиенте и инициировать корректный выбор сертификата текущего рабочего места.
При возникновении ситуации «залипания» предыдущего пользователя выполним очистку локального кэша конфигурации у пользователя, так как платформа может сохранять дескрипторы и кэшированные идентификаторы подписантов в рамках сеанса.
Способ 3. Установка официальных патчей и обновление конфигураций
Проблема некорректного подбора подписантов и разрыва связей титулов в ЭПД официально признана разработчиками 1С для ряда релизов линеек УТ 11, КА 2, ERP 2, УАТ и БП. Для их устранения выпущены специальные исправления.
Проверим наличие и установим актуальные патчи для конфигураций. В частности, для «1С:Управление торговлей» и смежных систем критически важны патчи:
EF_00_00924378 (устраняет ошибку привязки и сопоставления титулов ЭПД);
EF_00_00927613_2;
EF_00_00924383.
Если конфигурация давно не обновлялась (например, используется УТ релизов 11.5.22–11.5.27.70), обновим конфигурацию до более актуального релиза (например, 11.5.27.79 или выше), где библиотека БЭД содержит существенные доработки логики обмена с ГИС ЭПД.
Способ 4. Программная корректировка логики выбора сертификата через расширение
Если обновление конфигурации откладывается, а патчи не полностью решают специфику распределения ролей, разберем суть программного исправления с помощью расширения конфигурации.
Посмотрим, какие изменения необходимо внести в алгоритмы общих модулей подсистемы интеграции с ГИС ЭПД:
Переопределение алгоритма поиска сертификата. Вместо простой выборки первой строки из списка сертификатов учетной записи реализуем фильтрацию по текущему пользователю сеанса:
ТекущийСотрудник = ПараметрыСеанса.ТекущийПользователь;
// Выполняем сопоставление физического лица сертификата и МЧД с текущим пользователем
Принудительный интерактивный выбор. Внедряем вызов стандартного окна выбора сертификата и доверенности перед генерацией данных титула, если для текущей организации найдено более одного подходящего сертификата.
Переформирование XML-структуры. Если документ открывается на редактирование или подписание другим пользователем, перед отправкой криптографической команды программно запускаем процедуру перезаполнения узла подписанта в XML-данных титула. Это синхронизирует реквизиты представителя в файле с открытым ключом накладываемой подписи и предотвратит отказ со стороны валидатора ГИС ЭПД.