Почему ККТ АТОЛ при частичной оплате считает весь остаток чека безналичным расчетом и как это исправить

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

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

Анализ проблемы и структуры передаваемых данных

Рассмотрим типовую ситуацию: оформляется реализация на сумму 10 рублей. Покупатель вносит наличными 7 рублей, а оставшиеся 3 рубля оформляются в кредит (с постоплатой). В конфигурации формируется XML-пакет для передачи в кассовый аппарат, где блок оплат выглядит корректно:


<Payments Cash="7"
          ElectronicPayment="0"
          Credit="3"
          AdvancePayment="0"
          CashProvision="0"/>

Несмотря на то что в XML явно указан тег Credit="3", кассовый аппарат печатает чек, в котором 7 рублей приняты наличными, а 3 рубля — электронными (безналичными). Попытки настроить наименования типов оплат в таблицах драйвера ККТ не дают результата.

Причины некорректного распределения типов оплаты

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

  1. Использование устаревшего метода интеграции БПО: в ранних версиях Библиотеки подключаемого оборудования (БПО) и обработках обслуживания ККТ применялся метод ЗакрытьЧек стандарта «Требования к разработке драйверов для фискальных регистраторов (ФФД 1.0)». Если заглянуть в типовой код закрытия чека, можно увидеть следующее сведение типов оплаты:
    
    СуммаНаличнойОплаты = 0;
    СуммаБезналичнойОплаты = 0;
    
    Для ИндексОплаты = 0 По ТаблицаОплат.Количество() - 1 Цикл
        Если ТаблицаОплат[ИндексОплаты][0].Значение = 0 Тогда
            СуммаНаличнойОплаты = СуммаНаличнойОплаты + ТаблицаОплат[ИндексОплаты][1].Значение;
        Иначе
            СуммаБезналичнойОплаты = СуммаБезналичнойОплаты + ТаблицаОплат[ИндексОплаты][1].Значение;
        КонецЕсли;
    КонецЦикла;
    
    Результат = ОбъектДрайвера.ЗакрытьЧек(ПараметрыПодключения.ИДУстройства,
                                          СуммаНаличнойОплаты, 
                                          СуммаБезналичнойОплаты);
    
    В этом коде все виды расчетов, кроме наличных (код 0), безусловно суммируются в переменную СуммаБезналичнойОплаты. Переданный кредит (постоплата) просто теряет свой признак и транслируется в кассу как электронная оплата (тег 1081).
  2. Ограничения прошивки и драйвера ККТ: кассовое ядро АТОЛ под ФФД 1.05 жестко фиксирует номера типов оплат:
    1. Тип 1 — Наличные (тег 1031)
    2. Тип 2 — Безналичные / Электронные (тег 1081)
    3. Тип 3 — Предварительная оплата / Аванс (тег 1215)
    4. Тип 4 — Последующая оплата / Кредит (тег 1216)
    5. Тип 5 — Встречное предоставление (тег 1217)
    Переименование строковых названий в драйвере не влияет на логику: если от 1С вызывается метод передачи только двух сумм, фискальный регистратор распределяет вторую сумму на Тип 2.

Пошаговое решение проблемы

Для корректной печати чеков с разделением оплат по ФФД 1.05 и выше выполним следующий порядок действий.

Шаг 1. Перевод оборудования на стандарт драйвера с поддержкой пакетного режима

Выясним, какой драйвер используется для ККТ. В стандарте требований 1С под ФФД 1.05 устаревший метод ЗакрытьЧек заменен на пакетный метод СформироватьЧек (ProcessCheck). Этот метод принимает полный XML-пакет документа, включая признак способа расчета для каждой товарной позиции и детальную структуру тега Payments.

  1. Откроем в 1С раздел НСИ и администрирование → РКП и оборудование → Подключаемое оборудование.
  2. Проверим используемый драйвер. Необходимо использовать сертифицированный драйвер нового образца: «АТОЛ:ККТ с передачей данных в ОФД (ФФД 1.05/1.1/1.2)» на базе DTO 9.x или DTO 10.x.
  3. В свойствах кассы убедимся, что формат передачи фискальных данных определен как ФФД 1.05 или выше.

Шаг 2. Обновление конфигурации или БПО

В релизах 1С:Управление торговлей 11.3 поддержка сложных расчетов была реализована лишь частично. Полноценный учет цепочек предоплат и кредитов штатно работает в актуальных версиях БПО и релизах конфигурации линейки УТ 11.4 / 11.5. Рекомендуется обновить конфигурацию до актуального релиза.

Шаг 3. Корректировка формирования фискального XML (при невозможности обновления)

Если обновление конфигурации невозможно, доработаем логику формирования XML-пакета чека в расширении или общем модуле (например, МенеджерОборудованияКлиентПереопределяемый или МенеджерОборудованияВызовСервера).

  1. Для товарных позиций при частичной оплате обязательно передаем тег 1214 (Признак способа расчета) со значением 5 (Частичный расчет и кредит).
  2. В таблице оплат формируем строгие соответствия сумм тегам:
    
    // Пример формирования структуры оплат для передачи в метод СформироватьЧек
    СтруктураОплаты = Новый Структура;
    СтруктураОплаты.Вставить("Cash", СуммаНаличные);             // Тег 1031
    СтруктураОплаты.Вставить("ElectronicPayment", СуммаБезнал);   // Тег 1081
    СтруктураОплаты.Вставить("Credit", СуммаКредит);              // Тег 1216 (Постоплата)
    СтруктураОплаты.Вставить("AdvancePayment", СуммаАванс);       // Тег 1215 (Аванс/Предоплата)
    

Методологически верная схема печати чеков по 54-ФЗ

Разберем, как по закону 54-ФЗ должна выглядеть цепочка фискализации при продаже в кредит с частичной оплатой:

  1. Первый чек (в момент передачи товара):
    1. Общая сумма чека: 10 руб. (полная стоимость позиции).
    2. Признак способа расчета: Частичный расчет и кредит.
    3. Оплата наличными: 7 руб.
    4. Постоплата (в кредит): 3 руб.
  2. Второй чек (в момент окончательного погашения долга):
    1. Сумма чека: 3 руб.
    2. Признак предмета расчета: Платеж.
    3. Признак способа расчета: Оплата кредита.
    4. Оплата наличными или безналичными: 3 руб.

Важное замечание: пробивать чек только на фактически внесенную сумму (7 руб.) с искусственным пересчетом количества товара (например, 0.7 шт.) категорически не рекомендуется. Такой подход искажает складской учет, расчет НДС и нарушает форматы фискальных документов ФНС.

← На главную