Почему сбивается автоматическое округление чека при ручных скидках или списании бонусов в 1С:Управление торговлей 11 и как это исправить?

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

В типовых конфигурациях 1С:Управление торговлей (начиная с редакции 11), а также в 1С:ERP и 1С:Комплексная автоматизация часто настраивается автоматическая скидка вида Округление суммы документа. Однако пользователи сталкиваются с ситуацией: если кассир применяет карту лояльности и срабатывает автоматическое округление, а затем вводит ручную скидку в табличной части или списывает бонусные баллы покупателя, сумма к оплате вновь содержит копейки. Разберем, почему типовой механизм ведет себя именно так и какими способами можно обеспечить корректное округление суммы чека.

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

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

  1. Изолированный расчет дерева автоматических скидок: Скидка типа Округление суммы документа рассчитывается строго внутри общего дерева автоматических скидок. Система рассчитывает корректирующую дельту исходя из текущей стоимости строк и сработавших автоматических правил.
  2. Ручные скидки не запускают пересчет округления: Ручная скидка (в процентах или суммой) указывается пользователем непосредственно в табличной части Товары. Изменение суммы строки вручную не приводит к автоматическому пересчету ранее зафиксированной дельты округления, из-за чего результирующая сумма документа теряет округленный вид.
  3. Специфика распределения бонусных баллов: Оплата бонусными баллами распределяется по строкам чека уже после отработки основного дерева автоматических скидок. Соответственно, уменьшение суммы к оплате за счет бонусов снова приводит к появлению дробных долей копеек в итоговой сумме.

Вариант 1. Настройка структуры автоматических скидок в дереве

Если в организации не используются ручные скидки, но округление не всегда срабатывает из-за взаимного влияния автоматических правил, проверим и настроим иерархию скидок:

  1. Перейдем в справочник скидок и наценок (раздел CRM и маркетинг — Скидки (наценки)).
  2. Создадим группу верхнего уровня с вариантом совместного применения Умножение или Вытеснение.
  3. Поместим скидку округления в самый низ этой группы, присвоив ей максимальный порядок применения.
  4. Все остальные скидки и группы скидок должны находиться выше по приоритету, чтобы округление рассчитывалось на финальном шаге.

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

Вариант 2. Замена ручных скидок предопределенными шаблонами

Чтобы избежать модификации конфигурации, можно исключить произвольный ввод скидок кассирами в табличной части и перевести их в дерево автоматических правил:

  1. Запретим кассирам ручное редактирование скидок в правах доступа или настройках РМК.
  2. Создадим набор автоматических скидок со статусом Действует и условиями применения по кнопке кассира или отдельным служебным картам (например, скидки 3%, 5%, 10%, 20%).
  3. Разместим эти правила в общем дереве скидок выше группы с округлением.

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

Вариант 3. Настройка параметров бонусных программ и ККТ

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

  1. Кратность бонусных баллов: В правилах начисления и списания бонусной программы ограничим шаг списания целыми числами, а также зададим максимальный процент оплаты чека бонусами так, чтобы не возникало дробных частей.
  2. Аппаратное округление на ККТ: Проверим параметры драйвера контрольно-кассовой техники. Многие современные модели фискальных регистраторов поддерживают встроенное округление суммы чека в пользу покупателя при закрытии фискального документа.

Вариант 4. Программная доработка через расширение конфигурации

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

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