Ми часто стикаємося із завданням налаштування оптових цін в 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







