При оформлении продаж с отсрочкой платежа или частичной предоплатой типовые конфигурации 1С должны формировать фискальный документ с разделением суммы на фактически внесенную часть и постоплату (кредит). Однако на практике часто возникает ошибка: кассовый аппарат АТОЛ регистрирует чек на полную стоимость товара, но всю сумму, превышающую наличные, относит к безналичной оплате (оплате картой), полностью игнорируя признак кредита. Разберем детально, почему это происходит, как устроена передача данных в кассу и как решить данную проблему.
Рассмотрим типовую ситуацию: оформляется реализация на сумму 10 рублей. Покупатель вносит наличными 7 рублей, а оставшиеся 3 рубля оформляются в кредит (с постоплатой). В конфигурации формируется XML-пакет для передачи в кассовый аппарат, где блок оплат выглядит корректно:
<Payments Cash="7"
ElectronicPayment="0"
Credit="3"
AdvancePayment="0"
CashProvision="0"/>
Несмотря на то что в XML явно указан тег Credit="3", кассовый аппарат печатает чек, в котором 7 рублей приняты наличными, а 3 рубля — электронными (безналичными). Попытки настроить наименования типов оплат в таблицах драйвера ККТ не дают результата.
Проанализируем программный код и механизмы взаимодействия 1С с фискальным регистратором, чтобы понять источник проблемы.
ЗакрытьЧек стандарта «Требования к разработке драйверов для фискальных регистраторов (ФФД 1.0)». Если заглянуть в типовой код закрытия чека, можно увидеть следующее сведение типов оплаты:
СуммаНаличнойОплаты = 0;
СуммаБезналичнойОплаты = 0;
Для ИндексОплаты = 0 По ТаблицаОплат.Количество() - 1 Цикл
Если ТаблицаОплат[ИндексОплаты][0].Значение = 0 Тогда
СуммаНаличнойОплаты = СуммаНаличнойОплаты + ТаблицаОплат[ИндексОплаты][1].Значение;
Иначе
СуммаБезналичнойОплаты = СуммаБезналичнойОплаты + ТаблицаОплат[ИндексОплаты][1].Значение;
КонецЕсли;
КонецЦикла;
Результат = ОбъектДрайвера.ЗакрытьЧек(ПараметрыПодключения.ИДУстройства,
СуммаНаличнойОплаты,
СуммаБезналичнойОплаты);
СуммаБезналичнойОплаты. Переданный кредит (постоплата) просто теряет свой признак и транслируется в кассу как электронная оплата (тег 1081).Для корректной печати чеков с разделением оплат по ФФД 1.05 и выше выполним следующий порядок действий.
Выясним, какой драйвер используется для ККТ. В стандарте требований 1С под ФФД 1.05 устаревший метод ЗакрытьЧек заменен на пакетный метод СформироватьЧек (ProcessCheck). Этот метод принимает полный XML-пакет документа, включая признак способа расчета для каждой товарной позиции и детальную структуру тега Payments.
В релизах 1С:Управление торговлей 11.3 поддержка сложных расчетов была реализована лишь частично. Полноценный учет цепочек предоплат и кредитов штатно работает в актуальных версиях БПО и релизах конфигурации линейки УТ 11.4 / 11.5. Рекомендуется обновить конфигурацию до актуального релиза.
Если обновление конфигурации невозможно, доработаем логику формирования XML-пакета чека в расширении или общем модуле (например, МенеджерОборудованияКлиентПереопределяемый или МенеджерОборудованияВызовСервера).
5 (Частичный расчет и кредит).
// Пример формирования структуры оплат для передачи в метод СформироватьЧек
СтруктураОплаты = Новый Структура;
СтруктураОплаты.Вставить("Cash", СуммаНаличные); // Тег 1031
СтруктураОплаты.Вставить("ElectronicPayment", СуммаБезнал); // Тег 1081
СтруктураОплаты.Вставить("Credit", СуммаКредит); // Тег 1216 (Постоплата)
СтруктураОплаты.Вставить("AdvancePayment", СуммаАванс); // Тег 1215 (Аванс/Предоплата)
Разберем, как по закону 54-ФЗ должна выглядеть цепочка фискализации при продаже в кредит с частичной оплатой:
Важное замечание: пробивать чек только на фактически внесенную сумму (7 руб.) с искусственным пересчетом количества товара (например, 0.7 шт.) категорически не рекомендуется. Такой подход искажает складской учет, расчет НДС и нарушает форматы фискальных документов ФНС.