Почему в чеке 54-ФЗ появляется оплата электронными и возникает ошибка чек оплачен не полностью

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

При переходе на онлайн-кассы по требованиям 54-ФЗ разработчики нетиповых и доработанных конфигураций 1С часто сталкиваются с нестандартным поведением фискальных регистраторов. Типичная ситуация: документ отгрузки или реализации частично оплачивается наличными, а оставшаяся сумма в чеке неожиданно регистрируется как Электронными или сопровождается признаком [БезОпл]. В других случаях касса вовсе аннулирует операцию, возвращая системную ошибку драйвера: Чек оплачен не полностью. Разберем подробно, почему это происходит и как правильно настроить программный код для работы с кассовым аппаратом.

Причины появления строки Электронно и признака БезОпл

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

ИтогЧека = НаличнаяОплата + БезналичнаяОплата + ПредварительнаяОплата + Постоплата + ВстречноеПредоставление

Выясним причину, почему в чеке возникает оплата электронными денежными средствами при оформлении отгрузки в долг или с частичной оплатой:

  1. Ограничения протокола фискализации (ФФД 1.0 против ФФД 1.05/1.2). В базовой версии формата фискальных данных ФФД 1.0 отсутствовали отдельные теги для постоплаты (кредита) и авансовых зачетов. Протокол оперировал только двумя базовыми реквизитами: наличными (тег 1031) и электронными (тег 1081). В результате драйвер ККТ любую неденежную форму расчета, включая передачу товара в долг, автоматически относил к безналичным расчетам и печатал на чековой ленте Электронными.
  2. Механизм типовых конфигураций для неоплаченных реализаций. Когда мы формируем чек напрямую из документа РеализацияТоваровУслуг без предварительного поступления денег, система регистрирует операцию с признаком способа расчета Передача в кредит. Поскольку фактического движения наличных средств не произошло, вся сумма документа передается как обязательство постоплаты, а в печатном документе фиксируется статус [БезОпл] с отнесением суммы на электронные средства расчета.
  3. Нумерация типов оплат в драйверах оборудования. В Библиотеке подключаемого оборудования (БПО) 1С исторически использовались реквизиты вида СуммаЭлектроннойОплаты1, СуммаЭлектроннойОплаты2 и СуммаЭлектроннойОплаты3. Они маппировались в соответствующие таблицы кассового аппарата, где первая позиция традиционно отвечала за банковские карты, а последующие — за подарочные сертификаты, кредиты и взаимозачеты. При передаче постоплаты через устаревший интерфейс сумма нередко попадала в первый доступный безналичный слот.

Разбор ошибки Чек оплачен не полностью

Рассмотрим распространенный сбой: в коде документа в структуру параметров чека переданы суммы, например, 5 960 руб. наличными и 1 543,81 руб. постоплатой, но ККТ аннулирует фискализацию с ошибкой неполной оплаты. Выделим две основные технические причины этой проблемы.

1. Несоответствие индексов типов оплат в драйвере ККТ.

В протоколах кассовой техники АТОЛ каждый вид оплаты привязан к строгому целочисленному индексу:

  1. 0 — Наличные средства (тег 1031);
  2. 1 — Безналичные/электронные (эквайринг, тег 1081);
  3. 2 — Предварительная оплата / аванс (тег 1215);
  4. 3 — Последующая оплата / кредит (тег 1216);
  5. 4 — Встречное предоставление (тег 1217).

Если в коде нетиповой конфигурации постоплата передается с неверным номером типа или драйвер кассы не обновлен под поддержку тегов ФФД 1.05, устройство просто игнорирует неопознанную сумму. Для регистратора переданная сумма оплаты оказывается меньше расчетной стоимости товаров, что приводит к автоматической отмене чека.

2. Расхождение сумм из-за округления копеек при распределении скидок.

Это наиболее частая скрытая ошибка в учетных системах. Проанализируем ситуацию: в табличной части документа сумма строки рассчитывается как Количество * Цена - Скидка. Если при распределении ручной или автоматической скидки по позициям возникли дробные копейки, сумма по позициям чека может разойтись с итоговой суммой оплат всего на 1–2 копейки. Кассовый аппарат не допускает даже минимального дисбаланса: если сумма позиций составляет 7 503,83 руб., а оплата передана на 7 503,81 руб., касса зафиксирует недоплату и прервет операцию.

Реализация форматно-логического контроля перед пробитием чека

Чтобы исключить расхождения копеек и аннулирование чеков, в нетиповую конфигурацию необходимо встроить алгоритм форматно-логического контроля (ФЛК), аналогичный типовой функции ПровестиФорматоЛогическийКонтроль из конфигурации 1С:Розница.

Посмотрим на пример функции, выполняющей валидацию данных перед отправкой команды на фискализацию:


Функция ПроверитьКорректностьСуммЧека(ТаблицаТоваров, ТаблицаОплат, ТекстОшибки) Экспорт
    
    СуммаПозиций = 0;
    Для Каждого СтрТовар Из ТаблицаТоваров Цикл
        // Проверяем строгое совпадение стоимости позиции
        СуммаСтроки = Окр(СтрТовар.Количество * СтрТовар.ЦенаСУчетомСкидок, 2, РежимОкругления.Окр15как20);
        Если СтрТовар.Сумма <> СуммаСтроки Тогда
            СтрТовар.Сумма = СуммаСтроки;
        КонецЕсли;
        СуммаПозиций = СуммаПозиций + СтрТовар.Сумма;
    КонецЦикла;
    
    СуммаОплат = 0;
    Для Каждого СтрОплата Из ТаблицаОплат Цикл
        СуммаОплат = СуммаОплат + СтрОплата.Сумма;
    КонецЦикла;
    
    // Сравниваем итоги с точностью до копейки
    Если СуммаПозиций <> СуммаОплат Тогда
        ТекстОшибки = СтрШаблон(
            "Нарушен баланс чека! Сумма позиций: %1, Сумма оплат: %2. Разница: %3",
            СуммаПозиций,
            СуммаОплат,
            СуммаПозиций - СуммаОплат
        );
        Возврат Ложь;
    КонецЕсли;
    
    Возврат Истина;
КонецФункции

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

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

  1. Первый этап (Отгрузка товара с частичной оплатой). Формируется чек на передачу товара. Для товарных позиций устанавливается признак способа расчета Частичный расчет и кредит (значение 5) либо Передача в кредит (значение 6). В структуре оплат фактически внесенные деньги передаются в категорию наличных или безналичных, а оставшийся остаток долга — строго в реквизит постоплаты (тег 1216).
  2. Второй этап (Окончательное погашение долга клиентом). При фактическом поступлении остатка денежных средств (через кассу или по эквайрингу) пробивается второй чек. В нем признак способа расчета указывается как Оплата кредита (значение 7). Товарный состав в этом чеке не дублируется, НДС повторно не начисляется, а вся внесенная сумма закрывает ранее возникшее обязательство.
  3. Обновление программного стека. Для корректной печати чеков необходимо убедиться, что прошивка ККТ АТОЛ и используемый драйвер поддерживают формат ФФД 1.05 или 1.2. При работе на актуальных форматах вместо обобщенного слова Электронными на бумажном чеке будут явно напечатаны реквизиты ПОСТОПЛАТОЙ (В КРЕДИТ) или ПРЕДОПЛАТОЙ (АВАНСОМ).
← На главную