Скидки в Битрикс: почему правила конфликтуют и что с этим делать
Добавили новую скидку — перестали работать старые. Разбираем типичные ошибки в настройке правил корзины и способы их избежать без переписывания всей системы.

Вы настроили акцию «скидка 15% на вторую пару обуви», проверили на тестовом заказе — работает. Через неделю от менеджеров приходит жалоба: клиенты не получают скидку по промокоду, хотя раньше всё было нормально. Оказывается, новое правило перехватывает заказы раньше старого, и покупатель уходит либо без скидки, либо с меньшей выгодой. Битрикс применяет правила корзины последовательно, и порядок их срабатывания часто не совпадает с вашими ожиданиями.
Почему правила конфликтуют
Модуль «Управление торговым каталогом» в 1C-Битрикс применяет скидки и правила корзины по приоритету1. Если у двух правил одинаковый приоритет, побеждает то, которое создано раньше — но это поведение нигде в интерфейсе не показано. Когда правил больше десяти, отследить порядок срабатывания вручную невозможно.
Вторая причина — флаг «Прекратить дальнейшее применение правил». Если он установлен, все следующие правила игнорируются, даже если они должны были дать покупателю бо́льшую выгоду. Типичная ситуация: акция «скидка 500 рублей при заказе от 5000» блокирует промокод на 20%, и клиент получает меньше, чем мог бы.
Сноска: 1Приоритет — целое число от 1 до 999. Чем меньше значение, тем раньше правило применяется. Правила с приоритетом 10 сработают перед правилами с приоритетом 100.Четыре подхода к управлению правилами
Жёсткая иерархия с зазорами
Назначайте приоритеты с шагом 10 или 50, а не подряд. Промокоды — приоритет 100–150, сезонные акции — 200–250, накопительные скидки — 300–350. Когда нужно вставить новое правило между существующими, у вас остаётся свободное место.
Цена подхода: придётся вести таблицу соответствия диапазонов и типов акций. Без документации через полгода никто не вспомнит, почему одно правило стоит на 170, а другое на 210.
Группы взаимоисключения
Битрикс позволяет указать для правила поле «Группа правил корзины». Если в одной группе несколько правил, применится только одно — с наивысшим приоритетом среди подошедших. Это удобно для промокодов: все купоны в одну группу, и покупатель не сможет ввести два промокода одновременно.
Цена: группы работают только внутри себя. Правило из группы «Промокоды» может конфликтовать с правилом из группы «Сезонные акции», если их приоритеты выставлены неправильно.
Упрощение условий
Сложные условия вида «товар из категории X и Y, но не Z, и сумма заказа больше 3000, и клиент зарегистрирован не позднее месяца назад» ломаются при изменении структуры каталога или при переносе товаров между разделами. Чем проще условие, тем меньше шансов, что оно перестанет срабатывать после обновления каталога.
Подход: вместо условия на категории привяжите скидку к свойству товара «Участвует в акции». Меняется список товаров — меняете значение свойства, а не правило корзины.
Цена: дополнительное свойство инфобоков, которое нужно заполнять вручную или импортом.
Поэтапное применение
Разделите правила на несколько наборов по времени действия. Одно правило активно только в будни, другое — только в выходные, третье — только в первую неделю месяца. Это снижает количество одновременно активных правил и упрощает отладку.
Цена: приходится дублировать логику в календаре акций и следить, чтобы периоды не пересекались случайно.
| Подход | Когда использовать | Главный минус |
|---|---|---|
| Жёсткая иерархия | Правил больше 15, типы акций устоялись | Нужна внешняя документация |
| Группы взаимоисключения | Много промокодов, нельзя применять вместе | Не защищает от конфликтов между группами |
| Упрощение условий | Частые изменения структуры каталога | Дополнительное свойство в инфоблоке |
| Поэтапное применение | Акции привязаны к календарю, пересечений мало | Дублирование логики в датах |
Когда что выбирать
Если у вас меньше десяти правил и они редко меняются — достаточно расставить приоритеты вручную с зазором 10. Если промокодов больше пяти — заведите для них отдельную группу и поставьте высокий приоритет, чтобы они срабатывали первыми.
Если правила часто конфликтуют из-за изменений в каталоге, перенесите логику отбора товаров на уровень свойств. Вместо «все товары из раздела «Летняя коллекция»» используйте «все товары, у которых свойство «Сезон» = «Лето»».
Если правил больше двадцати — комбинируйте подходы. Жёсткая иерархия для разделения по типам, группы взаимоисключения для промокодов внутри типа, упрощённые условия для товаров.
Правило, которое срабатывает не всегда, хуже правила, которое не срабатывает никогда: во втором случае вы хотя бы знаете, что оно сломано.
Что ломается первым
Производительность на больших корзинах
Битрикс пересчитывает правила корзины при каждом изменении состава заказа. Если у вас 30 активных правил и клиент добавил в корзину 15 товаров, система проверит 450 комбинаций. На слабом хостинге это даёт задержку в несколько секунд при каждом клике «Добавить в корзину».
Решение: отключайте правила, которые не используются. Даже если акция закончилась, но правило осталось активным, оно продолжает выполняться и тормозить корзину.
Условия на данные из CRM или внешних систем
Если условие правила проверяет данные из внешней системы — например, баланс бонусного счёта клиента в CRM — каждое обновление корзины вызывает запрос к API. При обрыве соединения правило не срабатывает, но ошибка нигде не логируется. Клиент видит полную цену, а вы не знаете, что скидка не применилась.
Решение: кешируйте внешние данные на стороне Битрикс или переносите их в пользовательские поля при авторизации. Проверка локального поля работает в сотни раз быстрее и не зависит от доступности внешнего сервиса.
Конфликты после обновления Битрикс
В версиях 20.x и 21.x модуля «Управление торговым каталогом» менялась логика применения правил корзины к товарам с вариациями (торговые предложения). Правило, настроенное на товар, могло перестать работать для его предложений, или наоборот — начать применяться ко всем предложениям сразу, хотя раньше действовало выборочно.
Решение: после обновления модуля проверьте все активные правила на тестовой корзине. Особенно — правила с условиями на конкретные товары, свойства предложений и остатки на складе.
Как проверять правила до запуска
Битрикс не даёт инструмента для симуляции корзины, поэтому проверку приходится делать вручную:
- Создайте тестовый заказ с составом, который должен попасть под новое правило.
- Проверьте, что правило сработало и итоговая цена изменилась корректно.
- Добавьте в корзину товар, который не должен попадать под условие — убедитесь, что скидка не применилась.
- Добавьте промокод или другое правило, которое должно работать одновременно, — проверьте, что оба правила применились или сработало то, которое нужно.
- Очистите корзину, выйдите из аккаунта, зайдите как новый пользователь — повторите проверку. Некоторые правила зависят от авторизации или групп пользователей.
Если правил больше пяти, ведите таблицу тестовых сценариев: состав корзины, ожидаемая скидка, фактический результат. После каждого изменения правил прогоняйте всю таблицу заново.
Что делать дальше
Проведите аудит действующих правил: отключите неактивные, объедините дублирующиеся, расставьте приоритеты с зазорами. Заведите документ со списком правил, их приоритетами и датами действия — таблица в Excel или Notion подойдёт. Настройте уведомления менеджерам о том, когда заканчивается срок действия акции, чтобы правило было отключено вовремя, а не висело мёртвым грузом ещё полгода.
Если на сайте больше 20 активных правил одновременно, рассмотрите переход на внешний модуль управления акциями или кастомную разработку: стандартный механизм Битрикс на таких объёмах становится узким местом.
Защитник прав потребителей: Досудебные претензии на возврат товара со ссылками на ЗоЗПП.
Спросить за 15 ₽Источники: Документация 1C-Битрикс: Правила работы с корзиной
Частые вопросы
Можно ли увидеть, какие правила применились к конкретному заказу?
Что делать, если после добавления нового правила старые перестали работать?
Как запретить одновременное использование двух промокодов?
Правило настроено, но не применяется к товарам в корзине. В чём причина?
Корзина стала медленно пересчитываться после добавления правил. Как ускорить?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.