При внедрении обязательной маркировки товаров многие компании сталкиваются с архитектурным вопросом: как распределить работу с системой «Честный Знак» (ГИС МТ) между несколькими информационными базами. Классическая связка — это 1С:Управление торговлей (или УНФ) для оперативного контура и 1С:Бухгалтерия предприятия для регламентированного учета.
Часто возникает желание настроить прямой обмен с «Честным Знаком» в обеих базах одновременно. Однако специалисты (франчайзи) нередко утверждают, что работать можно только в одной базе. Разберемся подробно, так ли это, какие технические ограничения существуют и как их можно обойти, основываясь на опыте сообщества и технической документации.
Рассмотрим ситуацию, когда у нас есть две базы (БП и УТ), и мы хотим подключить обмен с ГИС МТ в обеих, используя одну и ту же электронную подпись (УКЭП) организации.
Главная техническая проблема кроется в механизме авторизации. Когда 1С обращается к серверам «Честного Знака», происходит следующая цепочка действий:
Если обе базы настроены на один и тот же сертификат, возникает конфликт сессий, который подробно описан участниками обсуждения. Разберем этот механизм.
Когда две базы «стучатся» одновременно:
Здесь возможны два сценария поведения API «Честного Знака», оба из которых приводят к ошибкам в работе:
Сценарий А (Сброс сессии): Выдача нового токена для Базы 2 делает недействительным токен, выданный Базе 1. В результате, когда в БП запустится следующее фоновое задание, оно получит отказ в доступе («Ошибка 401» или аналогичная), так как токен протух раньше времени.
Сценарий Б (Кэширование unitedToken): Начиная с определенных обновлений протокола (переход с JWT на unitedToken), наблюдается поведение, при котором сервер возвращает тот же самый токен, если он еще валиден. Однако 1С при получении токена рассчитывает время его жизни локально.
Разберем пример из практики:
Это приводит к нестабильной работе обменов, «красным» регламентным заданиям и необходимости постоянно перезапускать сеансы обмена вручную.
Если вам критически необходимо работать в двух базах одновременно, существует проверенное решение, которое позволяет обойти конфликт токенов.
Использование разных сертификатов.
Система маркировки привязывает сессию не к ИНН организации, а конкретно к пользователю (отпечатку сертификата). Чтобы развести потоки данных:
1С:Бухгалтерию на работу с основным сертификатом (например, директора).1С:Управление торговлей на работу с сертификатом ответственного сотрудника.В этом случае каждая база будет получать свой уникальный токен, и они перестанут «выбивать» друг друга из системы.
Даже если мы решим проблему с токенами, остается более серьезная проблема — работа с Электронным Документооборотом (ЭДО). Маркировка неразрывно связана с ЭДО, так как коды передаются через УПД (Универсальные передаточные документы).
Давайте проанализируем, что произойдет, если настроить получение документов ЭДО в обеих базах под одним профилем:
Когда поставщик отправляет вам УПД с кодами маркировки, этот документ попадает на сервер оператора ЭДО. Далее 1С запускает регламентное задание «Получить новые документы».
В итоге у вас получится «лоскутная» автоматизация: часть поступлений будет только в УТ, часть — только в БП. Это приведет к хаосу в учете НДС и складских остатков.
Основываясь на обсуждении и технических ограничениях, оптимальным подходом считается разделение зон ответственности. Не стоит пытаться дублировать функционал маркировки. Рассмотрим правильную схему:
Вариант 1: Оперативный контур — главный (Рекомендуется)
Вариант 2: Тестовый запуск
Автор темы упоминал желание «запустить в УТ, но если что-то пойдет не так — вернуть на БП». Для такой схемы:
Важно отметить техническое замечание касательно формата токенов. Ранее использовались классические JWT-токены, в которых зашит срок действия (expiration time). Их можно расшифровать и точно знать, когда токен протухнет.
Сейчас наблюдается переход на так называемые unitedToken (как в СУЗ — Станции Управления Заказами). Особенность их работы в том, что при актуализации токена сервер может возвращать предыдущий полученный токен с непонятным остаточным сроком годности, если запрос происходит в рамках определенного временного окна.
Это подтверждает тезис о том, что надеяться на корректную параллельную работу двух баз под одной учетной записью нельзя — рассинхронизация по времени жизни токена практически гарантирована.
Отвечая на вопрос автора: франчайзи был прав, предостерегая от одновременной работы, но не совсем точен в деталях.