Как устранить расхождение суммы чека и скидки при печати на ККТ в 1С:Управление торговлей?

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

При оформлении продаж с процентными скидками пользователи и специалисты часто сталкиваются с ситуацией, когда итоговая сумма документа в учетной системе не сходится с суммой чека, формируемой фискальным регистратором. Разберем типичный пример: продается 1000 единиц товара по цене 5,26 руб. с общей скидкой 7%. В учетном документе 1С скидка начисляется на общую сумму строки, что дает расчетный итог 4891,80 руб. Однако при выводе на онлайн-кассу скидка распределяется попозиционно на цену за единицу, в результате чего кассовая цена округляется до 4,89 руб., а чек закрывается на сумму 4890,00 руб. Возникает разница в 1 рубль 80 копеек, из-за которой кассовое устройство либо отклоняет операцию, либо формирует неверные фискальные данные.

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

Почему возникает расхождение: требования форматов фискальных документов

В соответствии с форматами фискальных документов (ФФД 1.05 и новее), кассовый чек не содержит отдельного итогового реквизита «процент скидки на чек», уменьшающего стоимость после суммирования строк. В фискальный накопитель передаются реквизиты конкретной товарной позиции:

  1. Количество предмета расчета (тег 1023).
  2. Цена за единицу предмета расчета с учетом скидок и наценок (тег 1079).
  3. Стоимость предмета расчета с учетом скидок и наценок (тег 1043).

Согласно жестким математическим правилам ФФД, значение стоимости предмета расчета (тег 1043) обязано равняться произведению цены с учетом скидки (тег 1079) на количество (тег 1023). Допустимое расхождение при расчете внешним калькулирующим устройством не может превышать 1 копейку. Когда касса пытается умножить 4,89 руб. на 1000 шт., результат 4890,00 руб. расходится с учетной суммой документа 1С (4891,80 руб.) намного больше допустимого предела. Касса блокирует печать чека с ошибкой несовпадения итогов.

Настройка форматно-логического контроля: режим «Разделять строки»

Для разрешения копеечных нестыковок разработчики 1С включили в подсистему «Библиотека подключаемого оборудования» (БПО) механизм форматно-логического контроля (ФЛК). Настройка выполняется непосредственно в параметрах фискального регистратора.

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

  1. Разделять строки.
  2. Зачитывать суммы.

Рассмотрим, как функционирует вариант «Разделять строки». Если у нас продается крупная партия товара (например, 1000 штук), алгоритм не станет создавать 1000 отдельных позиций в чеке. Позиция математически разбивается максимум на две строки с ценами, различающимися ровно на 1 копейку:

  1. По меньшей округленной цене регистрируется часть общего количества.
  2. По цене, увеличенной на 1 копейку, регистрируется оставшаяся часть количества.

В рассмотренном примере программа автоматически разобьет строку следующим образом:

  1. Товар: 820 шт. по цене 4,89 руб. (Сумма: 4009,80 руб.).
  2. Товар: 180 шт. по цене 4,90 руб. (Сумма: 882,00 руб.).

Итоговая фискальная сумма чека составит ровно 4891,80 руб. Требование ФФД о совпадении произведения цены на количество соблюдается для каждой строки, а общая сумма документа совпадает с кассовым чеком до копейки.

Ограничения режима «Зачитывать суммы» и ошибка типов данных

Второй вариант контроля — «Зачитывать суммы» — предназначен для распределения погрешностей округления между разными товарами в чеке. Алгоритм пытается взаимно компенсировать излишки и недостачи копеек между разными строками многострочного документа. Однако этот метод имеет существенные ограничения:

  1. Если в чеке представлена всего одна позиция с крупным количеством товара, зачет сумм выполнить невозможно, так как расхождение не на что перенести.
  2. В некоторых релизах конфигураций (в частности, в «1С:Управление торговлей 10.3.43») при выборе этого режима происходило падение платформы с ошибкой выполнения общего модуля:

Операции сравнения на больше-меньше допустимы только для значений совпадающих примитивных типов (Булево, Число, Строка, Дата)

Посмотрим на фрагмент типового кода, где возникала неисправность при обходе строк:


Если ПредыдущаяСтрока[ИмяРеквизита] > ТекущаяСтрока[ИмяРеквизита] Тогда
    // Блок распределения копеек
КонецЕсли;

Причина ошибки крылась в том, что одно из сравниваемых полей содержало значение Неопределено вместо числового типа, из-за чего механизм платформы прерывал выполнение операции. Начиная с релиза 10.3.45 данный баг типовой конфигурации был полностью устранен.

Пошаговый план устранения расхождения

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

  1. Перейдем в меню администрирования торгового оборудования: Сервис — Торговое оборудование — Подключение и настройка торгового оборудования.
  2. Откроем форму параметров подключенного фискального регистратора (ККТ).
  3. Найдем блок параметров Форматно-логический контроль.
  4. Установим способ контроля в значение «Разделять строки».
  5. Значение параметра «Допустимое расхождение» установим равным 0. Это гарантирует, что система автоматически распределит копейки при малейшем отклонении, не вызывая аппаратную блокировку на стороне кассы.
  6. Если в информационной базе используется режим «Зачитывать суммы», и система выдает ошибку сравнения типов в модуле МенеджерОборудованияКлиентСервер, выполним обновление конфигурации до актуального релиза (не ниже 10.3.45).
  7. Если бизнес-процессы предприятия категорически запрещают разделение одной товарной позиции на две строки в чеке покупателя, настроим округление цен со скидкой непосредственно в правилах ценообразования 1С (до 2 знаков после запятой), чтобы цена со скидкой никогда не содержала долей копеек до момента формирования печатной формы.
← На главную