Почему при оплате картой в 1С:Розница в чеке не числится оплата и как решить эту проблему

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

Каждый технический специалист, обслуживающий розничные точки продаж, рано или поздно сталкивается с крайне неприятной «плавающей» проблемой: покупатель прикладывает карту к терминалу, банк успешно списывает средства (клиенту приходит СМС, терминал печатает слип-чек), но в программе 1С:Розница чек ККМ либо не пробивается вовсе, либо закрывается без фиксации безналичной оплаты. Самое критичное в этой ситуации — непредсказуемость сбоя. В один день все может работать идеально, а в другой — несколько чеков уходят в ОФД с нулевой безналичной оплатой или регистрируются как наличный расчет.

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

Выясняем причины: почему проблема носит «плавающий» характер

Для того чтобы решить проблему, нам необходимо проанализировать внутренние механизмы взаимодействия конфигурации 1С:Розница, СУБД, драйвера торгового оборудования и самого банковского терминала. Источником проблемы практически никогда не является сам физический пин-пад. Сбой происходит на стыке программного обмена данными. Проанализировав логи и поведение системы, можно выделить две ключевые причины возникновения этой аномалии.

1. Блокировки СУБД при фоновом обмене РИБ (Распределенной информационной базы)

В сетевом ритейле кассовые узлы часто работают в локальных базах, которые синхронизируются с центральным сервером через механизм РИБ. Обмен обычно настраивается в автоматическом режиме с высокой частотой (например, каждые 5-10 минут). Проанализировав журнал регистрации 1С в моменты сбоев, мы увидим четкую закономерность: транзакция по чеку зависает ровно в ту секунду, когда запускается регламентное задание обмена данными.

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

2. Сбои при печати банковского слип-чека и ошибки драйвера (Сбербанк, АТОЛ и др.)

Вторая распространенная причина кроется в цепочке команд: 1С -> Терминал (списание средств) -> 1С -> Фискальный регистратор (печать слипа) -> Фискальный регистратор (печать фискального чека).

Если на этапе печати банковского слип-чека ККТ выдает малейшую ошибку (например, кратковременная потеря связи по USB-порту, датчик сообщает о скором окончании бумаги, или возвращается таймаут ответа ККТ), то драйвер эквайринга (например, интеграционная компонента Сбербанка) возвращает в 1С ошибку печати. Несмотря на то, что деньги уже списаны с карты клиента, 1С трактует сбой печати как общую ошибку операции и прерывает закрытие чека, очищая табличную часть Оплата. Из-за этого чек либо не проводится, либо, при определенных настройках интеграции, проводится по умолчанию как наличный расчет, чтобы не блокировать очередь.

---

Как решить проблему на уровне администратора (Системные настройки)

Рассмотрим комплекс мер, которые необходимо предпринять администратору системы для полного исключения подобных сбоев в будущем.

Шаг 1. Оптимизация расписания обмена РИБ

Если кассовые компьютеры не обладают высокой производительностью, фоновый обмен данными во время работы кассира гарантированно будет вызывать микрозависания драйверов ККТ и эквайринга. Нам необходимо скорректировать расписание регламентного задания:

  1. Перейдем в раздел Администрирование — Обслуживание — Регламентные и фоновые задания.
  2. Найдем в списке задание Выполнить обмен данными по сетевому кассовому узлу (название может незначительно отличаться в зависимости от версии конфигурации).
  3. Откроем настройки расписания и отключим ежеминутный обмен в пиковые часы продаж. Рекомендуется настроить обмен в обеденный перерыв или осуществлять его вручную при закрытии кассовой смены.
  4. Если частый обмен критически важен, необходимо увеличить таймаут ожидания блокировок в параметрах базы данных SQL или в настройках файловой базы, чтобы транзакции 1С успевали дождаться освобождения таблиц.

Шаг 2. Обновление и принудительная инициализация драйверов эквайринга

Устаревшие версии компонент интеграции эквайринга часто некорректно обрабатывают ошибки связи. Рекомендуется обновить драйверы оборудования:

  1. Перейдем в меню Администрирование — Подключаемое оборудование.
  2. Откроем карточку нашего эквайрингового терминала.
  3. Для сброса возможных системных зависаний кэша драйвера выполним простую процедуру: нажмем кнопку Параметры подключения, убедимся, что тест устройства проходит успешно, и, ничего не изменяя, нажмем кнопку Записать и закрыть. Эта простая операция заставляет платформу перезаписать настройки в реестре и заново инициализировать DLL-компоненту драйвера в текущем сеансе Windows.
  4. Если используется терминал Сбербанка, обновите библиотеку интеграции в каталоге платформы до актуальной версии (не ниже 2.7.5.x).

Шаг 3. Изменение шаблона печати слип-чека в РМК

Чтобы снизить нагрузку на ККТ при печати фискального документа, настроим формат вывода слипов:

  1. В настройках рабочего места кассира (РМК) найдем раздел настроек печати чеков.
  2. Изменим вид банковского слип-чека со значения «Короткий» на «Обычный» (или наоборот, в зависимости от модели ККТ). Некоторые модели фискальных регистраторов некорректно обрабатывают укороченные шаблоны, генерируя внутреннюю ошибку ККТ, что приводит к прерыванию транзакции в 1С.

---

Инструкции для кассира: что делать, если сбой произошел «здесь и сейчас»

Когда сбой уже произошел — деньги с карты клиента списались, терминал выдал чек об успешной транзакции, но в 1С чек ККМ остался висеть непроведенным или провелся без оплаты — кассиру нужно действовать оперативно, чтобы не задерживать покупателя и не совершать повторных списаний средств. Разберем три основных сценария решения проблемы.

Вариант А. Пробитие зависшего чека вручную (если документ создан, но не проведен)

Если в журнале документов Чек ККМ созданный документ остался в статусе «не проведен», но при этом на вкладке Оплата зафиксирована строка «Платежная карта» со ссылочным номером транзакции (RRN) из банка, мы можем провести и пробить его в обход интерфейса РМК:

  1. Выйдем из режима РМК в главное меню программы (потребуются права старшего кассира или администратора).
  2. Перейдем в список документов Чеки ККМ.
  3. Найдем наш зависший документ и откроем его двойным кликом.
  4. В верхней панели документа нажмем кнопку Провести (синяя галочка).
  5. После того как документ успешно проведется в базе данных, на форме активируется кнопка Пробить чек. Нажмем её — фискальный регистратор распечатает корректный чек с безналичным типом оплаты, и данные корректно уйдут в ОФД.

Вариант Б. Обходной путь через режим «Без подключения к системе»

Если в интерфейсе РМК система упорно отказывается проводить оплату, ссылаясь на ошибку терминала, но деньги с клиента уже списаны, мы можем временно перевести терминал в автономный режим:

  1. Администратор или старший кассир переходит в Администрирование — Подключаемое оборудование — Эквайринговые терминалы.
  2. Открывает карточку используемого терминала, нажимает кнопку Разрешить редактирование реквизитов и устанавливает флаг Использовать без подключения к системе. Сохраняет настройки.
  3. Кассир возвращается к зависшему чеку в РМК и снова нажимает кнопку Оплата картой. Так как терминал теперь переведен в «ручной» режим, 1С не будет физически посылать сигнал на пин-пад и списывать деньги повторно. Программа лишь выведет на экран диалоговое окно: «Оплата на терминале прошла успешно?».
  4. Кассир нажимает кнопку Да. 1С успешно закрывает чек, фиксирует оплату как безналичную и отправляет правильные данные в ОФД.
  5. Важно: сразу после проведения этого чека необходимо вернуться в настройки оборудования и снять флаг «Использовать без подключения к системе», чтобы вернуть терминал в автоматический режим для обслуживания следующих покупателей.

Вариант В. Оформление чека коррекции (если смена уже закрыта)

Если расхождение (деньги на расчетный счет пришли, а чек в 1С ушел как наличный или вообще отсутствует в ОФД) было обнаружено уже в конце смены при сверке итогов, корректировать старые чеки ККМ нельзя. В таком случае необходимо сформировать чек коррекции:

  1. Перейдем в раздел Продажи — Чек коррекции.
  2. Создадим новый документ с признаком расчета Приход.
  3. В поле «Тип оплаты» укажем Безналичные и введем сумму нефискализированной безналичной транзакции.
  4. Пробьем чек коррекции. Это позволит выровнять баланс кассы и убережет организацию от штрафов со стороны налоговой инспекции за неприменение ККТ при безналичных расчетах.
← На главную