Налаштування скритих цін (ціна по запиту) в 1С-Bitrix
Оптовий клієнт заходить в каталог, бачить рітейлову ціну та йде — вирішивши, що дорого. Або конкурент моніторить ваші ціни через парсер. Приховування цін з кнопкою «Дізнатися ціну» розв'язує обидві проблеми: B2B-клієнт залишає заявку, а парсер отримує пусте поле замість числа.
Архітектура приховування цін
В 1С-Bitrix ціна товару зберігається в таблиці b_catalog_price та прив'язана до типу ціни (b_catalog_group). Сховати ціну можна на кількох рівнях:
Рівень шаблона компонента. Найпростіший варіант — в template.php компонента catalog.element перевіряєте умову та замість ціни виводите кнопку. Умови: група користувача, властивість інфоблока HIDE_PRICE, наявність певного типу ціни.
Рівень типу ціни. Створюєте окремий тип ціни «По запиту» в Магазин → Налаштування → Типи цін. Товарам, для яких ціна схована, не призначуєте рітейлову ціну. Компонент catalog.element при виклику CCatalogProduct::GetOptimalPrice() не знаходить доступну ціну — і ви обробляєте цей випадок у шаблоні.
Рівень властивості інфоблока. Додаєте властивість PRICE_ON_REQUEST типу «Список» (Так/Ні). В шаблоні компонента перевіряєте значення властивості та подміняєте блок ціни на форму запиту.
Реалізація кнопки «Дізнатися ціну»
Кнопка повинна відкривати форму з мінімумом полів: ім'я, телефон/email, автоматично підставлений артикул товару. Варіанти реалізації:
-
Компонент
bitrix:form.result.new— стандартна веб-форма. В GET-параметри передаєте ID товару та назву. В шаблоні форми — приховані поля з даними товару. -
Вспливає вікно через
BX.SidePanel— відкриває iframe з формою. Швидше для користувача, не уводить зі сторінки. -
AJAX-запит на кастомний endpoint в
/local/ajax/— мінімальна форма без перезавантаження.
Заявка повинна потрапляти в CRM (якщо Bitrix24) або надсилатися на email менеджеру. Для CRM використовуйте crm.lead.add через REST API або подію OnAfterResultAdd веб-форми з обробником створення ліду.
Приховування цін по групам користувачів
Для B2B-сценарію: авторизовані дилери бачать ціну, гості — кнопку запиту. Перевірка через $USER->GetUserGroupArray() у шаблоні компонента. Або через права доступу до типу ціни — в налаштуваннях типу ціни задаєте, які групи користувачів мають доступ. Метод CCatalogGroup::GetGroupsList() повертає дозволені групи.
| Сценарій | Підхід | Строк налаштування |
|---|---|---|
| Приховування для всіх, кнопка «Дізнатися ціну» | Властивість інфоблока + доробка шаблона | 2–4 години |
| Приховування для гостей, показ для дилерів | Права на тип ціни + перевірка групи | 4–6 годин |
| Масове управління (1000+ товарів) | Властивість + імпорт з CSV/1С | 1–2 дні |







