Налаштування індивідуальних прайсів для B2B-клієнтів в 1С-Bitrix
Два клієнти замовляють один і той же товар, але бачать різні ціни — тому що у кожного свій договір. Це стандартна задача B2B, яку Bitrix розв'язує через механізм типів цін, але потребує правильного налаштування: неверна конфігурація приводить до того, що клієнт бачить чужу ціну.
Механізм типів цін в модулі catalog
В Bitrix кожний товар може мати кілька цін — по одній на кожен тип ціни (b_catalog_group). Тип ціни — це просто іменована рівень прайсу: «Рітейл», «Опт», «VIP», «Контрактна». Для кожного типу ціни встановлюється, яким групам користувачів (b_user_group) він доступний.
Налаштування в панелі управління: Магазин → Налаштування → Типи цін. Створюємо типи для кожного рівня цін. У «Групах покупців» вказуємо, яка група бачить який тип.
Індивідуальні ціни: два підходи
Підхід 1 — група на клієнта. Кожному B2B-клієнту створюється окрема група користувачів (b_user_group) та окремий тип ціни. Клієнт входить в цю групу — бачить свої ціни. Працює, поки клієнтів десятки. При сотнях — управління стає незручним: кожний новий клієнт потребує створення групи та типу ціни, плюс завантаження цін.
Підхід 2 — Highload-блок контрактних цін. Більш масштабуємо. Створюємо Highload-блок b2b_contract_prices з полями: UF_COMPANY_ID, UF_PRODUCT_ID, UF_PRICE, UF_CURRENCY, UF_DATE_FROM, UF_DATE_TO. При запиті ціни товару — перевіряємо спочатку контрактну ціну для компанії клієнта, потім груповий прайс, потім базову ціну. Логіка через кастомний провайдер цін.
Пріоритет застосування цін
Порядок, у якому система шукає ціну для конкретного користувача, задається в налаштуваннях типів цін — поле «Сортування». Менше число — вище пріоритет. Індивідуальна контрактна ціна повинна мати сортування 1, рітейл базова — 100.
Завантаження цін з 1С
При використанні CommerceML-обміну з 1С ціни синхронізуються автоматично по типам цін. У файлі обміну тип ціни ідентифікується по полю ТипЦены → зіставляється з CATALOG_GROUP_ID в Bitrix. Контрактні ціни, яких нема в стандартному прайсі, виключаються окремим файлом та завантажуються в Highload-блок.
Що перевірити після налаштування
- Авторизований користувач групи «Опт» не бачить ціни «Рітейл» та навпаки
- Незалогінений користувач не бачить B2B-цін взагалі (якщо каталог закритий)
- Кеш цін інвалідується при зміні — через тегований кеш або
CCatalogProduct::clearCacheProductPrice()
Налаштування типів цін та груп для стандартної схеми (до 5 типів цін, без контрактного Highload): 3–5 днів. Розробка контрактного провайдера цін з Highload-блоком: 1–2 тижні.







