Сталкивались с бесконтрольным наложением скидок?
Типовой сценарий: три акции суммируются, давая 70% скидки вместо ожидаемых 15%. Или промокод срабатывает вместе с общей акцией, и клиент получает товар почти бесплатно. В одном проекте неправильная настройка LAST_DISCOUNT привела к убытку в 100 000 ₽ за месяц. Корень — неправильная настройка приоритетов и флага LAST_DISCOUNT. Мы настраиваем правила так, чтобы каждая акция применялась строго по условиям, а контроль суммирования исключал убыток.
Наш опыт: 7+ лет работы с Битрикс, более 50 проектов по настройке маркетинга. Согласно документации 1С-Битрикс, LAST_DISCOUNT — ключевой механизм предотвращения множественного применения скидок. Кроме того, мы используем кастомные события OnSaleDiscountRuleAction для нестандартных механик. Правильная настройка может сэкономить до 50 000 ₽ в месяц на недополученной выручке.
Почему акции в Битрикс могут суммироваться неправильно?
Проблема возникает, когда несколько правил скидок имеют одинаковый приоритет и не настроен флаг «Прекратить обработку». Например, акция «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 дней.
Получите детальный аудит и план оптимизации — просто напишите нам.







