Каждый технический специалист, обслуживающий розничные точки продаж, рано или поздно сталкивается с крайне неприятной «плавающей» проблемой: покупатель прикладывает карту к терминалу, банк успешно списывает средства (клиенту приходит СМС, терминал печатает слип-чек), но в программе 1С:Розница чек ККМ либо не пробивается вовсе, либо закрывается без фиксации безналичной оплаты. Самое критичное в этой ситуации — непредсказуемость сбоя. В один день все может работать идеально, а в другой — несколько чеков уходят в ОФД с нулевой безналичной оплатой или регистрируются как наличный расчет.
В этой статье мы подробно разберем, почему возникает этот сбой, как с этим связаны фоновые процессы платформы 1С, и предоставим пошаговые инструкции по устранению проблемы как для технических специалистов, так и для кассиров на рабочем месте.
Для того чтобы решить проблему, нам необходимо проанализировать внутренние механизмы взаимодействия конфигурации 1С:Розница, СУБД, драйвера торгового оборудования и самого банковского терминала. Источником проблемы практически никогда не является сам физический пин-пад. Сбой происходит на стыке программного обмена данными. Проанализировав логи и поведение системы, можно выделить две ключевые причины возникновения этой аномалии.
1. Блокировки СУБД при фоновом обмене РИБ (Распределенной информационной базы)
В сетевом ритейле кассовые узлы часто работают в локальных базах, которые синхронизируются с центральным сервером через механизм РИБ. Обмен обычно настраивается в автоматическом режиме с высокой частотой (например, каждые 5-10 минут). Проанализировав журнал регистрации 1С в моменты сбоев, мы увидим четкую закономерность: транзакция по чеку зависает ровно в ту секунду, когда запускается регламентное задание обмена данными.
В момент старта обмена платформа 1С накладывает транзакционные блокировки на таблицы базы данных, включая регистры накопления денежных средств, справочники и документы Документ.ЧекККМ. Если в этот микросекундный интервал банковский терминал отправляет в 1С успешный ответ об авторизации платежа, система пытается записать эти данные в базу. Из-за возникшей блокировки СУБД транзакция записи «повисает» в ожидании, превышает таймаут и аварийно завершается (откатывается). Терминал считает операцию завершенной (деньги списаны), а 1С откатывает изменения в документе до момента оплаты.
2. Сбои при печати банковского слип-чека и ошибки драйвера (Сбербанк, АТОЛ и др.)
Вторая распространенная причина кроется в цепочке команд: 1С -> Терминал (списание средств) -> 1С -> Фискальный регистратор (печать слипа) -> Фискальный регистратор (печать фискального чека).
Если на этапе печати банковского слип-чека ККТ выдает малейшую ошибку (например, кратковременная потеря связи по USB-порту, датчик сообщает о скором окончании бумаги, или возвращается таймаут ответа ККТ), то драйвер эквайринга (например, интеграционная компонента Сбербанка) возвращает в 1С ошибку печати. Несмотря на то, что деньги уже списаны с карты клиента, 1С трактует сбой печати как общую ошибку операции и прерывает закрытие чека, очищая табличную часть Оплата. Из-за этого чек либо не проводится, либо, при определенных настройках интеграции, проводится по умолчанию как наличный расчет, чтобы не блокировать очередь.
---
Рассмотрим комплекс мер, которые необходимо предпринять администратору системы для полного исключения подобных сбоев в будущем.
Если кассовые компьютеры не обладают высокой производительностью, фоновый обмен данными во время работы кассира гарантированно будет вызывать микрозависания драйверов ККТ и эквайринга. Нам необходимо скорректировать расписание регламентного задания:
Выполнить обмен данными по сетевому кассовому узлу (название может незначительно отличаться в зависимости от версии конфигурации).Устаревшие версии компонент интеграции эквайринга часто некорректно обрабатывают ошибки связи. Рекомендуется обновить драйверы оборудования:
Чтобы снизить нагрузку на ККТ при печати фискального документа, настроим формат вывода слипов:
---
Когда сбой уже произошел — деньги с карты клиента списались, терминал выдал чек об успешной транзакции, но в 1С чек ККМ остался висеть непроведенным или провелся без оплаты — кассиру нужно действовать оперативно, чтобы не задерживать покупателя и не совершать повторных списаний средств. Разберем три основных сценария решения проблемы.
Если в журнале документов Чек ККМ созданный документ остался в статусе «не проведен», но при этом на вкладке Оплата зафиксирована строка «Платежная карта» со ссылочным номером транзакции (RRN) из банка, мы можем провести и пробить его в обход интерфейса РМК:
Если в интерфейсе РМК система упорно отказывается проводить оплату, ссылаясь на ошибку терминала, но деньги с клиента уже списаны, мы можем временно перевести терминал в автономный режим:
Разрешить редактирование реквизитов и устанавливает флаг Использовать без подключения к системе. Сохраняет настройки.Если расхождение (деньги на расчетный счет пришли, а чек в 1С ушел как наличный или вообще отсутствует в ОФД) было обнаружено уже в конце смены при сверке итогов, корректировать старые чеки ККМ нельзя. В таком случае необходимо сформировать чек коррекции: