Почему аннулируется чек с ошибкой «Чек оплачен не полностью» и как исправить расхождение в 1 копейку в 1С?

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

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

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

Причины возникновения копеечных расхождений

Проанализируем ситуацию: требования форматов фискальных документов (ФФД) накладывают жесткие математические ограничения на данные кассового чека. Сумма всех товарных позиций обязана строго равняться сумме всех типов оплат (наличные, безналичные), а стоимость конкретной позиции должна подчиняться правилу: Сумма = Округлить(Цена * Количество - Скидка, 2).

Расхождение в 1 копейку обычно возникает в следующих случаях:

  1. Продажа весового товара с дробным количеством: При перемножении цены за килограмм на дробный вес (до 3 знаков после запятой) получаются доли копеек. Если 1С передает в ККТ и расчетную цену, и количество, кассовый аппарат или алгоритм ФЛК 1С пытается пересчитать строку и находит расхождение, добавляя копейку надбавки для математического баланса строки.
  2. Позиционный расчет НДС против расчета от общей суммы: В учетной системе сумма НДС по чеку может рассчитываться как сумма построчных округленных значений налога. Если же в ККМ включен собственный калькулятор, микропрограмма фискального регистратора может рассчитывать НДС от общей суммы чека по формуле ставки, из-за чего возникает разница в 0.01 рубля.
  3. Работа алгоритма форматно-логического контроля (ФЛК) в БПО: В типовых решениях 1С процедура ПровестиФорматоЛогическийКонтроль() перед отправкой фискального пакета проверяет соответствие произведения цены на количество сумме строки. Если равенство с точностью до копеек не сходится, алгоритм искусственно дробит одну позицию на две (одна часть по базовой цене, вторая — с надбавкой в 1 копейку), что может приводить к превышению итоговой суммы чека над суммой принятой оплаты.

Способ 1. Настройка допустимого расхождения ФЛК в 1С

Рассмотрим, как настроить встроенный контроль 1С. В справочнике подключаемого оборудования для каждого экземпляра ККТ предусмотрен специальный реквизит, управляющий строгостью проверки математики чека перед отправкой команды на печать.

  1. Перейдем в раздел Администрирование → Подключаемое оборудование.
  2. Откроем карточку используемого фискального регистратора (ККТ с передачей данных).
  3. Найдем реквизит Допустимое расхождение при форматно-логическом контроле (в метаданных — ДопустимоеРасхождениеФЛК).
  4. Установим значение погрешности (например, 0.01 или больше, в зависимости от применяемых скидок и алгоритмов округления цен).
  5. Сохраним настройки и перезапустим рабочее место кассира (РМК).

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

Способ 2. Отключение внутреннего расчета налогов в драйвере ККТ

Если копейка расхождения появляется именно на этапе вычисления налоговых ставок, необходимо передавать в кассу уже рассчитанные суммы НДС и запретить фискальному регистратору производить собственный пересчет от общего итога.

Разберем порядок действий для распространенных моделей ККТ:

  1. Для касс АТОЛ:

    Запустим утилиту Тест драйвера ККТ, перейдем в Свойства → Параметры ККТ. В разделе налоговых ставок и округлений выставим режим, при котором суммы налогов и скидок берутся исключительно из фискального пакета XML/JSON, сформированного учетной программой, без автоматического вычисления надбавок драйвером.

  2. Для касс ШТРИХ-М:

    Откроем Тест драйвера FR, установим связь с кассой и перейдем в раздел Таблицы. Откроем Таблицу 17 (Настройки). Проверим параметры округления, печати налогов и распределения скидок. Отключим построчный автоматический пересчет НДС ядром фискального регистратора, оставив прием готовых сумм из входящего потока данных 1С.

Способ 3. Программная корректировка чека перед отправкой в ККТ

Если используется нетиповая конфигурация или устаревшая версия Библиотеки подключаемого оборудования (БПО), где алгоритм ФЛК работает некорректно, можно выполнить доработку через расширение конфигурации.

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


// Проверяем сходимость суммы позиций и суммы оплат чека
СуммаПозиций = 0;
Для Каждого СтрПозиция Из ПакетЧека.Позиции Цикл
    СуммаПозиций = СуммаПозиций + СтрПозиция.Сумма;
КонецЦикла;

СуммаОплат = 0;
Для Каждого СтрОплата Из ПакетЧека.Оплаты Цикл
    СуммаОплат = СуммаОплат + СтрОплата.Сумма;
КонецЦикла;

Разница = СуммаПозиций - СуммаОплат;

// Если расхождение составляет не более 1-2 копеек, корректируем строку с наибольшей суммой
Если Абс(Разница) > 0 И Абс(Разница) <= 0.02 Тогда
    ИндексМакс = 0;
    МаксСумма = 0;
    
    Для Индекс = 0 По ПакетЧека.Позиции.Количество() - 1 Цикл
        Если ПакетЧека.Позиции[Индекс].Сумма > МаксСумма Тогда
            МаксСумма = ПакетЧека.Позиции[Индекс].Сумма;
            ИндексМакс = Индекс;
        КонецЕсли;
    КонецЦикла;
    
    ПакетЧека.Позиции[ИндексМакс].Сумма = ПакетЧека.Позиции[ИндексМакс].Сумма - Разница;
КонецЕсли;

Такой подход гарантирует, что итоговая сумма строк чека (тег 1043) всегда будет строго равна сумме оплат (тег 1020), что исключит блокировку фискализации со стороны драйвера кассового аппарата.

Способ 4. Включение округления чека в пользу покупателя в РМК

В розничной торговле наиболее удобным и легальным способом борьбы с копеечными долями при весовом товаре является настройка автоматического округления чека за счет скидки.

  1. В настройках параметров РМК включим опцию Округлять сумму чека в пользу покупателя.
  2. Укажем порядок округления: до 1 рубля или до 10 копеек.
  3. В результате применения этой скидки итоговая сумма всегда формируется без дробных долей копеек, что нивелирует риск появления расхождений при расчете НДС и проверке ФЛК.
← На главную