При доработке и поддержке торговых решений на платформе 1С, в частности конфигурации 1С:Розница, часто возникает вопрос: как правильно фискализировать операции возврата товаров и чем программный вызов печати чека возврата отличается от обычной продажи. Разберем методологическую и техническую сторону этого процесса.
Ранее возврат товара не в день покупки оформлялся исключительно через главную кассу предприятия с выпиской расходного кассового ордера (РКО) без применения контрольно-кассовой техники. В рамках действующего законодательства (54-ФЗ) разделение на возврат «день в день» и «не в день покупки» отменено:
С точки зрения низкоуровневого взаимодействия с драйвером ККМ (DLL) или через стандарты Библиотеки подключаемого оборудования (БПО), печать чека продажи и чека возврата не требует вызова принципиально разных процедур. Регистрация товарных позиций, ставок НДС и итоговых сумм выполняется стандартными методами, а ключевое различие заключается в передаваемом признаке расчета (типе операции).
Проанализируем базовые значения признака расчета (OperationType или PaymentType):
Таким образом, для формирования чека на возврат прихода в процедуру открытия или формирования чека передается значение типа расчета 2.
В устаревших конфигурациях (таких как ранние версии 1С:Розница 2.0) цепочка возврата не день в день исторически строилась через документы Возврат товаров от покупателя и последующий Расходный кассовый ордер без обращения к процедурам фискализации ККТ. Чтобы привести учет в соответствие с современными нормами, в коде документов или модулей интеграции с кассой необходимо вызывать процедуры печати фискального чека с признаком Возврат прихода.
Посмотрим на пример структуры вызова функции фискализации чека через БПО:
// Подготовка параметров фискального документа
ПараметрыОперации = Новый Структура;
ПараметрыОперации.Вставить("ТипРасчета", 2); // 2 - Возврат прихода
// Формирование и печать фискального чека
Результат = МенеджерОборудованияКлиент.СформироватьЧек(
ИдентификаторУстройства,
ПараметрыОперации,
ТаблицаТоваров,
ТаблицаОплат
);
Если взаимодействие с торговым оборудованием осуществляется через прямой COM-вызов драйвера производителя, логика остается аналогичной: перед регистрацией строк вызывается метод открытия чека, куда передается соответствующий целочисленный идентификатор типа чека возврата.