При внедрении разрешительного режима розничной продажи маркированного товара многие пользователи сталкиваются с неприятной ситуацией: при наличии стабильного интернет-соединения проверка кодов маркировки через технические средства проверки подлинности (ТС ПИоТ / модуль ЕСМ) проходит успешно, но как только доступ к сети пропадает, 1С:Касса или другие конфигурации на базе БПО блокируют продажу с сообщением: «Запрет продажи товара от ТС ПИоТ. По результатам проверки через ТС ПИоТ продажа этого товара запрещена. Марка не найдена в ЧЗ».
При этом прямое обращение программы к Локальному модулю «Честного знака» (ЛМ ЧЗ) без участия ТС ПИоТ продажу разрешает. Разберем по шагам, почему возникает эта коллизия, как устроена логика офлайн-проверки и каким образом устранить ошибку в рабочих базах.
Проанализируем техническую сторону взаимодействия 1С:Касса, клиентского модуля ТС ПИоТ (ЕСМ) и Локального модуля ГИС МТ (ЛМ ЧЗ):
valid: true, verified: true, realizable: true и found: true однозначно подтверждают легитимность товара и разрешают его реализацию./api/v1/cis/check. Локальный модуль хранит только базы заблокированных кодов («черные списки»). Если код не числится в черном списке, ЛМ ЧЗ возвращает ответ isBlocked: false.isCheckedOffline: true, ЕСМ по умолчанию заполняет стандартные поля онлайн-протокола значениями false: found: false, realizable: false, valid: false, verified: false.found: false по единому алгоритму для всех режимов. Программа трактовала это значение буквально: «марка отсутствует в базе ГИС МТ», игнорируя тот факт, что для офлайн-контекста отсутствие в локальной базе ЛМ ЧЗ означает как раз обратное — «марка не найдена в черном списке, продажа допустима».Посмотрим на фрагмент структуры ответа, возвращаемого ТС ПИоТ при офлайн-проверке:
{
"code": 0,
"isCheckedOffline": true,
"isBlocked": false,
"found": false,
"realizable": false,
"valid": false,
"verified": false
}
Пока кассовая программа не учитывает значение флага isCheckedOffline: true, наличие полей found: false и realizable: false приводит к жесткой блокировке пробития чека на стороне ККТ.
Разработчики фирмы 1С признали наличие проблемы и скорректировали алгоритмы разбора ответа ТС ПИоТ в модулях интеграции с ГИС МТ и Библиотеке подключаемого оборудования (БПО). Исправление поставляется в виде расширения конфигурации (патча).
Выполним установку исправления по следующему алгоритму:
1С:Касса или соответствующей версии БПО.isCheckedOffline: true поля found, realizable и valid игнорируются, а разрешение на продажу базируется на статусе isBlocked: false.Если патч уже установлен, но офлайн-проверка по-прежнему дает сбой, проанализируем состояние системного окружения операционной системы:
services.msc) и убедимся, что служба ESM: Local Module Controller запущена. Если контроллер локального модуля завис или отключен, ТС ПИоТ физически не может передать проверочный запрос в ЛМ ЧЗ и сразу отдает в кассу отрицательный ответ.Рассмотрим ситуацию, когда интернет-соединение пропадает не полностью, а сопровождается потерей сетевых пакетов или сбоями DNS-серверов. В таких условиях ТС ПИоТ и кассовая программа продолжают ожидать онлайн-ответа от серверов ГИС МТ до истечения максимального времени ожидания (10 секунд и более).
Если общее время кассовой операции меньше суммарного времени сетевого ожидания, 1С прерывает операцию по тайм-ауту раньше, чем ТС ПИоТ успеет переключиться на резервный опрос Локального модуля. Для предотвращения таких зависаний рекомендуется в параметрах кассового узла и настройках драйвера торгового оборудования оптимизировать время ожидания ответа на команду проверки маркировки.
Если торговую точку необходимо оперативно запустить в работу до применения официального патча 1С, рассмотрим альтернативные варианты действий:
isBlocked: false.