Как сформировать чек на возврат в 1С через БПО и исправить ошибку «Неверный тип чека»?

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

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

Почему возникает ошибка «Неверный тип чека»

Проанализируем механику работы драйверов ККТ и стандартов БПО. Ошибка возникает в том случае, когда для оформления обычного возврата товара покупателем разработчик берет за основу процедуру чека коррекции.

Важно понимать принципиальную разницу между фискальными операциями:

  1. Чек коррекции — предназначен исключительно для исправления ошибок в учете (например, если расчет был произведен без применения кассы или обнаружена ошибка в ранее пробитом чеке). Он передает специальные фискальные теги (1173, 1174, 1178) и вызывает отдельный низкоуровневый метод драйвера ККТ.
  2. Чек на возврат (Возврат прихода) — это стандартная фискальная операция возврата денежных средств клиенту за ранее приобретенный товар или услугу.

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

Правильный подход: формирование чека возврата через стандартный метод

В стандартах БПО операция «Возврат прихода» формируется ровно через ту же процедуру, что и обычная продажа (приход). Разница заключается исключительно в значении параметра признака расчета (типа операции).

Разберем структуру параметров и XML-пакета, передаваемого в ККТ:

  1. Признак расчета (тип операции): В заголовке пакета чека или в структуре фискального документа указывается числовой код операции:
    • 1 — Приход (продажа);
    • 2 — Возврат прихода (возврат товара клиентом);
    • 3 — Расход (выплата денег, например, при скупке вторсырья);
    • 4 — Возврат расхода.
    Для чека возврата необходимо передавать значение 2 (или соответствующее значение системного перечисления БПО ВозвратДенежныхСредств / ВозвратПрихода).
  2. Суммы и количество позиций: Все товарные позиции (цена, количество, сумма) в чеке на возврат всегда передаются положительными числами (без знака «минус»). Направление движения средств касса определяет исключительно по общему признаку расчета документа.
  3. Таблица оплат: В таблице оплат указывается корректный вид оплаты:
    • 0 — Наличные средства;
    • 1 — Безналичные / Электронные средства (банковские карты, интернет-эквайринг, СБП).

Где подсмотреть пример реализации в типовых конфигурациях

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

  1. 1С:Бухгалтерия предприятия 3.0: механизм печати чека на возврат реализован в документе Расходный кассовый ордер (РКО) с видом операции «Возврат покупателю» и в документе Выдача наличных.
  2. 1С:Розница и 1С:Управление торговлей: логику можно посмотреть в документах Чек ККМ (с видом операции «Чек на возврат») и Возврат товаров от покупателя.

Посмотрим на пример вызова универсального метода печати чека на стороне клиента:


ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ТипОперации", 2); // 2 - Возврат прихода
ПараметрыОперации.Вставить("ТаблицаТоваров", ТаблицаПозицийЧека);
ПараметрыОперации.Вставить("ТаблицаОплат", ТаблицаОплатЧека);

// Формирование XML-пакета чека по стандарту БПО
ПакетXML = ПодключаемоеОборудованиеККТФункцииКлиентСервер.СформироватьXMLПакетаДляККТ(ПараметрыОперации);

// Передача сформированного пакета на фискализацию
Результат = МенеджерОборудованияКлиент.СформироватьЧек(ИдентификаторККТ, УникальныйИдентификатор, ПакетXML);

Особенности возврата безналичных оплат

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

  1. В чеке в секции оплат обязательно передается тип 1 (Безналичными). В этом случае сумма возврата не списывается из физического кассового ящика ККТ, но корректно отправляется оператору фискальных данных (ОФД).
  2. Возврат прихода можно пробивать в любой день, даже если смена, в которой проходила продажа, уже была закрыта. Требования 54-ФЗ не обязывают делать возврат день в день исключительно в рамках одной открытой смены.
← На главную