Механики вида «купи два — третий бесплатно» выглядят просто, но в 1С-Битрикс у них нет отдельной кнопки. Всё собирается из условий и действий правил работы с корзиной, а часть сценариев требует кастомного действия. Разберём, что реально настраивается мышкой, а что придётся дорабатывать кодом.
Что за механики и почему они «неудобные» для Битрикса
Под «1+1», «второй в подарок», «3 по цене 2» скрывается одна идея: скидка зависит от количества одинаковых или похожих позиций в корзине, а её размер равен стоимости части этих позиций. Для маркетолога это одна акция, для движка — несколько разных задач.
В 1С-Битрикс скидки покупателю живут в разделе Магазин → Настройки → Правила работы с корзиной (модуль sale). Конструктор состоит из двух частей: условия («когда применять») и действия («что сделать с корзиной»). Штатные действия — это скидка на корзину, скидка на товары по фильтру и подарок. Действия «сделать каждый N-й товар бесплатным» среди них нет, поэтому механику приходится либо имитировать, либо дописывать.
Инструменты правил корзины: условия и действия
Прежде чем собирать акцию, стоит держать в голове доступные блоки конструктора. Их комбинацией и строятся механики.
- Условие «Количество товаров в корзине» — считает общее число позиций или число по фильтру (товар, раздел, свойство, бренд).
- Условие «Товар»/«Раздел» — ограничивает акцию конкретным SKU, категорией или инфоблоком.
- Действие «Скидка на корзину» — процент или фиксированная сумма на весь заказ.
- Действие «Скидка на товары» — процент/фикс на позиции, попавшие под фильтр.
- Действие «Подарок» — добавляет товар в корзину с ценой, близкой к нулю (механика «второй в подарок»).
Ключевое ограничение: штатное «Скидка на товары» применяется ко всем позициям фильтра одинаково, а не выборочно «к каждому третьему». Именно из-за этого прямой перенос акции «3 по цене 2» на произвольный набор товаров и ломается.
«3 по цене 2» на одинаковом товаре
Самый простой и надёжный случай — когда акция про один и тот же SKU. Тогда бесплатная позиция всегда стоит ровно столько же, сколько платная, и скидку можно задать фиксированной.
Настройка правила:
- Условие:
Количество товара «X» в корзине ≥ 3. - Действие:
Скидка на товары → фиксированная → равна цене одной единицы «X», фильтр — тот же товар.
Итог: на три штуки покупатель платит как за две. Если акция кратная («6 по цене 4»), фиксированную скидку в чистом виде уже не задать — размер зависит от количества, и правило начинает «недодавать» скидку на больших объёмах.
«1+1» и «второй в подарок»
Механику «купи один — второй бесплатно» удобно собирать двумя способами.
Через процент. Если товары в акции равноценные, скидка «50% при двух и более» математически даёт тот же результат: два по цене одного. Условие — Количество ≥ 2, действие — Скидка на товары 50%. Минус: при нечётном количестве (3 штуки) скидка размажется на все три, и покупатель получит больше, чем «один в подарок».
Через действие «Подарок». Битрикс умеет добавлять товар-подарок в корзину при выполнении условия. Это честная механика «1+1»: основной товар оплачивается, второй кладётся в заказ по нулевой цене. Подходит, когда подарок — конкретная позиция, а не «такой же, как купленный».
| Способ | Когда подходит | Риск |
|---|---|---|
| Скидка 50% | Равноценные товары, чётные количества | «Переливает» скидку на нечётных наборах |
| Подарок | Фиксированный товар в подарок | Не «зеркалит» купленный SKU автоматически |
«Самый дешёвый бесплатно» — почему нужен код
Классическая розничная механика — «любые 3 товара из категории, самый дешёвый в подарок». Штатными действиями она не собирается: правило не умеет выбрать минимальную по цене позицию из набора и обнулить именно её. Действие «Скидка на товары» ударит по всем трём сразу.
Здесь пишут кастомное действие правила корзины. В новых (объединённых) скидках логика применения живёт в модуле sale, а перебрать корзину и назначить скидку конкретной позиции удобно на обработчике события расчёта — например, OnSaleBasketBeforeSaved или через собственный обработчик, навешенный на пересчёт корзины. Внутри вы получаете коллекцию \Bitrix\Sale\Basket, находите нужные позиции, сортируете по цене и применяете скидку к самой дешёвой.
Сочетание с другими скидками и приоритеты
Количественные акции почти всегда сталкиваются с остальными правилами: накопительными скидками, купонами, скидкой от суммы заказа. Здесь работает общий механизм применения скидок Битрикса.
- Приоритет и сортировка. У каждого правила есть приоритет; при равенстве важен порядок сортировки. Акцию «N по цене M» обычно ставят выше или изолируют, чтобы её не «съела» процентная скидка на корзину.
- Флаг «Прекратить дальнейшее применение скидок». Ставится в правиле, чтобы после акции не накладывались другие скидки на те же товары.
- Товары-подарки. Позицию с нулевой ценой стоит исключить из условий других правил (по количеству и по сумме), иначе она исказит расчёты.
Проверять сочетания надо на реальной корзине: добавьте акционные товары, купон и посмотрите итог в Магазин → Заказы либо в публичной корзине с включённой отладкой скидок.
Тестирование и типичные ошибки
Количественные механики ломаются на краях: границы количества, кратность, возвраты. Прогоните базовые сценарии до запуска.
- Ровно пороговое количество (2 или 3) и на одну меньше — скидка не должна появляться раньше времени.
- Кратные наборы (6, 9 штук) — убедитесь, что скидка растёт, а не остаётся фиксированной.
- Смешанная корзина — акционные и обычные товары вместе, чтобы фильтр не задел лишнее.
- Удаление одной позиции — при пересчёте корзины скидка должна корректно исчезнуть.
Итог
В 1С-Битрикс механики «1+1» и «3 по цене 2» — это не одна кнопка, а набор приёмов. На одинаковом SKU всё честно собирается фиксированной скидкой или действием «Подарок»; равноценные пары закрываются процентом; а «самый дешёвый из набора бесплатно» почти всегда требует кастомного действия на событии пересчёта корзины. Отдельно продумывают приоритеты, флаг остановки скидок и тестируют границы количества.
Мы в B2Bsite настраиваем правила корзины и пишем нестандартные акционные действия так, чтобы они не конфликтовали с остальными скидками и не тормозили корзину. Если механика выходит за рамки штатного конструктора — поможем спроектировать её на уровне модуля sale и корректно связать с обменом с 1С.
Частые вопросы
Есть ли в 1С-Битрикс готовое действие «каждый N-й товар бесплатно»?
Нет, отдельного штатного действия для этого нет. Механику собирают из условий по количеству и действий «Скидка на товары» или «Подарок», а сложные случаи дорабатывают кодом.
Как настроить «3 по цене 2» на одинаковый товар?
Задайте условие «количество товара ≥ 3» и действие «фиксированная скидка на товары», равную цене одной единицы. На трёх штуках покупатель заплатит как за две.
Почему при 6 штуках скидка «3 по цене 2» неверная?
Фиксированная скидка не масштабируется по количеству: на шести позициях она спишет стоимость только одной единицы. Для кратных наборов нужен процент или кастомное действие.
Чем «1+1» через 50% отличается от механики «Подарок»?
Скидка 50% размазывается на все подходящие позиции и «переливает» выгоду при нечётном количестве. Действие «Подарок» кладёт конкретный товар по нулевой цене и работает предсказуемо.
Как сделать «самый дешёвый из трёх бесплатно»?
Штатными действиями — никак, они бьют по всем позициям сразу. Нужен кастомный обработчик, который перебирает корзину, находит минимальную по цене позицию и обнуляет её.
Будут ли количественные акции складываться с купонами и накопительными скидками?
По умолчанию скидки применяются по приоритету и сортировке. Чтобы избежать двойной выгоды, используйте флаг «прекратить дальнейшее применение скидок» и проверяйте итог на тестовой корзине.
Учитывается ли товар-подарок в условиях других правил?
По умолчанию да, и позиция с нулевой ценой может исказить расчёты по сумме и количеству. Такие товары стоит исключать из условий сопутствующих правил.
Влияют ли такие акции на скорость сайта?
Штатные правила — незначительно, но кастомные обработчики, перебирающие корзину и каталог на каждом пересчёте, нагружают корзину. Помогают кэширование цен и отказ от тяжёлых запросов в цикле.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.