Настройка скрытых цен (цена по запросу) 1С-Битрикс
Оптовый клиент заходит в каталог, видит розничную цену и уходит — решив, что дорого. Или конкурент мониторит ваши цены через парсер. Скрытие цен с кнопкой «Узнать цену» решает обе проблемы: B2B-клиент оставляет заявку, а парсер получает пустое поле вместо числа.
Архитектура скрытия цен
В 1С-Битрикс цена товара хранится в таблице 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 (если Битрикс24) или отправляться на email менеджеру. Для CRM используйте crm.lead.add через REST API или событие OnAfterResultAdd веб-формы с обработчиком создания лида.
Скрытие цен по группам пользователей
Для B2B-сценария: авторизованные дилеры видят цену, гости — кнопку запроса. Проверка через $USER->GetUserGroupArray() в шаблоне компонента. Или через права доступа к типу цены — в настройках типа цены задаёте, какие группы пользователей имеют доступ. Метод CCatalogGroup::GetGroupsList() возвращает разрешённые группы.
| Сценарий | Подход | Срок настройки |
|---|---|---|
| Скрытие для всех, кнопка «Узнать цену» | Свойство инфоблока + доработка шаблона | 2–4 часа |
| Скрытие для гостей, показ для дилеров | Права на тип цены + проверка группы | 4–6 часов |
| Массовое управление (1000+ товаров) | Свойство + импорт из CSV/1С | 1–2 дня |







