В практической работе кассиров и маркетологов часто возникает ситуация, когда покупатель хочет одновременно применить постоянную дисконтную карту и разовую акционную карту (или купон). При попытке реализовать такую логику в прикладном решении 1С:Управление торговлей 11 специалисты сталкиваются с архитектурным ограничением программы, а также со сбоями при округлении копеек в кассовых чеках.
Рассмотрим подробно, почему возникает данная проблема, как устроена механика расчета скидок в 1С и какими способами можно настроить одновременный учет двух скидок без сбоев при пробитии чеков на ККТ.
Проанализируем устройство документа Чек ККМ в типовом решении 1С:Управление торговлей 11. В шапке документа предусмотрен только один реквизит — КартаЛояльности. Штатный механизм расчета автоматических скидок работает по следующему алгоритму:
КартаЛояльности заполняется найденным экземпляром справочника.Скидки (наценки) и применяет условия, привязанные к данной конкретной карте.Если считать вторую карту в тот же документ, она просто перезапишет значение реквизита КартаЛояльности, из-за чего скидка по первой карте отменится. Попытка просто сложить проценты скидок «в лоб» часто приводит к ошибкам округления и блокировке пробития чека на фискальном регистраторе.
Выясним причину, почему при попытке суммирования скидок отваливается округление чека. Онлайн-кассы (ККТ) требуют строгого соблюдения формулы расчетной суммы по каждой позиции табличной части:
Цена * Количество - Скидка = Итоговая сумма позиции
При использовании сложения или последовательного умножения нескольких процентных скидок в табличной части формируются дробные копейки. Ошибки возникают по двум причинам:
Рассмотрим проверенные варианты настройки программы, которые позволяют учесть условия двух карт и сохранить правильное округление чека.
1. Использование промокодов или разовых купонов
Если вторая карта является одноразовой, ее не обязательно регистрировать в качестве элемента справочника карт лояльности. Разовую скидку настраивают через механизм промокодов:
Чек ККМ считывается основная карта покупателя (в реквизит КартаЛояльности).Скидки (наценки) создается группа скидок со способом совместного применения Сложение или Последовательное применение.2. Совмещение скидочной и бонусной систем
Штатная функциональность 1С позволяет разделить механики:
3. Правильная настройка порядка округления
Чтобы избежать ошибок округления при сложении процентных скидок, настроим порядок их применения в дерево правил:
При такой настройке округление будет выполняться строго после того, как система рассчитает и сложит все скидки по картам и акциям.
Если бизнес-процесс требует присутствия двух физических карт лояльности в документе, разберем варианты технической реализации:
Подключение внешней обработки скидок
1С поддерживают механизм внешних подключаемых обработок расчета скидок. Разрабатывается обработка с типом Скидка (наценка), которая перехватывает момент расчета и самостоятельно запрашивает ввод дополнительного кода, рассчитывая сложный процент с корректным распределением копеек по строкам табличной части.
Использование расширения конфигурации (.cfe)
С помощью расширения конфигурации можно добавить в документ Чек ККМ дополнительный реквизит или табличную часть для хранения данных второй карты, а также переопределить серверную логику модулей ценообразования. Данный способ позволяет сохранить конфигурацию на поддержке, однако потребует проверки и адаптации при обновлении версии 1С:Управление торговлей.