Скидки и правила корзины в Битрикс: рабочие приёмы
Правила скидок в интернет-магазине на Битрикс конфликтуют, тормозят корзину или срабатывают не так, как задумано. Разбираем три подхода, которые работают на живых проектах.

На магазине с двумя десятками активных правил скидок корзина начинает считаться по три секунды, а при добавлении нового правила ломается акция, которая работала месяц. Битрикс даёт несколько механизмов скидок — скидки на товар, правила корзины, купоны — и все они могут применяться одновременно. Без системы в их использовании получается хаос: непонятно, какое правило сработает первым, почему одна скидка отменяет другую и где искать ошибку.
Ниже — три подхода к организации скидок, которые решают типичные проблемы: конфликты правил, медленный расчёт корзины и сложность отладки. Примеры для Битрикс 23.х–24.х с модулем Интернет-магазин (sale).
Подход 1: жёсткие приоритеты вместо одного уровня
По умолчанию все правила корзины в Битрикс имеют приоритет, но многие ставят всем значение 1 или оставляют пустым. В результате система перебирает правила в порядке создания, и предсказать итоговую скидку невозможно.
Решение: разнести правила по уровням приоритета1 с шагом 100 и документировать логику.
- Приоритет 100 — базовые скидки (скидка на категорию, накопительная по сумме заказов).
- Приоритет 200 — акционные правила (скидка недели, сезонная распродажа).
- Приоритет 300 — купоны и персональные предложения.
- Приоритет 400 — правила доставки (бесплатная доставка от суммы).
В настройках каждого правила корзины (Магазин → Скидки → Правила работы с корзиной) укажите приоритет в соответствующем поле. Чем выше число, тем позже применяется правило.
// Пример: получение активных правил с сортировкой по приоритету
use Bitrix\Sale\Discount;
$discounts = Discount::getList([
'filter' => ['ACTIVE' => 'Y'],
'order' => ['PRIORITY' => 'ASC', 'SORT' => 'ASC']
]);
while ($discount = $discounts->fetch()) {
// обработка правил в порядке приоритета
}
Цена подхода: нужно заранее спроектировать иерархию и объяснить её контент-менеджерам. Зато при добавлении нового правила сразу понятно, куда его поставить, и конфликты исключены.
Подход 2: разделение скидок на товар и правил корзины
В Битрикс есть два механизма: скидки на товар (раздел Каталог → Скидки) и правила корзины (раздел Магазин → Правила работы с корзиной). Первые применяются на уровне цены товара до добавления в корзину, вторые — при расчёте заказа.
Проблема: если использовать оба одновременно бессистемно, итоговая скидка вычисляется как сумма или произведение, и результат непредсказуем. Покупатель видит одну цену в каталоге, другую в корзине.
Решение: использовать скидки на товар только для постоянных снижений цены (уценка, распродажа остатков), а все акционные и персональные скидки делать через правила корзины.
| Тип скидки | Где создавать | Когда применяется |
|---|---|---|
| Уценка, распродажа конкретных товаров | Каталог → Скидки | Сразу при показе цены |
| Скидка на категорию, бренд | Правила корзины | При расчёте корзины |
| Скидка от суммы заказа | Правила корзины | При расчёте корзины |
| Купоны и промокоды | Правила корзины с купонами | При вводе купона |
| Бесплатная доставка | Правила корзины | При выборе доставки |
При таком разделении цена в каталоге совпадает с ценой в корзине для товаров без акций, а акционные условия понятны покупателю заранее.
Подход 3: купоны для сложных условий
Правила корзины в Битрикс позволяют задавать условия через визуальный конструктор: если товар из раздела X и сумма больше Y. Но для сложной логики — «скидка на второй товар той же категории» или «подарок при покупке трёх разных товаров из списка» — конструктор становится громоздким, правило работает медленно.
Решение: вынести сложные условия в отдельное правило с уникальным купоном. Купон даётся покупателю вручную или генерируется автоматически при выполнении внешнего условия.
Преимущества:
- Правило с купоном не участвует в расчёте до момента ввода купона — корзина считается быстрее.
- Можно ограничить количество применений купона (одноразовый, на N заказов).
- Легче отследить эффективность акции — по статистике использования купонов.
Создание правила с купоном: в настройках правила корзины отметьте «Применять, если введён купон», затем сгенерируйте купоны в разделе Магазин → Купоны. Каждому купону можно задать срок действия и количество активаций.
Купоны решают не только технические, но и маркетинговые задачи: персонализированная скидка через email, ограниченное предложение для VIP-клиентов, реферальная программа — всё это работает через уникальные купоны, а не через громоздкие правила для всех.
Когда что выбирать
Используйте приоритеты, если у вас больше пяти активных правил одновременно или если правила могут пересекаться по условиям (например, скидка на категорию и скидка от суммы). Без приоритетов итоговая скидка будет зависеть от порядка создания правил.
Разделяйте скидки на товар и правила корзины, если важно, чтобы цена в каталоге и в корзине совпадала до применения акций. Это особенно критично для Яндекс Маркета и других площадок, которые проверяют соответствие цены в фиде и на сайте.
Используйте купоны, если условие акции сложнее «скидка N% на товары из раздела X» или если нужна персонализация. Также купоны обязательны, если хотите ограничить количество применений акции или собрать статистику по каналам привлечения.
Что ломается
Правила не суммируются, хотя должны. Проверьте поле «Тип скидки» в настройках правила: если стоит «Максимальная», применится только одно правило с наибольшей скидкой. Для суммирования нескольких правил все они должны иметь тип «Суммировать».
Купон не применяется. Убедитесь, что в настройках правила корзины, к которому привязан купон, отмечен чекбокс «Применять, если введён купон». Без этой галочки правило будет работать всегда, а купон игнорироваться.
Корзина считается медленно. Откройте Магазин → Настройки → Настройки модуля и включите опцию «Кешировать скидки». Битрикс будет пересчитывать правила только при изменении корзины, а не при каждом обращении. Учтите: при включённом кеше изменения в правилах могут отображаться не сразу — сбрасывайте кеш после редактирования.
Скидка применяется не к тем товарам. В конструкторе условий правила проверьте вложенность скобок и логические операторы (И/ИЛИ). Частая ошибка: условие «Товар из раздела A ИЛИ из раздела B И цена больше 1000» читается системой как «(A ИЛИ B) И цена > 1000», хотя задумывалось «A ИЛИ (B И цена > 1000)». Группируйте условия явно.
Правило не работает для определённой группы пользователей. Проверьте вкладку «Ограничения» в настройках правила: там могут быть заданы группы пользователей, для которых правило активно или неактивно. Если указана группа, правило не применится к остальным.
Что делать дальше
После настройки правил протестируйте корзину в режиме разных пользователей: гость, зарегистрированный покупатель, VIP-клиент. Создайте тестовый заказ с разными комбинациями товаров и проверьте, что итоговая скидка совпадает с ожидаемой.
Включите логирование применения скидок (в настройках модуля sale есть опция «Записывать в лог применение правил корзины») и смотрите, какие правила сработали для конкретного заказа. Лог пишется в /bitrix/modules/sale/log/ — там будет видно порядок применения правил и финальную скидку по каждому.
Регулярно проверяйте статистику использования купонов (Магазин → Купоны → Статистика) и отключайте правила, которыми не пользуются — каждое активное правило замедляет расчёт корзины, даже если его условия ни разу не выполнились.
1 Приоритет правила корзины — числовое значение, определяющее порядок применения правил. Правила с меньшим приоритетом (меньшее число) обрабатываются раньше. Если приоритет не задан, правила применяются в порядке их создания, что может привести к непредсказуемому результату при пересечении условий.
Защитник прав потребителей: Досудебные претензии на возврат товара со ссылками на ЗоЗПП.
Спросить за 15 ₽Источники: Документация Битрикс: Правила работы с корзиной, Документация Битрикс: Скидки на товары
Частые вопросы
Можно ли применить несколько правил скидок к одному товару одновременно?
Почему скидка не отображается в каталоге, а появляется только в корзине?
Что делать, если после обновления Битрикс правила корзины перестали работать?
Как ограничить скидку одним применением на покупателя?
Почему корзина тормозит, если активных правил всего три?
Можно ли сделать подарок за покупку через правила корзины?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.