← На главную
В типовых конфигурациях 1С:Управление торговлей (начиная с редакции 11), а также в 1С:ERP и 1С:Комплексная автоматизация часто настраивается автоматическая скидка вида Округление суммы документа. Однако пользователи сталкиваются с ситуацией: если кассир применяет карту лояльности и срабатывает автоматическое округление, а затем вводит ручную скидку в табличной части или списывает бонусные баллы покупателя, сумма к оплате вновь содержит копейки. Разберем, почему типовой механизм ведет себя именно так и какими способами можно обеспечить корректное округление суммы чека.
Причины сбоя округления в типовой архитектуре скидок
Проанализируем логику работы подсистемы скидок и наценок в 1С:
- Изолированный расчет дерева автоматических скидок: Скидка типа Округление суммы документа рассчитывается строго внутри общего дерева автоматических скидок. Система рассчитывает корректирующую дельту исходя из текущей стоимости строк и сработавших автоматических правил.
- Ручные скидки не запускают пересчет округления: Ручная скидка (в процентах или суммой) указывается пользователем непосредственно в табличной части
Товары. Изменение суммы строки вручную не приводит к автоматическому пересчету ранее зафиксированной дельты округления, из-за чего результирующая сумма документа теряет округленный вид. - Специфика распределения бонусных баллов: Оплата бонусными баллами распределяется по строкам чека уже после отработки основного дерева автоматических скидок. Соответственно, уменьшение суммы к оплате за счет бонусов снова приводит к появлению дробных долей копеек в итоговой сумме.
Вариант 1. Настройка структуры автоматических скидок в дереве
Если в организации не используются ручные скидки, но округление не всегда срабатывает из-за взаимного влияния автоматических правил, проверим и настроим иерархию скидок:
- Перейдем в справочник скидок и наценок (раздел CRM и маркетинг — Скидки (наценки)).
- Создадим группу верхнего уровня с вариантом совместного применения Умножение или Вытеснение.
- Поместим скидку округления в самый низ этой группы, присвоив ей максимальный порядок применения.
- Все остальные скидки и группы скидок должны находиться выше по приоритету, чтобы округление рассчитывалось на финальном шаге.
Ограничение метода: Если округление должно действовать только для конкретных карт лояльности, его приходится вкладывать во внутренние группы условий. В таком случае округление не будет покрывать скидки из параллельных групп.
Вариант 2. Замена ручных скидок предопределенными шаблонами
Чтобы избежать модификации конфигурации, можно исключить произвольный ввод скидок кассирами в табличной части и перевести их в дерево автоматических правил:
- Запретим кассирам ручное редактирование скидок в правах доступа или настройках РМК.
- Создадим набор автоматических скидок со статусом Действует и условиями применения по кнопке кассира или отдельным служебным картам (например, скидки
3%, 5%, 10%, 20%). - Разместим эти правила в общем дереве скидок выше группы с округлением.
При таком подходе любая предоставленная кассиром скидка будет считаться системой штатной автоматической скидкой, и финальное правило округления корректно рассчитает итоговую сумму чека.
Вариант 3. Настройка параметров бонусных программ и ККТ
Чтобы избежать копеек при списании бонусов без изменения программного кода, выполним следующие настройки:
- Кратность бонусных баллов: В правилах начисления и списания бонусной программы ограничим шаг списания целыми числами, а также зададим максимальный процент оплаты чека бонусами так, чтобы не возникало дробных частей.
- Аппаратное округление на ККТ: Проверим параметры драйвера контрольно-кассовой техники. Многие современные модели фискальных регистраторов поддерживают встроенное округление суммы чека в пользу покупателя при закрытии фискального документа.
Вариант 4. Программная доработка через расширение конфигурации
Если бизнес-процесс требует одновременного использования произвольных ручных скидок, списания баллов и округления чека, оптимальным решением является перехват событий документа через расширение конфигурации (без снятия базы с поддержки):
- Подключаем расширение и находим форму документа
ЧекККМ или форму рабочего места кассира (РМК). - Перехватываем обработчики изменения ручных скидок и завершения распределения бонусных баллов.
- Перед переходом к форме оплаты программно вызываем алгоритм пересчета строки автоматического округления: определяем общую сумму чека с учетом всех ручных правок и списанных бонусов, вычисляем необходимую дельту округления до целого рубля и корректируем скидку-округление в строке с максимальной суммой.