Проблема, когда при выборе безналичного расчета в режиме Рабочего места кассира (РМК) система «проскакивает» обращение к терминалу эквайринга и моментально закрывает чек как наличный, является одной из самых коварных. Она носит «плавающий» характер, что затрудняет диагностику. В этой статье мы подробно разберем, почему 1С может игнорировать подключенный терминал и как заставить систему работать корректно.
Первым делом нам необходимо проверить, как настроены способы оплаты в самой информационной базе. Разберем ситуацию: если в системе создано несколько элементов справочника ВидыОплаты с типом «Платежная карта», 1С может запутаться.
Проанализируем цепочку настроек:
ЭквайринговыеТерминалы. Если там не указано конкретное оборудование (драйвер), 1С воспримет оплату картой как «ручной эквайринг» (когда терминал не интегрирован). В этом случае программа просто фиксирует факт оплаты, не посылая сигнал на устройство, и пробивает чек.Важный момент: если в РМК кассир выбирает оплату, которая не привязана к физическому терминалу в настройках 1С, система логично решит, что терминал автономный, и закроет чек по типу оплаты «Безналичные» без активации устройства. Но из-за ошибок в сопоставлении в драйвер ККТ может уйти команда на закрытие чека по первому доступному индексу (часто это наличные).
В 1С:Розница настройки торгового оборудования и интерфейса РМК часто сохраняются в локальном кэше. Если произошел скачок напряжения или некорректное завершение сеанса, 1С может «потерять» связь между рабочим местом и драйвером эквайринга.
Рассмотрим алгоритм очистки и перенастройки:
%AppData%\Local\1C\1Cv8 и %AppData%\Roaming\1C\1Cv8).НастройкиРМК. Убедимся, что в списке доступных видов оплат для этого интерфейса нет дублей.Ситуация, описанная в теме (использование драйвера Атол 10.4), указывает на возможную несовместимость версий. Библиотека подключаемого оборудования (БПО), интегрированная в вашу 1С:Розница, должна поддерживать функции конкретной версии драйвера ККТ.
Выясним причину через лог-файлы. Драйвер АТОЛ 10-й серии ведет подробный лог (обычно находится в %AppData%\Roaming\Atol\drivers10\logs). Нам нужно найти момент пробития «неправильного» чека и посмотреть, какая команда пришла от 1С. Если в логе зафиксирована команда CashPayment вместо NonCashPayment, значит, проблема внутри кода 1С или БПО.
Разберем пример кода, который отвечает за передачу типов оплаты в драйвер (условно):
// Пример логики формирования оплаты в БПО
ОбъектДрайвера.ТипОплаты = 1; // 0 - наличные, 1 - электронные
Если ЭквайрингПодключен Тогда
Результат = ЭквайринговыйТерминал.Оплатить(СуммаЧека);
Если Не Результат Тогда
Возврат; // Остановка печати чека
КонецЕсли;
КонецЕсли;
Если ЭквайрингПодключен возвращает Ложь из-за ошибки инициализации COM-объекта банковской библиотеки (например, для Русского Стандарта или Сбера), 1С может пропустить блок активации терминала и перейти сразу к фискализации чека. При этом, если в коде нет жесткой проверки, чек уйдет на ККТ с типом оплаты по умолчанию.
Иногда терминал просто не успевает ответить 1С. Посмотрим на параметры подключения эквайринга. В настройках оборудования в 1С есть поле «Тайм-аут» (в секундах). Для современных терминалов рекомендуется устанавливать значение не менее 60–120 секунд. Если терминал «заснул», а 1С ждет ответ всего 30 секунд, система может разорвать соединение и, в зависимости от логики обработки ошибок в вашем релизе, предложить закрыть чек наличными.
Также проанализируем права доступа Windows. Программное обеспечение банка (например, RS-Pos или Sberbank) должно иметь права на запись в свою рабочую директорию. Если прав недостаточно, драйвер банка может «молча» падать, а 1С будет интерпретировать это как отсутствие необходимости в интеграции.
С переходом на ФФД 1.2 изменились требования к передаче данных о маркированных товарах и типах оплат. Рассмотрим ситуацию с аппаратом Атол 22Ф. Если прошивка аппарата старая, а драйвер 10.4 пытается отправить команду в формате нового ФФД, касса может некорректно сопоставить типы платежей. В ФФД 1.05 оплата называлась «Электронными», в ФФД 1.2 — «Безналичными». Несоответствие этих индексов в таблице оплат ККТ приводит к тому, что платеж «падает» на первый индекс — Наличные.
Рекомендуется:
Не стоит исключать и простейшую причину. В настройках Профиля РМК часто назначены горячие клавиши. Например, клавиша Enter или Пробел может быть назначена на действие «Оплата без сдачи» (что подразумевает наличные). Если кассир привык быстро нажимать клавиши, он может случайно инициировать быстрый наличный расчет до того, как выберет «Платежную карту».
Проанализируем настройки:
Чтобы окончательно выяснить причину, когда ошибка повторится, выполните следующие шаги:
PaymentType пришел в XML-пакете от 1С на фискализацию.Если вы видите, что 1С отправляет Type="1" (наличные), хотя кассир утверждает, что выбирал карту — значит, проблема в сопоставлении видов оплат в справочниках или в ошибке кэша. Если же 1С отправляет Type="2", а касса печатает «Наличные» — проблема в прошивке или таблицах типов оплат в самой ККТ.
Резюмируем: для стабильной работы связки 1С:Розница + АТОЛ + Эквайринг критически важно соблюдать единство версий (БПО + Драйвер + Прошивка) и исключать дублирование настроек в справочниках видов оплат.