Как настроить начисление бонусов в 1С:Розница за минусом скидки?

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

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

Анализ поведения бонусной системы

Рассмотрим, почему это происходит. В архитектуре 1С:Розница механизм начисления бонусов базируется на настройках Правила начисления бонусов. Типовой программный код системы настроен так, что в качестве Расчетной базы выступает сумма документа, зафиксированная до применения корректировок, таких как ручные скидки. Система воспринимает ручную скидку как изменение итоговой цены реализации, но не пересчитывает при этом параметры бонусной программы в автоматическом режиме.

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

Варианты решения задачи

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

  1. Обновление конфигурации: Для начала убедимся, что мы используем актуальный релиз. Хотя логика бонусного движка в версиях 2.2 и 2.3 во многом схожа, в новых версиях исправлено множество ошибок и улучшена работа с сервисами лояльности. Рекомендуем развернуть демо-базу последней версии и проверить, не появилось ли в обновленном коде требуемых вам механизмов.
  2. Переход на автоматические скидки: По возможности переведите процесс предоставления скидок из ручного режима в автоматический. Это позволит использовать механизм Последовательного применения скидок, который корректно взаимодействует с бонусной системой 1С:Розница.
  3. Доработка кода конфигурации: Если бизнес-процессы вашей компании требуют строгого сохранения ручного ввода скидок, стандартных настроек будет недостаточно. Потребуется вмешательство в программный код модуля менеджера бонусных программ.

Технические рекомендации по реализации

Если вы решили модифицировать конфигурацию, рассмотрим, что именно необходимо проанализировать. Основная логика начисления бонусов скрыта в модулях, отвечающих за проведение Чека. В частности, необходимо обратить внимание на процедуры пересчета скидок в момент закрытия чека.

При доработке кода важно учитывать следующий принцип:


// Пример логики, которую необходимо учитывать при кастомизации:
// Получение суммы после скидок для расчета бонусов
СуммаДляРасчетаБонусов = Объект.СуммаДокумента - Объект.СуммаСкидок;

// Применение этой суммы в функции начисления
НачислитьБонусы(Клиент, СуммаДляРасчетаБонусов * КоэффициентБонусов);

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

Заключение

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

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

← На главную