Акция «получите скидку или подарок на выбор» выглядит просто, но в 1С-Битрикс это два разных действия правила работы с корзиной, которые нужно грамотно развести между собой. Разберём, что доступно из коробки, а что придётся дорабатывать.
Что за механика и в чём сложность
Суть акции: при выполнении условия (например, заказ от определённой суммы) покупатель получает либо скидку, либо подарок — но не то и другое сразу. Выбор делает сам клиент.
В терминах 1С-Битрикс скидка и подарок — это два независимых действия внутри механизма Правила работы с корзиной (модуль sale). По отдельности оба действия штатные и настраиваются без единой строки кода. Проблема в слове «или»: движок скидок применяет все подходящие правила, а не показывает пользователю развилку. Поэтому «на выбор» — это всегда вопрос того, как ограничить одновременное срабатывание и как дать клиенту переключатель.
Что умеет Битрикс из коробки
Правила работы с корзиной живут в разделе Магазин → Настройки → Правила работы с корзиной (в редакциях с маркетингом — Магазин → Маркетинг → Правила работы с корзиной). Каждое правило состоит из трёх частей:
- Условия — когда правило срабатывает (сумма корзины, наличие товара, категория, свойства пользователя, наличие купона);
- Действие — что делает (процентная или фиксированная скидка, скидка на доставку, подарок в корзину);
- Приоритет и группа — как правило взаимодействует с другими.
Действие «подарок» появилось в объединённых (новых) скидках: правило добавляет товар в корзину со стоимостью 0 или со скидкой 100%. То есть и «скидка», и «подарок» технически — это разные типы действий одного и того же правила. Задача сводится к тому, чтобы для одного покупателя сработало ровно одно из них.
Настройка действия «подарок»
Самый быстрый путь к подарочной части — предустановленная маркетинговая акция «Подарок к заказу». Идёте в Магазин → Маркетинг, создаёте акцию из шаблона и указываете:
- условие срабатывания (например, сумма корзины
от 5000 ₽); - товар-подарок или набор товаров, из которых клиент выбирает один;
- количество подарков и период действия акции.
Когда подарков несколько и покупатель выбирает один из них, важно ограничить количество: в настройках действия задаётся лимит подарочных позиций, иначе в корзину упадут все товары набора сразу. На витрине выбор подарка выводит компонент корзины sale.basket.basket (или его аналог в вашем шаблоне) — он показывает блок «Выберите подарок», если акция это поддерживает.
Как реализовать сам «выбор»
Штатной галочки «скидка или подарок» нет, поэтому развилку собирают одним из трёх способов — от простого к сложному.
| Способ | Как работает | Когда подходит |
|---|---|---|
| Два купона | Создаёте два взаимоисключающих правила: одно даёт скидку по купону SALE, второе — подарок по купону GIFT. Клиент вводит только один. | Акции с рассылкой промокодов, ручной выбор менеджером. |
| Два правила + приоритет | Оба правила без купона, но во взаимоисключающей группе; срабатывает одно по приоритету и признаку «Останавливать дальнейшую обработку». | Автоматическая акция без участия клиента — «система сама решает, что выгоднее». |
| Доработка корзины | В шаблон добавляется переключатель, а выбор пишется в свойство заказа или в сессию; обработчик OnSaleDiscountBeforeApply активирует нужное действие. | Настоящий выбор пользователя прямо в корзине. |
Настоящее «на выбор для покупателя» честно закрывается только третьим вариантом. Свойство выбора удобно хранить в UF-поле заказа или передавать через дополнительный параметр корзины, а логику применения вешать на событие Sale::OnSaleDiscountBeforeApply либо на пересчёт корзины.
Приоритеты и запрет суммирования
Чтобы скидка и подарок не сработали одновременно, оба правила помещают в общую группу приоритетов и включают флаг, который останавливает дальнейшую обработку скидок после применения. В интерфейсе правила это поле приоритет (чем больше число, тем раньше применяется) и признак прекращения обработки.
- Задайте обоим правилам одинаковую или соседнюю группу, чтобы движок рассматривал их как альтернативы;
- у сработавшего правила включите «Прекратить дальнейшее применение» — тогда второе действие уже не наложится;
- если участвуют купоны, ограничьте их типом «на один заказ», чтобы клиент не применил оба.
Подводные камни
Механика «или» тонкая, и на ней легко получить двойное вознаграждение или конфликт с другими акциями. На что смотреть:
- Смешение со скидками каталога. Скидки каталога и правила корзины считаются на разных этапах; подарок за «сумму заказа» лучше считать от суммы после каталожных скидок, чтобы условие не срабатывало ложно.
- Частичный возврат и правки заказа. Если менеджер меняет состав заказа в админке, подарок может остаться, а условие уже не выполняется — нужен пересчёт скидок при редактировании.
- Накопительные программы. Проверьте, что подарок не суммируется с накопительной скидкой, если это не задумано (см. отдельную статью про купоны без суммирования).
- Производительность. Большое число активных правил замедляет пересчёт корзины; лишние отключайте, а не держите «на всякий случай».
Итог
«Скидка или подарок на выбор» в 1С-Битрикс собирается из штатных правил работы с корзиной: подарок — через действие «подарок» или предустановленную акцию «Подарок к заказу», скидка — через обычное правило, а «или» обеспечивают взаимоисключающие группы, приоритеты и признак прекращения обработки. Реальный выбор на стороне покупателя добавляется доработкой корзины и обработчиком событий скидок.
Если нужно, чтобы механика работала предсказуемо, не задваивала бонусы и не тормозила витрину, мы в B2Bsite настраиваем правила корзины, реализуем переключатель выбора и тестируем граничные сценарии на боевых данных магазина.
Частые вопросы
Есть ли в Битрикс готовая опция «скидка или подарок на выбор»?
Нет, отдельной галочки нет. Скидка и подарок — это два разных действия правил корзины, а «выбор» собирается из купонов, взаимоисключающих правил или доработки корзины.
Как быстрее всего настроить подарок к заказу?
Через предустановленную маркетинговую акцию «Подарок к заказу» в разделе Магазин → Маркетинг. Указываете условие, товар-подарок и период действия.
Как запретить получение и скидки, и подарка одновременно?
Поместите оба правила в общую группу приоритетов и включите у сработавшего признак прекращения дальнейшей обработки скидок. Для купонов используйте тип «на один заказ».
Можно ли дать покупателю выбор прямо в корзине?
Да, но это доработка: в шаблон добавляется переключатель, выбор сохраняется в свойство заказа или сессию, а применение действия вешается на событие OnSaleDiscountBeforeApply.
Как сделать выбор из нескольких подарков?
В действии «подарок» задаётся набор товаров и лимит подарочных позиций. Тогда покупатель выбирает один товар из набора, а не получает все сразу.
От какой суммы считать условие акции?
Обычно от суммы корзины после применения скидок каталога. Иначе условие может срабатывать по «грязной» цене и выдавать подарок ошибочно.
Почему подарок остаётся при редактировании заказа менеджером?
При ручной правке состава в админке скидки не всегда пересчитываются автоматически. Нужно инициировать пересчёт корзины, чтобы правило переоценило условие.
Влияет ли количество правил на скорость сайта?
Да, каждое активное правило участвует в пересчёте корзины. Неиспользуемые акции лучше отключать, чтобы не нагружать оформление заказа.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.