«Подарок за покупку от суммы» — это не отдельная кнопка, а частный случай правила работы с корзиной модуля sale. Механика простая на словах: набрал корзину на нужную сумму — получил товар за 0 рублей. Но за этой простотой стоит несколько неочевидных настроек: от какой суммы считается порог, как подарок ведёт себя при пересчёте и как показать его покупателю до оформления. Разберём по шагам.
Что это за механика и каким модулем делается
Подарок за покупку живёт в модуле «Интернет-магазин» (sale) и относится к правилам работы с корзиной, а не к каталожным скидкам. Причина в том, что решение о выдаче подарка принимается по составу и сумме заказа — а эти данные известны только когда корзина уже собрана. Каталожная скидка, которая меняет цену товара на витрине, здесь бессильна: она не видит заказ целиком.
Технически подарок — это обычная товарная позиция, которую правило добавляет в корзину с полной скидкой (по сути с ценой 0). Он отображается отдельной строкой, помечается как подарочный и не влияет на сумму, от которой считался порог. Ядром управляет класс \Bitrix\Sale\Discount, а за добавление товара отвечают действия из \Bitrix\Sale\Discount\Actions.
Создаём акцию по готовому шаблону
Проще всего не собирать логику вручную, а взять предустановленный шаблон. Путь в админке: Магазин → Маркетинг → Правила работы с корзиной (в части редакций раздел называется «Скидки»). При создании правила Битрикс предлагает список шаблонов акций — среди них есть «Подарок за покупку».
- Нажмите «Добавить» и выберите шаблон «Подарок за покупку».
- Укажите условие по сумме корзины — например, от 5000 ₽.
- Выберите товар-подарок (или несколько на выбор).
- Задайте период действия, группы пользователей и сайт.
- Проставьте приоритет и, при необходимости, флаг остановки дальнейших скидок.
Шаблон разворачивается в обычное правило корзины, которое затем можно донастроить в «расширенном» режиме через визуальный конструктор условий. Предустановленные шаблоны — это лишь удобная заготовка поверх того же движка правил.
Порог по сумме: как задать его правильно
Самая частая точка ошибок — от какой именно суммы считается порог. Здесь важно понимать два момента.
- Подарок в порог не входит. Его цена равна нулю, поэтому добавление подарка не «раздувает» сумму и не создаёт зацикливания. Условие проверяется по товарным позициям без подарочных.
- Скидки уже применены. Правило корзины видит цену, уже уменьшенную каталожными скидками и предыдущими правилами. Если у вас параллельно работает «скидка 10% от суммы», порог для подарка сравнивается с суммой после этой скидки, а не с исходной.
В конструкторе условие собирается блоком Сумма корзины с оператором «больше или равно». Внутри одного правила можно вкладывать логические группы И/ИЛИ — например, «сумма от 5000 ₽ И в корзине есть товар из раздела „Кофе“».
Как выбирается товар-подарок
Подарок можно задать по-разному, и от этого зависит поведение корзины.
| Вариант | Что происходит | Когда уместно |
|---|---|---|
| Один фиксированный товар | Битрикс сам добавляет позицию в корзину при выполнении условия | Простые акции «купи на N — получи X» |
| Несколько товаров на выбор | Покупателю показывается список, он выбирает один подарок | Когда хотите дать клиенту опцию |
| Подарок из раздела/по свойству | Кандидаты подбираются по условию каталога | Большой пул возможных подарков |
Количество подарочных единиц тоже настраивается: обычно это один подарок на заказ, но правило можно собрать и как «за каждые 5000 ₽ — по подарку». Важный нюанс: подарок должен быть в наличии на складе. Если товар-подарок закончился, а количество контролируется, позиция может не добавиться — поэтому в качестве подарка обычно выбирают позиции с управляемым остатком или помечают их отдельно.
Показ подарка на витрине
Чтобы акция работала на конверсию, покупатель должен видеть подарок ещё до порога — иначе он просто не узнает, что немного недобрал. Для этого в Битрикс есть отдельное семейство компонентов sale.gift.*:
bitrix:sale.gift.basket— показывает в корзине, какой подарок доступен и сколько ещё нужно добрать до порога;bitrix:sale.gift.main.products— выводит потенциальные подарки на страницах каталога и главной;bitrix:sale.gift.list— список товаров, участвующих в акции как подарки.
Эти компоненты сами обращаются к настроенным правилам и показывают актуальный статус: «до подарка осталось 700 ₽». Сам подарок в корзине выводится штатным sale.basket.basket отдельной строкой с нулевой ценой и пометкой.
sale.gift.*, а не выводом каталожной скидки — правило корзины на карточке напрямую не «живёт».Тонкости и типичные ошибки
Механика кажется тривиальной, но в проде всплывает несколько повторяющихся проблем.
- Автоудаление при уменьшении суммы. Если покупатель убрал товар и сумма упала ниже порога, подарок должен исчезнуть. Битрикс пересчитывает это сам, но при кастомной корзине на AJAX пересчёт иногда «отстаёт» — проверяйте, что событие обновления корзины вызывает перерасчёт скидок.
- Суммирование с другими акциями. Если помимо подарка действуют другие правила, задайте приоритеты и при необходимости флаг «прекратить дальнейшее применение», чтобы не выдать подарок вместе с несовместимой скидкой.
- Подарок в оформлении и в 1С. Нулевая позиция уходит в заказ и выгружается в учётную систему. Убедитесь, что обмен с 1С корректно принимает строку заказа с ценой 0, иначе документ может «падать».
- Наличие подарка. Закончившийся товар-подарок ломает ожидания клиента. Держите под подарки отдельный запас или товары без жёсткого контроля остатка.
Итог
«Подарок за покупку от суммы» в 1С-Битрикс — это правило работы с корзиной модуля sale: условие «сумма от N» плюс действие «добавить товар с полной скидкой». Собирается быстрее всего из предустановленного шаблона, но требует внимания к порогу (он считается от суммы уже со скидками и без учёта самого подарка), к выбору и наличию товара-подарка и к его показу на витрине через компоненты sale.gift.*.
Если акция должна учитывать сложные условия, не конфликтовать с другими скидками, корректно выгружать нулевую позицию в 1С и при этом не тормозить корзину под нагрузкой — мы поможем спроектировать и внедрить логику подарков так, чтобы она работала предсказуемо и на витрине, и в оформлении заказа.
Частые вопросы
К какому типу скидок относится подарок за покупку?
Это правило работы с корзиной модуля «Интернет-магазин», а не каталожная скидка. Решение о подарке принимается по составу и сумме заказа, которые известны только на уровне корзины.
Входит ли сам подарок в сумму, от которой считается порог?
Нет. Подарок добавляется с нулевой ценой и в пороговую сумму не включается, поэтому зацикливания не происходит. Условие проверяется по обычным товарным позициям.
Порог считается от суммы до или после других скидок?
После. Правило корзины видит цену, уже уменьшенную каталожными скидками и предыдущими правилами, и сравнивает порог именно с ней. Это стоит учитывать при параллельных акциях.
Можно ли дать покупателю выбор из нескольких подарков?
Да. В правиле можно указать список товаров, и покупателю будет предложено выбрать один подарок. Также подарки можно подбирать по разделу каталога или свойству товара.
Как показать подарок на витрине до достижения порога?
Используйте компоненты семейства sale.gift.* — например, sale.gift.basket в корзине или sale.gift.main.products в каталоге. Они показывают доступный подарок и сколько осталось добрать.
Что будет с подарком, если сумма упадёт ниже порога?
Битрикс пересчитывает корзину и убирает подарок автоматически. При кастомной AJAX-корзине важно, чтобы обновление вызывало перерасчёт скидок, иначе подарок может задержаться.
Как не дать подарку суммироваться с другой акцией?
Проставьте приоритеты правил и при необходимости включите флаг прекращения дальнейшего применения. Тогда после выдачи подарка несовместимые скидки применяться не будут.
Не сломает ли нулевая позиция обмен с 1С?
Подарок уходит в заказ строкой с ценой 0 и выгружается в учётную систему. Нужно убедиться, что обмен корректно принимает такую строку, иначе документ заказа может не проводиться.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.