Почему в 1С:Касса при отсутствии интернета возникает ошибка «Марка не найдена в ЧЗ» при проверке через ТС ПИоТ?

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

При внедрении разрешительного режима розничной продажи маркированного товара многие пользователи сталкиваются с неприятной ситуацией: при наличии стабильного интернет-соединения проверка кодов маркировки через технические средства проверки подлинности (ТС ПИоТ / модуль ЕСМ) проходит успешно, но как только доступ к сети пропадает, 1С:Касса или другие конфигурации на базе БПО блокируют продажу с сообщением: «Запрет продажи товара от ТС ПИоТ. По результатам проверки через ТС ПИоТ продажа этого товара запрещена. Марка не найдена в ЧЗ».

При этом прямое обращение программы к Локальному модулю «Честного знака» (ЛМ ЧЗ) без участия ТС ПИоТ продажу разрешает. Разберем по шагам, почему возникает эта коллизия, как устроена логика офлайн-проверки и каким образом устранить ошибку в рабочих базах.

В чем причина ошибки: разница между онлайн и офлайн логикой

Проанализируем техническую сторону взаимодействия 1С:Касса, клиентского модуля ТС ПИоТ (ЕСМ) и Локального модуля ГИС МТ (ЛМ ЧЗ):

  1. Онлайн-режим: ТС ПИоТ отправляет запрос на серверы «Честного знака». В ответ возвращается полный массив данных по марке, где параметры valid: true, verified: true, realizable: true и found: true однозначно подтверждают легитимность товара и разрешают его реализацию.
  2. Офлайн-режим (нет связи с ГИС МТ): ТС ПИоТ перенаправляет запрос к ЛМ ЧЗ через API /api/v1/cis/check. Локальный модуль хранит только базы заблокированных кодов («черные списки»). Если код не числится в черном списке, ЛМ ЧЗ возвращает ответ isBlocked: false.
  3. Формирование ответа модулем ЕСМ: Получив от ЛМ ЧЗ подтверждение отсутствия блокировки, служба ТС ПИоТ собирает итоговую структуру JSON для кассовой программы. Помимо служебных полей и флага isCheckedOffline: true, ЕСМ по умолчанию заполняет стандартные поля онлайн-протокола значениями false: found: false, realizable: false, valid: false, verified: false.
  4. Ошибка разбора в кассовом ПО: Исходные релизы конфигураций 1С обрабатывали флаг found: false по единому алгоритму для всех режимов. Программа трактовала это значение буквально: «марка отсутствует в базе ГИС МТ», игнорируя тот факт, что для офлайн-контекста отсутствие в локальной базе ЛМ ЧЗ означает как раз обратное — «марка не найдена в черном списке, продажа допустима».

Посмотрим на фрагмент структуры ответа, возвращаемого ТС ПИоТ при офлайн-проверке:


{
    "code": 0,
    "isCheckedOffline": true,
    "isBlocked": false,
    "found": false,
    "realizable": false,
    "valid": false,
    "verified": false
}

Пока кассовая программа не учитывает значение флага isCheckedOffline: true, наличие полей found: false и realizable: false приводит к жесткой блокировке пробития чека на стороне ККТ.

Способ 1. Установка официального патча фирмы 1С (основное решение)

Разработчики фирмы 1С признали наличие проблемы и скорректировали алгоритмы разбора ответа ТС ПИоТ в модулях интеграции с ГИС МТ и Библиотеке подключаемого оборудования (БПО). Исправление поставляется в виде расширения конфигурации (патча).

Выполним установку исправления по следующему алгоритму:

  1. Перейдем в раздел Администрирование → Обслуживание → Обновление программы.
  2. Проверим наличие включенной опции автоматической загрузки исправлений (патчей). Если интернет на кассе периодически присутствует, программа может загрузить патч автоматически при наличии действующей подписки на сопровождение.
  3. Если автоматическая загрузка отключена или касса работает в закрытом контуре, скачаем требуемый патч вручную с официального портала обновлений 1С для используемой версии 1С:Касса или соответствующей версии БПО.
  4. В окне Установка обновлений и исправлений (патчей) выберем скачанный архив и нажмем Установить.
  5. Перезапустим программу в режиме предприятия. В обновленной логике при получении статуса isCheckedOffline: true поля found, realizable и valid игнорируются, а разрешение на продажу базируется на статусе isBlocked: false.

Способ 2. Проверка работы служб и настроек интеграции с ТС ПИоТ

Если патч уже установлен, но офлайн-проверка по-прежнему дает сбой, проанализируем состояние системного окружения операционной системы:

  1. Проверка фоновых служб ЕСМ: Откроем оснастку служб Windows (services.msc) и убедимся, что служба ESM: Local Module Controller запущена. Если контроллер локального модуля завис или отключен, ТС ПИоТ физически не может передать проверочный запрос в ЛМ ЧЗ и сразу отдает в кассу отрицательный ответ.
  2. Проверка версий протокола: Убедимся, что версия установленного Локального модуля поддерживает протокол обмена 2.0. Несоответствие версий между модулем ЕСМ и ЛМ ЧЗ приводит к невозможности трансляции офлайн-запросов.
  3. Проверка дублирования процессов: В диспетчере задач проверим список активных процессов. При некорректном перезапуске служб в памяти могут оставаться дублирующие инстансы ТС ПИоТ, блокирующие локальный порт (по умолчанию 51401). При необходимости завершим зависшие процессы вручную и перезапустим службу ТС ПИоТ.
  4. Контроль сертификатов SSL/TLS: Поскольку обмен между 1С и модулем ПИоТ выполняется по протоколу HTTPS, в настройках подключения к ТС ПИоТ внутри 1С установим флаг Исключить проверку корневых сертификатов, если локальный сертификат безопасности ТС ПИоТ не интегрирован в доверенное хранилище Windows.

Способ 3. Оптимизация тайм-аутов при нестабильной связи

Рассмотрим ситуацию, когда интернет-соединение пропадает не полностью, а сопровождается потерей сетевых пакетов или сбоями DNS-серверов. В таких условиях ТС ПИоТ и кассовая программа продолжают ожидать онлайн-ответа от серверов ГИС МТ до истечения максимального времени ожидания (10 секунд и более).

Если общее время кассовой операции меньше суммарного времени сетевого ожидания, 1С прерывает операцию по тайм-ауту раньше, чем ТС ПИоТ успеет переключиться на резервный опрос Локального модуля. Для предотвращения таких зависаний рекомендуется в параметрах кассового узла и настройках драйвера торгового оборудования оптимизировать время ожидания ответа на команду проверки маркировки.

Временные обходные решения

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

  1. Переключение на прямое взаимодействие с ЛМ ЧЗ: В настройках разрешительного режима 1С временно отключим опцию использования ТС ПИоТ и переведем кассу на прямое обращение к Локальному модулю «Честного знака» по токену авторизации. В таком сценарии касса сама опрашивает ЛМ ЧЗ без посредничества ЕСМ и корректно интерпретирует ответ isBlocked: false.
  2. Откат версии ТС ПИоТ (ЕСМ): Если сбой проявился сразу после обновления дистрибутива ЕСМ (например, при переходе на релиз 1.6.4), временным решением может стать возврат на предшествующую стабильную подверсию модуля ЕСМ, формат структуры ответов которой поддерживался текущей установленной версией конфигурации.
← На главную