Как вернуть деньги клиенту по безналу, если чек ККТ не пробился в 1С:Розница

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

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

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

Разберем причину возникновения проблемы

Для начала проанализируем ситуацию с технической точки зрения. В стандартном алгоритме 1С:Розница при оплате картой происходит следующая последовательность действий:

  1. Система отправляет запрос на эквайринговый терминал.
  2. Клиент подтверждает оплату, банк блокирует сумму (преавторизация/авторизация).
  3. Терминал возвращает ответ в 1С об успешном списании и печатает слип-чек.
  4. 1С приступает к фискализации чека на ККТ и, если в чеке есть алкоголь, отправляет данные в УТМ ЕГАИС.
  5. Если на этапе ЕГАИС или ККТ происходит сбой (например, марка «не внесена в поштучный учет» или закончилась бумага), 1С прерывает операцию.

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

Метод 1: Работа через механизм «Незавершенные операции эквайринга»

В современных релизах 1С:Розница (начиная с версий 2.3.10) реализован специальный функционал для обработки таких случаев. Система хранит сведения о транзакциях, которые получили подтверждение от банка, но не были закрыты чеком ККТ. Рассмотрим, как воспользоваться этим механизмом.

Перейдем в раздел Продажи, далее выберем пункт Чеки. В верхней части формы или в меню «Еще» найдем команду Эквайринговые операции. Проанализируем список:

Метод 2: Ручная отмена (сторно) через драйвер эквайринга

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

Выясним причину, по которой мы не можем сделать это из интерфейса РМК. Часто бывает достаточно запустить сервисную утилиту драйвера (например, loadparm.exe в папке sc552). Однако в рамках 1С мы можем использовать возможности подключаемого оборудования:

  1. Перейдем в Администрирование — Подключаемое оборудование.
  2. Откроем карточку нашего эквайрингового терминала.
  3. Нажмем кнопку Параметры подключения или Функции (зависит от версии драйвера).
  4. Выберем пункт Отмена последней операции.

Важный момент: Отмена (Reversal) возможна только до закрытия смены на терминале (сверки итогов). Если смена уже закрыта, придется делать «Возврат», что гораздо сложнее и дольше для клиента.

Метод 3: Использование «автономного режима» для исправления ситуации

Проанализируем ситуацию, когда нам все же нужно выдать товар клиенту, раз деньги уже списаны. Если проблема только в «непонимании» между 1С и терминалом, можно временно «разъединить» их:

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

Внимание! Этот способ подходит только если товар прошел проверку ЕГАИС и проблема была лишь в печати чека. Если же ошибка была именно в акцизной марке, этот метод создаст нарушение учета АП. Чтобы не производить ручное отключение оборудования, можно использовать расширение для аварийного пробития чека при ошибке эквайринга.

Особенности работы с алкогольной продукцией (ЕГАИС)

Рассмотрим подробнее ошибку Не внесена в поштучный учет. Это означает, что марка является «старой» (третьего формата) и не была привязана к остаткам в Регистре №3. Если мы просто пробьем чек через драйвер ККТ, как советуют некоторые пользователи на форумах, мы получим следующие проблемы:

Правильным алгоритмом действий в данном случае будет только полная отмена транзакции по карте и отказ от продажи конкретной бутылки до момента устранения проблем с ее учетом (проведения процедуры «Привязка штрихкодов к партии»).

Как предотвратить проблему: настройка предварительной проверки

Чтобы не попадать в ситуацию «деньги ушли, а чек не вышел», необходимо изменить логику работы программы. По умолчанию 1С сначала запрашивает оплату, а потом проверяет марку. Мы же настроим систему иначе.

В настройках раздела Продажи — Алкогольная продукция (или в настройках РМК) найдем и включим опцию Предварительная проверка марок в УТМ. Разберем, что это даст:

  1. Кассир сканирует бутылку.
  2. 1С мгновенно обращается к УТМ.
  3. Если УТМ возвращает ошибку, 1С даже не предложит выбрать способ оплаты.
  4. Если УТМ одобряет марку, только тогда кассир переходит к оплате картой.

Этот простой шаг экономит нервы кассиру и избавляет от необходимости делать возвраты по безналу.

Техническая реализация программной отмены

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


// Пример логики обращения к драйверу эквайринга для отмены
ОбъектДрайвера = ПодключаемоеОборудованиеРТ.ПолучитьОбъектДрайвера(СсылкаНаТерминал);
ПараметрыОперации = Новый Структура();
ПараметрыОперации.Вставить("Сумма", СуммаКВозврату);
ПараметрыОперации.Вставить("НомерЧека", НомерСлипЧека);

Результат = ОбъектДрайвера.ОтменитьОперацию(ПараметрыОперации);

Если Результат = Истина Тогда
    Сообщить("Операция успешно отменена на терминале");
Иначе
    ТекстОшибки = "";
    ОбъектДрайвера.ПолучитьОшибку(ТекстОшибки);
    Предупреждение("Ошибка отмены: " + ТекстОшибки);
КонецЕсли;

Использование подобных процедур в расширениях позволяет добавить кнопку «Экстренная отмена» прямо в форму РМК, если штатные механизмы по какой-то причине недоступны в вашем релизе конфигурации.

Заключение

Подведем итоги. Если оплата прошла, а чек не напечатан:

  1. Первым делом проверяем Эквайринговые операции в разделе «Чеки».
  2. Если операция там есть — используем штатные кнопки «Отменить» или «Допробить».
  3. Если операции в списке нет — используем сервисные функции в карточке оборудования.
  4. Никогда не пробиваем алкоголь «просто через драйвер ККТ» без подтверждения от ЕГАИС.

Соблюдение этих правил позволит вам сохранить соответствие между данными банка, налоговой и ЕГАИС, а также минимизировать конфликты с покупателями.

← На главную