Касса долго проверяет марку: как изменить таймаут проверки КМ

Кассир сканирует код, касса думает и выдаёт отказ. Товар нормальный, интернет есть, но проверка не успела уложиться в отведённое время.

Это типичная ситуация на медленном канале связи и на слабых компьютерах. Время проверки задаётся параметром, и его можно увеличить.

Два параметра и их значения по умолчанию

В модуле ЕСМ за это отвечают два таймаута.

ПараметрПо умолчаниюПредел
cdnCodesCheckTimeout — время на проверку кода онлайн1500 мс (1,5 с)30 000 мс (30 с)
cdnHealthCheckTimeout — время на проверку доступности площадки2000 мс (2 с)10 000 мс (рекомендуемый)

Значения по умолчанию задаются онлайн-конфигурацией ЦРПТ, то есть приходят снаружи, а не зашиты в модуль.

Первый параметр — тот, что чаще всего и нужен. Полторы секунды на ответ — немного, если канал загружен или нестабилен.

Раздел «Маркировка» в «Тест драйвера ККТ» с полем «Таймаут проверки КМ»
Поле «Таймаут проверки КМ (мс)» в разделе «Маркировка» — тот же параметр, что правится запросом к модулю

Второй отвечает за проверку самих площадок. Модуль перед обращением убеждается, что узел жив; если этот шаг не успевает, он переходит к следующему узлу, и на это тоже уходит время.

Сразу о плате за увеличение

Увеличение таймаута не ускоряет проверку. Оно даёт ей больше времени на то, чтобы завершиться.

Это значит, что каждая позиция в чеке может обрабатываться дольше. Поставив 30 секунд, вы почти гарантированно получите ответ — но кассир будет ждать до тридцати секунд на каждом коде, который не проходит с первого раза. Очередь этого не оценит.

Разумный подход — увеличивать постепенно. Начните с 4000 мс: этого хватает в большинстве случаев с медленным каналом. Если не помогло, проблема, скорее всего, не в таймауте.

Как изменить: Windows

Настройка меняется HTTP-запросом к модулю. Понадобится заводской номер кассы — он же идентификатор экземпляра ЕСМ.

Откройте PowerShell (проще всего через поиск в панели задач) и выполните запрос, подставив номер кассы вместо <id>:

$response = Invoke-WebRequest -Uri "http://127.0.0.1:51077/api/v1/settings/<id>" `
    -Method Put `
    -ContentType "application/json" `
    -Body "{`"allowRemoteConnection`":true,`"gismtAddress`":`"https://ts-reg.crpt.ru:19100`",`"cdnCodesCheckTimeout`":4000,`"cdnHealthCheckTimeout`":3000}"

Здесь выставлено 4000 мс на проверку кода и 3000 мс на проверку площадки — меняйте на нужные.

Осторожно с переносами строк. При копировании в PowerShell разрывы в неположенном месте ломают команду: интерпретатор принимает часть параметров за отдельную команду и возвращает ошибку «Некорректное тело запроса». Если запрос не отработал, первым делом проверьте, что он вставился одной конструкцией.

Как изменить: Linux

То же самое через curl:

curl --location --request PUT 'http://127.0.0.1:51077/api/v1/settings/<id>' --header 'Content-Type: application/json' --data '{"allowRemoteConnection":true,"gismtAddress":"https://ts-reg.crpt.ru:19100","cdnCodesCheckTimeout":4000,"cdnHealthCheckTimeout":3000}'

Если у вас накопитель МГМ

Адрес системы маркировки в запросе будет другим. Вместо ts-reg.crpt.ru указывается cdn01.am.crptech.ru, порт тот же:

curl --location --request PUT 'http://127.0.0.1:51077/api/v1/settings/<id>' --header 'Content-Type: application/json' --data '{"allowRemoteConnection":true,"gismtAddress":"https://cdn01.am.crptech.ru:19100","cdnCodesCheckTimeout":4000,"cdnHealthCheckTimeout":3000}'

Перепутать адреса нельзя: для обычного накопителя и для МГМ они разные, и запрос с чужим адресом сломает работающую настройку.

Оговорка, о которой легко забыть

Запрос выполняется методом PUT, а PUT заменяет настройки целиком. Все необязательные параметры, которые вы не передали, сбрасываются к значениям по умолчанию.

Практический вывод: передавайте в запросе весь набор, а не только тот параметр, который меняете. Именно поэтому в примерах выше присутствуют allowRemoteConnection и gismtAddress — без них они вернутся к исходным значениям, и адрес системы маркировки может слететь.

Что означают ответы

КодЧто произошло
200Настройки сохранены, тело ответа пустое
400Некорректное тело запроса или пустой идентификатор. Код 1025 внутри означает недопустимое значение параметра
500Внутренняя ошибка модуля

Пустой ответ при коде 200 — это норма, а не признак того, что запрос не сработал.

На смарт-терминалах Sigma проще

Там для этого есть интерфейс. В приложении ЕСМ рядом с полем «Таймаут проверки марки» находится кнопка «Настроить», значение меняется шагом в полсекунды.

Рекомендуемое время проверки там же и указано — 1,5 секунды, то есть то же самое значение по умолчанию.

Когда таймаут не поможет

Увеличивать его имеет смысл, только если проверка иногда проходит. Если она не проходит никогда, дело в другом:

  • Ошибка 514 — не работают оба пути проверки сразу, разбор здесь.
  • Закрытые адреса ЦРПТ на межсетевом экране. Сколько времени ни давай, до заблокированного узла запрос не дойдёт.
  • Параллельная проверка и в ОИСМ, и через ТС ПИоТ — она даёт плавающую ошибку 407, которая лечится не таймаутом, а последовательным порядком обращений.
  • Локальный модуль не инициализирован — офлайн-путь не работает, и вся нагрузка ложится на онлайн. Статус проверяется в самом ЛМ ЧЗ.

Частые вопросы

Где взять идентификатор экземпляра? Это заводской номер кассы, на которую зарегистрирован модуль. Виден в блоке «Информация о кассе» в окне ЕСМ, а также в сервисной информации драйвера и на корпусе аппарата.

Нужно ли перезапускать модуль после изменения? Нет, настройка применяется сразу.

Можно поставить сразу максимум — 30 секунд? Технически да, практически не стоит. Вы получите кассу, которая на каждом проблемном коде замирает на полминуты.

Изменится ли скорость офлайн-проверки? Нет. Эти параметры относятся к обращениям в сеть, локальная база отвечает мгновенно.

Настройка слетает после обновления модуля. Проверьте, не выполнялся ли повторно PUT-запрос без полного набора параметров — он сбрасывает всё, что в нём не указано.

Коротко

Время на онлайн-проверку кода по умолчанию — 1,5 секунды, максимум 30. Меняется PUT-запросом на 127.0.0.1:51077/api/v1/settings/ с заводским номером кассы, из PowerShell или curl. Разумное значение для медленного канала — 4000 мс; ставить максимум не стоит, потому что кассир будет ждать это время на каждом проблемном коде. Главная тонкость: PUT сбрасывает всё, что в запросе не передано, поэтому отправлять нужно полный набор параметров вместе с адресом системы маркировки.


Материал носит информационный характер. Сайт atoldriver.ru не является представительством компании АТОЛ или АО «ЕСП» и не оказывает услуг по обслуживанию оборудования.