Как в 1С:Управление торговлей 10.3 настроить автоматическое округление копеек при продаже через Чек ККМ?

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

При работе в розничной торговле часто возникает ситуация, когда использование автоматических скидок или сложных типов цен приводит к появлению копеек в итоговой сумме чека. Для наличного расчета это крайне неудобно. В рамках данной статьи мы разберем, как реализовать округление в конфигурации «1С:Управление торговлей 10.3», проанализируем программные способы изменения кода и рассмотрим штатные настройки системы.

Причина возникновения проблемы

Выясним причину: в документе ЧекККМ при применении автоматических скидок программа рассчитывает процент от цены. Например, если товар стоит 4000 рублей, а скидка составляет 4.3%, итоговая сумма составит 3828 рублей и 00 копеек, но при дробных процентах или других исходных ценах (например, 4000.17) возникают дробные части. Наша задача — добиться того, чтобы итоговая сумма к оплате была целым числом.

Способ 1. Программное округление суммы скидки в коде

Рассмотрим ситуацию, когда необходимо внести изменения непосредственно в алгоритм расчета скидок. В модуле документа или в соответствующих обработках часто встречается строка, отвечающая за расчет суммы скидки. Проанализируем пример кода, предложенный в обсуждении:


СтрокаДвижений.СуммаСкидки = Окр(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки, 2);

В данном фрагменте число 2 в функции Окр означает округление до двух знаков после запятой. Чтобы избавиться от копеек, мы можем изменить этот параметр. Разберем варианты использования функции Окр:

  1. Стандартное математическое округление: Если мы заменим 2 на 0, программа будет округлять по математическим правилам (до ближайшего целого).
    
    СтрокаДвижений.СуммаСкидки = Окр(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки, 0);
    
  2. Округление в меньшую сторону (всегда в пользу клиента): Для этого в 1С 8.х используется третий параметр функции — РежимОкругления.
    
    // Округляет 4000.99 до 4000
    СтрокаДвижений.СуммаСкидки = Окр(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки, 0, РежимОкругления.Низ);
    
  3. Использование функции Цел: Функция Цел просто отсекает дробную часть, что также позволяет получить целое число.
    
    СтрокаДвижений.СуммаСкидки = Цел(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки);
    

Способ 2. Настройка автоматического округления в справочнике скидок

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

  1. Перейдем в меню Справочники — Номенклатура — Скидки-наценки.
  2. Откроем карточку нужной автоматической скидки.
  3. Найдем реквизит Округление.
  4. Установим значение 1. Это будет означать округление до рубля. Если установить 5, программа будет округлять сумму до 5 рублей.

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

Способ 3. Настройка округления в Типах цен

Если для наличного расчета вы используете отдельный Тип цен, округление можно настроить в самом справочнике цен. Проанализируем этот метод:

Зайдем в Справочники — Номенклатура — Типы цен номенклатуры. В настройках каждого типа цен есть вкладка или кнопка «Округление». Там можно указать точность (например, до 1 (целые)) и метод (по арифметическим правилам или всегда в большую сторону). При выборе такого типа цен в Чеке ККМ цены будут попадать в документ уже без копеек.

Важный нюанс: Соответствие фискальному регистратору

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

Большинство ФР рассчитывают сумму строки как ЦенаСоСкидкой * Количество. Если вы программно измените итоговую сумму в 1С, но не измените цену за единицу, касса может выдать ошибку «Расхождение сумм строк и итога чека».

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

Распределение суммы округления

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

Таким образом, мы рассмотрели как простые программные методы с использованием Окр(), так и штатные средства конфигурации УТ 10.3. Для большинства задач розничной торговли достаточно настройки в справочнике автоматических скидок, что позволяет избежать лишних правок в коде системы.

← На главную