Сталкивались с бесконтрольным наложением скидок?
Типовой сценарий: три акции суммируются, давая 70% скидки вместо ожидаемых 15%. Или промокод срабатывает вместе с общей акцией, и клиент получает товар почти бесплатно. В одном проекте неправильная настройка LAST_DISCOUNT привела к убытку в $900–1.3k за месяц. Корень — неправильная настройка приоритетов и флага LAST_DISCOUNT. Мы настраиваем правила так, чтобы каждая акция применялась строго по условиям, а контроль суммирования исключал убыток.
Наш опыт: 7+ лет работы с Битрикс, более 50 проектов по настройке маркетинга. Согласно документации 1С-Битрикс, LAST_DISCOUNT — ключевой механизм предотвращения множественного применения скидок. Кроме того, мы используем кастомные события OnSaleDiscountRuleAction для нестандартных механик. Правильная настройка может сэкономить до $450–650 в месяц на недополученной выручке.
Почему акции в Битрикс могут суммироваться неправильно?
Проблема возникает, когда несколько правил скидок имеют одинаковый приоритет и не настроен флаг «Прекратить обработку». Например, акция «10% на первый заказ» и «5% на весь каталог» применяются вместе, давая 14.5% вместо 10%. Решение — установить приоритет 100 для основной акции и включить LAST_DISCOUNT. Если нужно суммирование, используйте совместное применение в настройках. В сложных случаях мы добавляем проверку в событие OnSaleDiscountCondition, чтобы программно контролировать применимость.
Пример реализации кастомной акции с условием
// событие OnSaleDiscountCondition class MyCondition extends \Bitrix\Sale\Discount\Condition\Base { public static function getClassName() { return __CLASS__; } public static function getControlId() { return 'MyCondition'; } public static function checkCondition(array $params, array $arOrder) { // Проверяем, что в корзине есть товар из нужной категории $basket = $arOrder['BASKET_ITEMS']; foreach ($basket as $item) { if ($item['IBLOCK_SECTION_ID'] == 42) { return true; } } return false; } } Как отличить скидку каталога от маркетингового правила?
| Тип | Модуль | Область действия | Возможности |
|---|---|---|---|
| Скидка каталога | catalog | Цена товара до корзины | Процент/фикс, периоды, группы |
| Маркетинговое правило | sale | Корзина | Подарки, скидка на доставку, много условий |
Скидки каталога (таблица b_catalog_discount) работают на уровне цены товара до корзины. Маркетинговые правила (раздел «Правила работы с корзиной») — в корзине, позволяют давать подарки, скидки на доставку, условные цепочки. Согласно Wikipedia, скидки каталога — это классические ценовые скидки, а маркетинговые правила — более сложный механизм. Использование маркетинговых правил даёт на 30% больше гибкости, чем скидки каталога, так как можно комбинировать условия и накладывать ограничения.
Создание акции через конструктор
Магазин → Маркетинг → Скидки и акции → Добавить:
-
Условия — конструктор на основе AND/OR:
- Сумма заказа больше X
- В корзине есть товар из раздела N
- Пользователь в группе G
- Используется промокод
Действия:
- Скидка на заказ (процент, фиксированная)
- Скидка на товары из корзины
- Скидка на доставку
- Добавить подарок (товар с нулевой ценой)
Настройки применения:
- Приоритет
- «Прекратить обработку» — важно для взаимоисключающих акций
- Совместное применение с другими скидками
Кастомные события
OnSaleDiscountRuleActionпозволяют реализовать механики в 2-3 раза быстрее, чем создание собственного модуля. Например, мы добавляли скидку на второй товар в корзине — это заняло 2 часа вместо недели разработки.Промокоды: единые, уникальные и привязанные к пользователю
В настройках акции включается купон (
Магазин → Маркетинг → Купоны). Типы купонов:Тип Описание Единый для всех Один код, несколько использований Уникальный Один код — одно использование Уникальный для пользователя Привязан к конкретному пользователю Купоны хранятся в
b_sale_discount_coupon. При активации купон проверяется через\Bitrix\Sale\DiscountCouponsManager::add. Если промокод не применяется, проверяйте активность купона, срок действия и тип — часто проблема в кэшировании данных корзины.Что делать, если акции не срабатывают?
Первым делом проверьте лог ошибок в
Магазин → Маркетинг → Скидки и акции → Отчет о применении. Если акция не применяется, убедитесь, что её активность включена, и условия соответствуют корзине. Также посмотрите на группировку условий: возможно, условие «И» вместо «ИЛИ» блокирует выполнение. Включите режим отладки вbitrix/php_interface/dbconn.phpдля просмотра SQL-запросов:$DB->showSqlStat = true;. Это поможет найти проблему с кэшированием или неправильной связью.Что входит в работу?
Этап Длительность Аудит текущих акций 1–2 часа Проектирование логики 1–3 часа Реализация через конструктор или код 3–5 часов Тестирование на тестовом заказе 1–2 часа Документация и обучение 1 час - Аудит текущих акций и правил
- Проектирование логики применения скидок
- Реализация через конструктор или кастомный код
- Тестирование на тестовом заказе
- Документация и обучение персонала
- Поддержка в течение месяца после запуска
Свяжитесь с нами для аудита ваших маркетинговых правил. Закажите консультацию, чтобы избежать убытков от некорректных скидок. Настройка 3–5 стандартных акций с промокодами — 3–5 часов. Сложные механики с подарками и кастомными действиями — 1–2 рабочих дня. Стоимость рассчитывается индивидуально после анализа ТЗ. Дополнительно вы получаете гарантию на корректную работу акций в течение 30 дней.
Получите детальный аудит и план оптимизации — просто напишите нам.







