Мы часто сталкиваемся с задачей настройки оптовых цен в 1С-Битрикс. Типичная ситуация: клиент хочет, чтобы чем больше покупатель берёт, тем дешевле ему обходится каждая единица. Базовая механика проста, но реализация в Битриксе требует понимания трёх разных подходов. Выбор неправильного — частая причина проблем с производительностью или некорректного расчёта. Например, при большом количестве товаров квантованные цены могут замедлить каталог, поэтому мы оптимизируем кэширование и используем индексы. У нас за плечами более 50 успешных проектов по Битрикс и 10+ лет опыта. Мы гарантируем, что предложим оптимальное решение под вашу архитектуру.
Какие проблемы решаем?
Оптовые цены по объёму могут быть реализованы несколькими способами, но каждый имеет нюансы. Разберём типовые сценарии.
Квантованные цены: встроенный механизм
Модуль catalog поддерживает ступенчатые цены через таблицу b_catalog_price. Для одного товара задаются несколько строк с одним типом цены, но разными диапазонами QUANTITY_FROM и QUANTITY_TO. Чем больше количество — тем ниже цена. Настройка в панели: карточка товара → вкладка «Цены» → добавление строк через интерфейс или программно через CCatalogProductPrice::Add(). При добавлении в корзину Битрикс автоматом подбирает нужную строку — дополнительный код не требуется.
Скидки по сумме корзины
Если цена зависит от общей суммы заказа, используем модуль скидок (CCatalogDiscount). Создаём правило типа «На корзину» с условием ORDER_PRICE > N и скидкой X%. Несколько уровней: 50 000 → 5%, 100 000 → 8%, 200 000 → 12%. Настройка: Магазин → Правила работы с ценами. Важно выставить флаги «Останавливать дальнейшее применение» по приоритету.
Скидки по объёму в категории
Сложный сценарий: скидка на товары из категории X при сумме больше Y. Расширенные условия скидки покрывают это через условие «Раздел инфоблока». Если нужна нестандартная логика (несколько категорий, весовые коэффициенты) — реализуем через обработчик 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 руб. |
Почему стандартных инструментов может не хватить?
В реальных проектах часто встречаются гибридные схемы: скидка накапливается по видам товаров, применяется только для определённых групп пользователей или зависит от истории заказов. В таких случаях мы проектируем кастомную систему на базе событий OnSaleBasketBeforeSaved и OnOrderSave. Пример из практики: интернет-магазин строительных материалов, где оптовая цена считалась как сумма заказов за последний месяц с коэффициентом на категорию. Решение потребовало 10 дней разработки, включая тесты и документацию.
Как выбрать подходящий механизм?
| Механизм | Когда применять | Пример | Сложность |
|---|---|---|---|
| Квантованные цены | Простая скидка от количества одного товара | 1-9 шт: 1000 руб, 10+: 850 руб | Низкая |
| Скидка на корзину | Скидка от общей суммы заказа | При сумме >5000 руб: скидка 5% | Средняя |
| Кастомная логика | Сложные правила с категориями, весами, историей | Скидка на категорию "Крепеж" при сумме заказа >3000 руб | Высокая |
Как мы это делаем?
- Анализируем бизнес-логику: по какому параметру скидка (количество, сумма, категория).
- Проектируем архитектуру: стандартный инструмент или кастомный обработчик.
- Реализуем: настройка интерфейса или написание кода.
- Тестируем на граничных случаях — например, при корзине из нескольких товаров с разными единицами измерения, дробных количествах или смешанных корзинах. Для сложных сценариев используем агенты для пересчёта цен при изменении корзины, что снижает нагрузку на сервер.
- Деплоим и сопровождаем.
Ориентировочные сроки
- Настройка ступенчатых цен через интерфейс + импорт: от 3 до 5 дней.
- Разработка кастомной логики с отображением: от 1 до 2 недель.
Стоимость рассчитывается индивидуально после оценки объёма работ.
Что входит в работу?
- Документация по настройкам и API.
- Передача доступов и исходных кодов.
- Обучение ваших менеджеров работе с инструментом.
- Поддержка в течение 30 дней после запуска.
Оценим ваш проект бесплатно. Свяжитесь с нами для консультации. Получите консультацию инженера бесплатно – расскажем, какой подход подходит именно вам.
Пример кастомного обработчика OnSaleBasketBeforeSaved:
// Код для кастомной скидки на категорию AddEventHandler('sale', 'OnSaleBasketBeforeSaved', 'CustomDiscountHandler'); function CustomDiscountHandler(Basket $basket) { foreach ($basket as $item) { // Логика проверки категории и суммы } } Подробнее: OnSaleBasketBeforeSaved







