Настройка оптовых цен по объёму заказа 1С-Битрикс
Оптовая скидка по объёму — классическая механика: чем больше берёшь, тем дешевле каждая единица. В Битриксе это реализуется несколькими способами в зависимости от того, объём какого типа считается: количество единиц конкретного товара, сумма всей корзины или количество в разрезе категории.
Квантованные цены: встроенный механизм
Модуль catalog поддерживает квантованные (ступенчатые) цены через таблицу b_catalog_price. Для одного товара можно задать несколько строк с одним типом цены, но разными значениями QUANTITY_FROM и QUANTITY_TO. Чем больше количество в строке — тем ниже цена.
Настройка в панели управления: карточка товара → вкладка «Цены» → для нужного типа цены добавляем несколько строк с разными диапазонами. Либо через CCatalogProductPrice::Add() / CCatalogProductPrice::Update() программно при импорте.
При добавлении товара в корзину Битрикс автоматически определяет нужную строку по количеству и применяет соответствующую цену. Это работает без дополнительного кода — стандартная логика модуля sale.
Скидки по сумме корзины
Если цена зависит не от количества конкретного товара, а от общей суммы заказа — используем модуль скидок (CCatalogDiscount). Создаём скидку типа «На корзину» с условием ORDER_PRICE > N → скидка X%. Несколько уровней: при сумме 50К — 5%, при 100К — 8%, при 200К — 12%.
Настройка: Магазин → Правила работы с ценами. Условие — «Сумма заказа», действие — «Скидка на всю корзину» в процентах или фиксированной сумме. Скидки накапливаются по приоритету — важно правильно выставить флаги «Останавливать дальнейшее применение».
Скидки по объёму в категории
Более сложный сценарий: скидка применяется, если покупатель взял товаров из категории X на сумму больше Y. Стандартные инструменты модуля catalog это покрывают через расширенные условия скидки — выбираем «Раздел инфоблока» в условии, указываем порог суммы.
Если логика нестандартная (например, скидка считается по сумме нескольких категорий или с учётом весовых коэффициентов) — реализуем через обработчик события OnSaleBasketBeforeSaved с кастомным расчётом.
Отображение ступенчатых цен
Покупатель должен видеть таблицу цен при разных объёмах ещё до добавления в корзину. В компоненте карточки товара (bitrix:catalog.element) в result_modifier.php подтягиваем все строки b_catalog_price для товара с QUANTITY_FROM > 0, формируем массив QUANTITY_PRICES и выводим в шаблоне таблицей:
| Количество | Цена за ед. |
|---|---|
| 1-9 | 1 200 руб. |
| 10-49 | 1 050 руб. |
| 50+ | 900 руб. |
Настройка ступенчатых цен для существующего каталога (через интерфейс + импорт): 3-5 дней. Разработка кастомной логики скидок с отображением: 1-2 недели.







