Скидка от количества — классическая оптовая механика: чем больше единиц товара в корзине, тем ниже цена. В 1С-Битрикс она собирается на правилах работы с корзиной без единой строчки кода — важно лишь правильно задать условие по количеству и развести пороги по приоритетам.
Что такое скидка от количества и чем она отличается
Скидка от количества срабатывает, когда покупатель набирает определённое число единиц товара. Это не то же самое, что скидка от суммы заказа: там анализируется итоговая стоимость корзины, а здесь — поле QUANTITY позиций. Одна дорогая единица не запустит количественную скидку, а десять дешёвых — запустят.
Механика бывает двух видов, и их важно не путать при постановке задачи:
- Порог по всей корзине — «от 5 любых товаров скидка 5%». Считается суммарное количество позиций.
- Порог по конкретному товару или группе — «купи 3 упаковки одного SKU — четвёртая со скидкой». Считается количество внутри отобранной совокупности.
Оба варианта реализуются одним инструментом — правилами работы с корзиной (объединённые скидки модуля sale). Отличие только в том, какое условие вы соберёте в конструкторе.
Где настраивается: правила работы с корзиной
Количественные скидки живут в разделе Магазин → Скидки (в новой модели — «объединённые скидки»). Если магазин ещё не сконвертирован, тот же инструмент доступен как Магазин → Настройки → Правила работы с корзиной. Создаём новое правило и заполняем шапку.
- Название — понятное, например «Опт: от 5 шт — 7%».
- Сайт и активность, при необходимости — период действия и группы пользователей.
- Блок «Условия» — дерево И/ИЛИ, где задаётся порог по количеству.
- Блок «Действие» — тип и размер скидки: процент, фиксированная сумма или фиксированная цена.
bitrix:sale.basket и класс Bitrix\Sale\Discount. Никакого кода писать не нужно — вся логика собирается визуальным конструктором условий.Условие по количеству: как собрать в конструкторе
В дереве условий добавляется блок из группы «Корзина» — «Количество товаров в корзине». Выбираем оператор (больше или равно) и значение — например 5. Это и есть порог по всей корзине: пять и более единиц запускают скидку из блока «Действие».
Если нужен порог не по всей корзине, а по отобранным товарам, условие переносится внутрь блока действия: «Применить к совокупности товаров, для которых выполнено…». Внутри добавляем условие по полю Количество позиции. Тогда Битрикс сначала отберёт подходящие строки корзины, а порог посчитает уже по ним.
Ступенчатые скидки: несколько порогов и приоритеты
Оптовая сетка почти всегда ступенчатая: чем больше берёшь, тем выше процент. Один блок правил такого не умеет — на каждый порог создаётся отдельное правило, а конфликт разруливается сортировкой и приоритетом.
| Правило | Условие | Скидка | Приоритет |
|---|---|---|---|
| Опт-1 | от 5 шт | 5% | 1 |
| Опт-2 | от 10 шт | 7% | 2 |
| Опт-3 | от 20 шт | 10% | 3 |
Ключевой момент — параметр «Прекратить дальнейшее применение скидок». Без него при 20 единицах формально подойдут все три правила и они могут суммироваться. Ставим более выгодным ступеням выше приоритет и включаем остановку, чтобы применялась ровно одна ступень — самая крупная из подошедших.
Количество конкретного товара или категории
Часто скидка нужна не за «любые 5 товаров», а за 5 единиц конкретной позиции или раздела. Тогда в блоке действия комбинируем два условия внутри одной группы И:
- отбор товара — по разделу каталога, свойству, ID элемента или бренду;
- порог — по полю
Количествоотобранных позиций.
Например: «товары из раздела Расходники, где суммарное количество ≥ 6 — скидка 8%». Действие при этом применяется только к отобранной совокупности, а остальная корзина остаётся по обычной цене. Это удобно для акций на конкретную категорию без пересчёта всего чека.
catalog.Проверка и типовые ошибки
После сохранения правило нужно проверить в реальной корзине, а не полагаться на форму. Соберите тестовый заказ с числом единиц чуть ниже и чуть выше порога и убедитесь, что скидка появляется ровно на границе.
Что чаще всего ломает количественную скидку:
- Оператор «больше», а не «больше или равно» — тогда ровно 5 шт не проходят порог «от 5».
- Не задан приоритет — сработала не та ступень или скидки просуммировались.
- Условие в корне дерева вместо блока действия — скидка вешается на всю корзину, хотя нужна на один товар.
- Забыт флаг остановки — количественная скидка складывается с накопительной или купоном, давая двойную выгоду.
Полезно держать в голове режим работы скидок (до или после конвертации): от него зависит, на какую цену — базовую или уже уценённую — применяется процент. При сложной сетке правил это влияет на итог сильнее, чем кажется.
Итог
Скидка от количества в 1С-Битрикс — это правило работы с корзиной с условием по полю количества: порог задаётся либо по всей корзине, либо по отобранной совокупности товаров. Ступенчатая оптовая сетка собирается из нескольких правил, разведённых приоритетом и флагом остановки, а конкретные товары отбираются по разделу, свойству или бренду. Главное — проверять поведение на границе порога и следить, чтобы количественная скидка не суммировалась с другими механиками без вашего ведома.
Если оптовая логика получается многоярусной, пересекается с накопительными программами и купонами, а корзина при этом должна оставаться быстрой — мы в B2Bsite настраиваем такие системы скидок, приводим правила в непротиворечивый вид и берём магазин на поддержку.
Частые вопросы
Чем скидка от количества отличается от скидки от суммы?
Скидка от количества смотрит на число единиц товара в корзине, а скидка от суммы — на итоговую стоимость. Одна дорогая позиция запустит суммовую скидку, но не количественную.
Как сделать ступенчатую сетку: от 5, от 10, от 20 штук?
На каждый порог создаётся отдельное правило корзины. Более выгодным ступеням задаётся выше приоритет и включается флаг остановки дальнейшего применения, чтобы срабатывала одна ступень.
Можно ли дать скидку за количество только одного конкретного товара?
Да. В блоке действия отбираете товар по разделу, свойству или бренду и добавляете условие по полю Количество. Скидка применится только к этой совокупности.
Почему при ровно 5 штуках скидка «от 5» не срабатывает?
Скорее всего в условии выбран оператор «больше», а не «больше или равно». Для порога «от 5» нужно именно «больше или равно 5».
Складывается ли количество разных торговых предложений одного товара?
По умолчанию нет: разные предложения — это отдельные строки корзины, и их количество не суммируется в один порог. Для общего порога условие ставят по всей корзине.
Нужно ли писать код для количественной скидки?
Нет. Всё собирается визуальным конструктором правил работы с корзиной в разделе Магазин → Скидки, через модуль sale и компонент sale.basket.
Как не дать количественной скидке суммироваться с купоном?
Включите в правиле параметр «Прекратить дальнейшее применение скидок» и расставьте приоритеты. Так после применения количественной скидки другие механики не наложатся.
На какую цену применяется процент — базовую или уже сниженную?
Это зависит от режима скидок (до или после конвертации) и порядка правил. При сложной сетке стоит проверить итог на тестовой корзине на границе порога.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.