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

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

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

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

Физика процесса: почему происходит автоматическая отмена платежа?

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

  1. Авторизация и холдирование средств. Когда кассир нажимает кнопку «Оплата картой» в РМК, 1С посылает команду на терминал эквайринга. Терминал связывается с банком-эквайером, проверяет баланс карты клиента и, при достаточном количестве средств, временно блокирует (холдирует) нужную сумму на счете покупателя. Терминал печатает первый слип-чек с подтверждением «Одобрено» (или «Успешно»).
  2. Финансовое подтверждение (фискализация). Сразу после успешного резервирования средств 1С отправляет команду на фискальный регистратор (ККТ) для печати кассового онлайн-чека с QR-кодом (в соответствии с требованиями 54-ФЗ). Как только ККТ успешно завершает печать фискального чека, «1С:Розница» отправляет драйверу эквайринга финальный сигнал подтверждения операции. Получив этот сигнал, терминал завершает транзакцию, и деньги окончательно списываются со счета покупателя.

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

Согласно жестким стандартам безопасности платежных систем и требованиям фискального законодательства, нельзя списать деньги с клиента, не выдав ему фискальный кассовый чек. Драйвер эквайринга (например, популярный INPAS DualConnector, используемый Т-Банком/Тинькофф) расценивает отсутствие фискального чека как критическую ошибку и автоматически отправляет на хост банка команду отмены транзакции (Void/Reversal). На терминале распечатывается короткий чек «Авто-отмена», а заблокированные средства мгновенно возвращаются на карту покупателю.

Как настроить систему для предотвращения автоотмены платежей?

Рассмотрим пошагово три основных метода устранения этой проблемы путем корректировки настроек «1С:Розница» и драйверов оборудования.

Шаг 1. Отключение или увеличение таймаута автоблокировки РМК в 1С

Часто автоотмена происходит из-за того, что после успешной авторизации карты кассир отвлекается (например, упаковывает товар), а в 1С настроена быстрая автоматическая блокировка рабочего места при бездействии. При блокировке экрана кассовая смена переходит в режим ожидания, сессия оплаты прерывается, и 1С посылает драйверу эквайринга сигнал отмены.

Чтобы изменить эти настройки, выполним следующие действия:

  1. Перейдем в раздел Администрирование, затем выберем пункт Продажи и откроем Настройки РМК.
  2. В карточке настроек найдем параметры, отвечающие за автоматическую блокировку экрана и автоматический выход из кассового режима.
  3. Увеличим время бездействия до разумного предела (например, до 300 секунд) либо полностью отключим автоматический выход из РМК, если безопасность торговой точки это позволяет.

Шаг 2. Оптимизация схемы печати слип-чеков

В некоторых торговых точках кассиры жалуются на обилие лишних действий: сначала терминал печатает первый слип-чек, требует подтверждения кнопкой на клавиатуре ККМ или ПК, затем печатает второй слип-чек, и только после этого касса медленно начинает пробивать фискальный чек. Такая цепочка увеличивает время обслуживания и повышает риск того, что кассир отпустит клиента до момента фактической фискализации.

Мы можем оптимизировать печать слип-чеков двумя путями через настройки подключения эквайринга в 1С (раздел Администрирование -> Подключаемое оборудование -> Эквайринговые терминалы):

Шаг 3. Увеличение таймаута ожидания фискализации в драйвере эквайринга

Если вы используете устаревшие модели ККТ (например, Атол 90Ф в режиме фискального регистратора) или работаете с маркированным товаром, отправка запросов в систему «Честный Знак» и проверка кодов маркировки могут занимать значительное время. Терминал эквайринга просто не успевает дождаться окончания фискализации.

В этом случае необходимо увеличить таймаут ожидания подтверждения от кассового ПО в самом драйвере эквайринга. Для терминалов, работающих под управлением ПО семейства UniPOS (эквайринг INPAS/Т-Банк), это делается через утилиту настройки драйвера:

  1. Запустим утилиту управления драйвером эквайринга (например, DC Control или редактируем конфигурационный файл pos.xml / dc_conf.xml).
  2. Найдем параметр, отвечающий за время ожидания подтверждения фискализации кассой (обычно это параметр ReceiptTimeout или FiscatizationTimeout).
  3. По умолчанию там может быть установлено значение в 30–45 секунд. Увеличим его до 90–120 секунд. Это даст ККТ достаточно времени на печать чека даже при медленном интернет-соединении или долгой обработке маркировки.

Аварийный алгоритм для кассира: что делать, если оплата прошла, а 1С «зависла»?

Что делать, если терминал уже выдал чек «Одобрено», деньги списаны, но программа 1С зависла или произошел сбой кассового аппарата, из-за чего чек не пробился, но при этом автоматической отмены тоже не произошло? В таких случаях, чтобы не списывать деньги с клиента повторно и не создавать расхождений в учете, следует использовать следующий регламент.

Вариант А. Временный переход в автономный режим

Для того чтобы закрыть продажу в 1С и пробить фискальный чек на ККТ без повторного обращения к банковскому терминалу, выполним следующие шаги:

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

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


Процедура ВыполнитьОплатуПоКарте(СуммаЧека, ЭквайринговыйТерминал)
    
    // Шаг 1: Авторизация операции на терминале
    РезультатАвторизации = ЭквайринговыйТерминал.ВыполнитьПлатеж(СуммаЧека);
    
    Если РезультатАвторизации.Статус = "Успешно" Тогда
        // Слип-чек успешно напечатан, деньги заблокированы на карте
        Попытка
            // Шаг 2: Попытка фискализации чека на ККТ
            РезультатФискализации = ФискальныйРегистратор.НапечататьКассовыйЧек(СуммаЧека);
            
            Если РезультатФискализации.Успешно Тогда
                // Шаг 3: Подтверждаем транзакцию эквайрингу
                ЭквайринговыйТерминал.ПодтвердитьТранзакцию(РезультатАвторизации.ИдентификаторТранзакции);
                ЗаписатьПродажуВБазу();
            Иначе
                ВызватьИсключение "Ошибка печати фискального чека на ККТ!";
            КонецЕсли;
            
        Исключение
            // Если ККТ не напечатал чек, драйвер терминала инициирует Void (автоотмену)
            ЭквайринговыйТерминал.ОтменитьТранзакцию(РезультатАвторизации.ИдентификаторТранзакции);
            СообщитьПользователю("Ошибка фискализации. Транзакция по карте отменена!");
        КонецПопытки;
    Иначе
        Предупреждение("Оплата по карте отклонена банком.");
    КонецЕсли;
    
КонецПроцедуры

Вариант Б. Оформление чека коррекции

Если транзакция на терминале прошла успешно, но чек в 1С был утерян, смена закрылась, а на ККТ чек так и не был пробит, во избежание штрафов от ФНС за неприменение контрольно-кассовой техники необходимо оформить Чек коррекции:

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

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

← На главную