Иногда скидку нужно выдавать не всем подряд, а только когда покупатель добавил в корзину определённый товар — например, основной прибор, к которому идут аксессуары. В 1С-Битрикс это делается правилом работы с корзиной с условием «наличие товара». Разбираем, как собрать такое правило и не запутаться в логике.
Что за механика и зачем она нужна
«Скидка при наличии товара в корзине» — это акция, которая срабатывает не по сумме или количеству, а по факту присутствия конкретной позиции (или товаров из раздела/бренда) в заказе. Классический пример: клиент кладёт в корзину телефон — и получает скидку на чехол, стекло или наушники к нему.
Такая механика решает две задачи бизнеса. Во-первых, стимулирует кросс-продажи: сопутствующий товар выгоднее брать в одном заказе. Во-вторых, помогает распродавать складские связки — «купи основной товар, забери расходник дешевле».
В терминах Битрикса это обычное правило работы с корзиной (объединённые скидки) с условием на состав корзины. Отдельного модуля не требуется — всё настраивается в стандартном конструкторе.
Где настраивается
Механика доступна только в режиме объединённых (новых) скидок — то есть после конвертации данных магазина. Настройка живёт в разделе Маркетинг → Правила работы с корзиной (модуль sale).
Порядок такой:
- Откройте Маркетинг → Правила работы с корзиной и нажмите «Добавить правило».
- Задайте название, сайт, период действия и группы пользователей, на которых распространяется акция.
- В блоке «Условия» соберите проверку наличия нужного товара.
- В блоке «Действия» опишите саму скидку — процент или фиксированную сумму и на что она распространяется.
Как собрать условие «есть товар»
Сердце правила — блок условий. В конструкторе добавляется условие по товару, где вы указываете конкретную позицию, раздел, бренд или свойство. Чаще всего используют вариант «Товар», выбирая нужный SKU из каталога.
Важный момент — логика группировки. Условия объединяются операторами И / ИЛИ, а вложенные группы позволяют строить сложные проверки. Несколько типовых конфигураций:
- Один товар-триггер: условие «в корзине есть товар А» — скидка включается при наличии именно этой позиции.
- Любой из списка: группа условий по нескольким товарам с оператором
ИЛИ— триггером станет любой из перечисленных. - Товар из раздела: условие по разделу каталога — сработает на всю категорию, а не на один артикул.
- Комбинация: «есть товар А»
И«сумма заказа от N» — скидка только при выполнении обоих условий.
Обратите внимание: сам факт наличия и требуемое количество — разные вещи. Если нужно «хотя бы 1 штука», достаточно проверки присутствия; если «от двух» — добавьте условие по количеству товара.
На что распространяется скидка
Условие определяет, когда акция сработает, а действие — на что. И здесь легко ошибиться: наличие товара-триггера и объект скидки — не одно и то же.
| Сценарий | Условие | Действие (на что скидка) |
|---|---|---|
| Скидка на аксессуар | в корзине есть основной товар | на конкретный аксессуар или его раздел |
| Скидка на весь заказ | в корзине есть акционный товар | на всю корзину, процентом |
| Скидка на сам триггер | в корзине есть товар А | на товар А (например, при заказе от 2 шт.) |
В действии выбирается тип: процент, фиксированная сумма или скидка на доставку. Если скидка идёт на конкретную позицию, а не на всю корзину, в действии указывается тот же фильтр по товару/разделу, что и в условии, либо отдельный целевой товар.
Приоритеты и суммирование
Условная скидка редко живёт в вакууме: параллельно работают скидки от суммы, купоны, накопительные программы. Чтобы они не складывались хаотично, у каждого правила есть приоритет и флаг «Прекратить дальнейшее применение скидок».
Практические правила:
- Чем выше приоритет, тем раньше правило применяется в общей цепочке.
- Флаг остановки не даёт нижестоящим правилам добавить ещё скидку на те же товары — полезно, чтобы аксессуар не «утонул» под двумя акциями сразу.
- Если акция должна суммироваться с персональным купоном, оставьте суммирование включённым и проверьте порядок на тестовом заказе.
Проверка и типовые ошибки
Даже корректно собранное правило стоит прогнать вручную. Быстрый чек-лист перед запуском:
- Собрать тестовую корзину с товаром-триггером и убедиться, что скидка появилась.
- Собрать корзину без него — скидка не должна применяться.
- Проверить период действия и группы пользователей: частая причина «скидка не работает» — истёкшие даты или неверная группа.
- Убедиться, что товар-триггер активен и в наличии, иначе он не попадёт в корзину и условие не сработает.
Отдельно проверьте поведение при удалении триггера из корзины: если покупатель убрал основной товар, скидка на аксессуар должна пересчитаться и исчезнуть. Битрикс пересчитывает корзину автоматически, но кастомные шаблоны компонента sale.basket.basket иногда кэшируют цену — это стоит протестировать.
Итог
Скидка при наличии товара в корзине — это правило работы с корзиной с условием на состав заказа: акция включается, когда покупатель добавил заданный товар, раздел или бренд. Настраивается в разделе Маркетинг → Правила работы с корзиной, требует режима объединённых скидок и аккуратного разделения того, что служит триггером и на что ложится скидка. Ключевые риски — неверный объект действия, конфликт приоритетов и непроверенный пересчёт при удалении триггера.
Мы в B2Bsite настраиваем такие акции под реальные складские связки: собираем условия, выставляем приоритеты, проверяем на тестовых заказах и следим, чтобы правило не тормозило корзину. Если нужно выстроить кросс-продажи через скидки или разобрать, почему условная акция срабатывает не так, — поможем настроить и сопроводить.
Частые вопросы
Чем эта механика отличается от обычной скидки на товар?
Обычная скидка снижает цену выбранного товара всегда. Здесь скидка появляется только при условии — когда в корзине уже есть заданный товар-триггер. Убрали триггер — скидка пропадёт.
Можно ли сделать триггером не один товар, а целую категорию?
Да. В условии выбирается не конкретный SKU, а раздел каталога или бренд. Тогда правило сработает при наличии в корзине любого товара из этой категории.
Как задать, что скидка нужна только при двух и более штуках триггера?
Помимо условия наличия добавьте условие по количеству товара в корзине. Проверка присутствия отвечает за факт «есть хотя бы один», а условие количества — за порог от двух и выше.
Скидка случайно распространилась на сам товар-триггер. Почему?
Скорее всего, в действии выбрано «на всю корзину», а не на целевую позицию. Триггер задаётся в условии, а объект скидки — в действии; их нужно разделять и указывать целевой товар явно.
Работает ли механика на старых скидках каталога?
Нет. Условная логика по составу корзины доступна только в режиме объединённых скидок, то есть в разделе «Правила работы с корзиной». Для старого режима сначала нужна конвертация данных магазина.
Будет ли такая скидка суммироваться с купоном?
Зависит от настроек суммирования и приоритетов правила. Если суммирование включено и флаг остановки снят, скидка сложится с купоном. Порядок применения стоит проверить на тестовом заказе.
Что произойдёт, если покупатель удалит основной товар из корзины?
Условие перестанет выполняться, и Битрикс при пересчёте корзины уберёт скидку с аксессуара. Стоит протестировать этот сценарий, особенно на кастомных шаблонах корзины.
Много таких правил не замедлят корзину?
Каждое правило проверяется при пересчёте корзины, поэтому большое число сложных условий может нагружать расчёт. Помогают разумное количество правил, приоритеты с флагом остановки и корректное кэширование.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.