Почему при подписании документов ЭПД разными пользователями выбирается чужой сертификат или возникает ошибка несоответствия МЧД?

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

При организации многопользовательской работы с электронными перевозочными документами (ЭПД: электронные транспортные накладные ЭТрН, электронные заказы-заявки ЭЗЗ) компании часто сталкиваются с ситуацией, когда несколько ответственных сотрудников подписывают титулы документов собственными электронными подписями физических лиц с применением машиночитаемых доверенностей (МЧД). На практике возникает сбой: первый пользователь подписывает документ успешно, а при попытке второго пользователя подписать следующий титул или другой документ система либо выдает ошибку о несоответствии подписи и МЧД, либо берет случайный сертификат из списка, либо требует подпись того сотрудника, который работал в базе последним. Разберем детально, почему так происходит и как устранить данное поведение системы.

Выясним техническую причину сбоя

Для понимания корня проблемы проанализируем, как устроен процесс формирования и отправки титула ЭПД в программах 1С:

  1. Рассинхронизация тела XML-файла и криптографического сертификата. Формат электронных перевозочных документов строго регламентирован. Блок сведений о лице, подписавшем документ (ФИО, должность, данные организации, а также реквизиты и идентификатор МЧД), сериализуется непосредственно в тело самого XML-файла титула до наложения электронной подписи. Если в процессе подготовки титула система заполнила блок данными одного пользователя, а на этапе подписания применили сертификат другого сотрудника, принимающая сторона (ГИС ЭПД или оператор ЭДО) бракует документ с ошибкой несоответствия реквизитов подписанта и открытого ключа сертификата.
  2. Особенности типового алгоритма библиотеки электронных документов (БЭД). В ряде версий БЭД алгоритм автоматического сопоставления при наличии нескольких сертификатов в учетной записи ЭДО обращается к первой попавшейся строке списка либо кэширует контекст сессии последнего успешного подписания. В результате система не определяет текущего авторизованного пользователя сеанса, а подставляет «залипший» сертификат.
  3. Использование серверного подписания. Если в параметрах криптографии включена опция выполнения операций на стороне сервера, диалоговое окно выбора сертификата на клиенте не открывается. Серверный вызов обращается к общему списку настроек и берет первый доступный сертификат, игнорируя то, кто именно инициировал операцию в интерфейсе.

Способ 1. Проверка и заполнение реквизита «Пользователь» в карточках сертификатов

Разберем базовую пользовательскую настройку, отсутствие которой часто приводит к хаотичному выбору ключей. Если сертификат добавлен в систему как общий, платформа не может однозначно определить его владельца в конкретном сеансе.

  1. Перейдем в раздел Администрирование → Настройки электронной подписи и шифрования → вкладка Сертификаты.
  2. Откроем карточку проблемного сертификата электронной подписи.
  3. Обратим внимание на реквизит Пользователь. Если в поле «Используют сертификат:» выбрано значение «Все пользователи» или список из нескольких человек, реквизит Пользователь остается пустым.
  4. Установим ограничение: привяжем каждый конкретный личный сертификат физического лица с МЧД строго к его учетной записи в 1С, указав конкретного пользователя информационной базы в данном поле.
  5. Проверим табличную часть «Сертификаты» в карточке Учетной записи ЭДО: убедимся, что там присутствуют все действующие сертификаты сотрудников с корректно привязанными МЧД.

Способ 2. Отключение серверного подписания и очистка кэша

Проанализируем режим наложения электронной подписи на рабочих местах:

  1. Откроем Настройки электронной подписи и шифрования, перейдем на вкладку Программы.
  2. Проверим статус параметра Подписывать на сервере. Если ключевые носители (токены) или сертификаты установлены локально на компьютерах сотрудников, снимем данный флаг. Это заставит систему обращаться к криптопровайдеру на клиенте и инициировать корректный выбор сертификата текущего рабочего места.
  3. При возникновении ситуации «залипания» предыдущего пользователя выполним очистку локального кэша конфигурации у пользователя, так как платформа может сохранять дескрипторы и кэшированные идентификаторы подписантов в рамках сеанса.

Способ 3. Установка официальных патчей и обновление конфигураций

Проблема некорректного подбора подписантов и разрыва связей титулов в ЭПД официально признана разработчиками 1С для ряда релизов линеек УТ 11, КА 2, ERP 2, УАТ и БП. Для их устранения выпущены специальные исправления.

  1. Проверим наличие и установим актуальные патчи для конфигураций. В частности, для «1С:Управление торговлей» и смежных систем критически важны патчи:
    • EF_00_00924378 (устраняет ошибку привязки и сопоставления титулов ЭПД);
    • EF_00_00927613_2;
    • EF_00_00924383.
  2. Если конфигурация давно не обновлялась (например, используется УТ релизов 11.5.22–11.5.27.70), обновим конфигурацию до более актуального релиза (например, 11.5.27.79 или выше), где библиотека БЭД содержит существенные доработки логики обмена с ГИС ЭПД.

Способ 4. Программная корректировка логики выбора сертификата через расширение

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

Посмотрим, какие изменения необходимо внести в алгоритмы общих модулей подсистемы интеграции с ГИС ЭПД:

  1. Переопределение алгоритма поиска сертификата. Вместо простой выборки первой строки из списка сертификатов учетной записи реализуем фильтрацию по текущему пользователю сеанса:
    
    ТекущийСотрудник = ПараметрыСеанса.ТекущийПользователь;
    // Выполняем сопоставление физического лица сертификата и МЧД с текущим пользователем
    
  2. Принудительный интерактивный выбор. Внедряем вызов стандартного окна выбора сертификата и доверенности перед генерацией данных титула, если для текущей организации найдено более одного подходящего сертификата.
  3. Переформирование XML-структуры. Если документ открывается на редактирование или подписание другим пользователем, перед отправкой криптографической команды программно запускаем процедуру перезаполнения узла подписанта в XML-данных титула. Это синхронизирует реквизиты представителя в файле с открытым ключом накладываемой подписи и предотвратит отказ со стороны валидатора ГИС ЭПД.
← На главную