При работе в розничной торговле часто возникает ситуация, когда использование автоматических скидок или сложных типов цен приводит к появлению копеек в итоговой сумме чека. Для наличного расчета это крайне неудобно. В рамках данной статьи мы разберем, как реализовать округление в конфигурации «1С:Управление торговлей 10.3», проанализируем программные способы изменения кода и рассмотрим штатные настройки системы.
Выясним причину: в документе ЧекККМ при применении автоматических скидок программа рассчитывает процент от цены. Например, если товар стоит 4000 рублей, а скидка составляет 4.3%, итоговая сумма составит 3828 рублей и 00 копеек, но при дробных процентах или других исходных ценах (например, 4000.17) возникают дробные части. Наша задача — добиться того, чтобы итоговая сумма к оплате была целым числом.
Рассмотрим ситуацию, когда необходимо внести изменения непосредственно в алгоритм расчета скидок. В модуле документа или в соответствующих обработках часто встречается строка, отвечающая за расчет суммы скидки. Проанализируем пример кода, предложенный в обсуждении:
СтрокаДвижений.СуммаСкидки = Окр(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки, 2);
В данном фрагменте число 2 в функции Окр означает округление до двух знаков после запятой. Чтобы избавиться от копеек, мы можем изменить этот параметр. Разберем варианты использования функции Окр:
СтрокаДвижений.СуммаСкидки = Окр(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки, 0);
РежимОкругления.
// Округляет 4000.99 до 4000
СтрокаДвижений.СуммаСкидки = Окр(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки, 0, РежимОкругления.Низ);
Цел просто отсекает дробную часть, что также позволяет получить целое число.
СтрокаДвижений.СуммаСкидки = Цел(СуммаБезСкидки / 100 * СтрокаТаблицы.ПроцентСкидкиНаценки);
Посмотрим на ситуацию шире: внесение изменений в код (кастомизация) может затруднить последующее обновление конфигурации. В УТ 10.3 предусмотрен штатный механизм округления для каждой автоматической скидки. Разберем по шагам, как это настроить:
1. Это будет означать округление до рубля. Если установить 5, программа будет округлять сумму до 5 рублей.Важно понимать: при такой настройке программа сначала вычислит скидку, а затем округлит результат согласно заданному правилу. Это самый безопасный способ, не требующий работы программиста.
Если для наличного расчета вы используете отдельный Тип цен, округление можно настроить в самом справочнике цен. Проанализируем этот метод:
Зайдем в Справочники — Номенклатура — Типы цен номенклатуры. В настройках каждого типа цен есть вкладка или кнопка «Округление». Там можно указать точность (например, до 1 (целые)) и метод (по арифметическим правилам или всегда в большую сторону). При выборе такого типа цен в Чеке ККМ цены будут попадать в документ уже без копеек.
Проанализируем техническую сторону взаимодействия с кассовым аппаратом. При выполнении округлений в 1С крайне важно, чтобы итоговая сумма чека в программе копейка в копейку совпадала с расчетом самого фискального регистратора (ФР).
Большинство ФР рассчитывают сумму строки как ЦенаСоСкидкой * Количество. Если вы программно измените итоговую сумму в 1С, но не измените цену за единицу, касса может выдать ошибку «Расхождение сумм строк и итога чека».
Рекомендация: При программной доработке округляйте именно СуммуСкидки или Цену, а не финальный итог документа. После внесения правок обязательно проверьте закрытие чека на тестовой кассе или в режиме эмулятора.
Посмотрим на сложный пример: в чеке несколько позиций. Если округлять каждую строку по отдельности, итоговая сумма чека может все равно содержать копейки в определенных случаях. Профессиональное решение заключается в создании отдельной «Скидки на округление чека», которая рассчитывается в самый последний момент перед пробитием чека и распределяет разницу (копейки) по всем строкам документа пропорционально их стоимости. Это гарантирует, что клиент всегда заплатит ровную сумму наличными.
Таким образом, мы рассмотрели как простые программные методы с использованием Окр(), так и штатные средства конфигурации УТ 10.3. Для большинства задач розничной торговли достаточно настройки в справочнике автоматических скидок, что позволяет избежать лишних правок в коде системы.