Как применить скидки по двум картам лояльности в чеке ККМ в 1С:Управление торговлей 11

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

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

Рассмотрим подробно, почему возникает данная проблема, как устроена механика расчета скидок в 1С и какими способами можно настроить одновременный учет двух скидок без сбоев при пробитии чеков на ККТ.

Анализ ограничений типовой конфигурации

Проанализируем устройство документа Чек ККМ в типовом решении 1С:Управление торговлей 11. В шапке документа предусмотрен только один реквизит — КартаЛояльности. Штатный механизм расчета автоматических скидок работает по следующему алгоритму:

  1. Кассир считывает штрихкод или магнитную полосу карты лояльности.
  2. Реквизит КартаЛояльности заполняется найденным экземпляром справочника.
  3. Система проверяет дерево правил из справочника Скидки (наценки) и применяет условия, привязанные к данной конкретной карте.

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

Причины проблем с округлением копеек

Выясним причину, почему при попытке суммирования скидок отваливается округление чека. Онлайн-кассы (ККТ) требуют строгого соблюдения формулы расчетной суммы по каждой позиции табличной части:

Цена * Количество - Скидка = Итоговая сумма позиции

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

  1. Неверный порядок расчета округления: Если автоматическое правило «Округление суммы документа» находится внутри одной группы скидок с другими акциями или имеет слишком высокий приоритет, оно срабатывает до того, как применились все процентные скидки. В результате итоговая сумма позиции снова получает дроби после округления.
  2. Расхождение распределения скидки по строкам: Фискальный регистратор проверяет сумму чека попозиционно. Если скидка за вторую карту распределяется неравномерно, касса возвращает ошибку несовпадения итогов.

Штатные способы решения без доработки кода

Рассмотрим проверенные варианты настройки программы, которые позволяют учесть условия двух карт и сохранить правильное округление чека.

1. Использование промокодов или разовых купонов

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

  1. В шапку документа Чек ККМ считывается основная карта покупателя (в реквизит КартаЛояльности).
  2. Скидка по второй (разовой) карте применяется кассиром путем ввода промокода или сканирования штрихкода разового купона.
  3. В справочнике Скидки (наценки) создается группа скидок со способом совместного применения Сложение или Последовательное применение.

2. Совмещение скидочной и бонусной систем

Штатная функциональность 1С позволяет разделить механики:

  1. Первая карта предоставляет процентную скидку непосредственно при расчете цены товаров в чеке.
  2. Вторая система начисляется в виде бонусных баллов. При оформлении продажи кассир выполняет списание бонусов в счет оплаты чека, что не вступает в конфликт с процентной скидкой по основной карте.

3. Правильная настройка порядка округления

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

  1. Перейдем в раздел Продажи — Настройки и справочники — Скидки (наценки).
  2. Создадим или найдем автоматическую скидку с типом Округление суммы чека в пользу покупателя.
  3. Поместим данное правило в самый корень дерева скидок (на верхний уровень) и зададим ему самый низший приоритет (переместим в самый низ списка).

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

Альтернативные варианты доработки системы

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

Подключение внешней обработки скидок

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

Использование расширения конфигурации (.cfe)

С помощью расширения конфигурации можно добавить в документ Чек ККМ дополнительный реквизит или табличную часть для хранения данных второй карты, а также переопределить серверную логику модулей ценообразования. Данный способ позволяет сохранить конфигурацию на поддержке, однако потребует проверки и адаптации при обновлении версии 1С:Управление торговлей.

← На главную