Персональные цены в 1С-Битрикс — это механизм, при котором один и тот же товар показывается разным покупателям по разной цене в зависимости от того, в какую группу пользователей они входят. Никаких дублей товаров и отдельных каталогов: цена подбирается автоматически по связке «тип цены → группа пользователя → право на просмотр».
Как это устроено в Битрикс
В основе лежат три сущности модуля catalog: тип цены, группа пользователей и право доступа группы к типу цены. Товар в каталоге может иметь сразу несколько цен разных типов — розничную, оптовую, дилерскую. Какую из них увидит конкретный посетитель, решает не сам товар, а то, к каким типам цен имеет доступ группа, в которой состоит пользователь.
Механика подбора простая: система берёт все группы текущего пользователя, находит типы цен, которые этим группам разрешено видеть и покупать, и выбирает цену. Если доступных типов несколько, применяется тип с наименьшим значением поля Сортировка (BASE-цена участвует в отборе на общих основаниях). Поэтому персонализация цен — это по сути грамотная настройка доступа групп к типам цен, а не «переключатель» на карточке товара.
Создаём типы цен
Типы цен настраиваются в Магазин → Настройки → Типы цен (или Контент → Инфоблоки → ... при работе через торговый каталог). Базовый тип BASE создаётся автоматически и удалить его нельзя. Под сценарий с персональными ценами обычно заводят отдельные типы, например:
RETAIL— розничная цена для обычных клиентов;OPT— оптовая цена для юридических лиц;DILER— специальная цена для дилеров и партнёров.
У каждого типа задаётся символьный код (латиницей, используется в API и обмене с 1С), название на нужных языках и сортировка. Именно сортировка определяет приоритет при выборе цены, если пользователю доступно сразу несколько типов, — задавайте её осознанно.
Группы пользователей под сегменты
Группы создаются в Настройки → Пользователи → Группы пользователей. Помимо системных (Администраторы, Все пользователи) заводят прикладные: «Оптовики», «Дилеры», «VIP». Пользователь может состоять сразу в нескольких группах — это нормально и активно используется.
Дальше пользователей распределяют по группам одним из способов:
- вручную в карточке пользователя (
Настройки → Пользователи → Список пользователей); - автоматически — например, событием на регистрацию или после модерации заявки на оптовый доступ;
- через обмен с 1С или CRM, если сегмент контрагента приходит извне.
Права групп на типы цен
Это центральная настройка всей схемы. Для каждого типа цены задаётся, какие группы могут его Просматривать и Покупать. Делается это в свойствах типа цены (вкладка «Доступ» / «Права доступа групп покупателей»).
| Тип цены | Кто видит и покупает |
|---|---|
| BASE / RETAIL | Все пользователи (в т. ч. гости) |
| OPT | Только группа «Оптовики» |
| DILER | Только группа «Дилеры» |
Разделение прав «Просмотр» и «Покупка» позволяет тонко управлять сценарием: можно, например, показывать оптовую цену для ознакомления, но покупать по ней разрешить только после подтверждения статуса. Если ни один доступный группе тип не имеет права «Покупка», товар не добавится в корзину по этой цене.
Вывод персональной цены в каталоге
Стандартные комплексные компоненты (bitrix:catalog, bitrix:catalog.section, bitrix:catalog.element) уже умеют работать с несколькими типами цен. В настройках компонента в параметре «Тип цен» (PRICE_CODE) перечисляются все типы, которые компонент должен запрашивать, а флаг USE_PRICE_COUNT и права доступа отсекут то, что пользователю не положено.
Практический приём: в PRICE_CODE добавляют сразу RETAIL, OPT и DILER. Битрикс на этапе рендера сам покажет каждому посетителю только разрешённую ему цену — оптовик увидит OPT, розничный клиент RETAIL, а гость — базовую. Дополнительно включают SHOW_PRICE_COUNT для количественных (ступенчатых) цен, если опт зависит от объёма.
Синхронизация цен с 1С
Если цены ведутся в 1С, персональные типы цен передаются штатным обменом CommerceML. В 1С каждому типу цены сайта сопоставляется свой вид цен, и при выгрузке в catalog прилетает несколько цен на один товар. Соответствие типов настраивается в правилах обмена и должно совпадать по символьным кодам с типами на сайте.
- символьные коды типов цен на сайте должны быть стабильны — при их смене обмен перестанет находить нужный вид цены;
- группы контрагентов из 1С часто маппятся на группы пользователей сайта, чтобы дилер автоматически попадал в нужный сегмент;
- после первичной выгрузки проверяйте, что у товаров заполнены все ожидаемые типы цен, а не только BASE.
Такой сценарий — классическая задача интеграции: цены и сегменты живут в 1С, а сайт лишь корректно их показывает нужным группам.
Как проверить и не ошибиться
Персональные цены — та область, где легко получить «показывает не то». Быстрый чек-лист для проверки:
- Заведите тестовых пользователей по одному на каждый сегмент и заходите под ними (удобно — из режима инкогнито или через список пользователей).
- Убедитесь, что гость видит только розничную/базовую цену и нигде не «протекает» оптовая.
- Проверьте, что у пользователя нет лишних групп, дающих доступ к более выгодному типу цены.
- Сверьте сортировку типов цен — она напрямую влияет на выбор при пересечении прав.
- Проверьте корзину и оформление заказа: цена в каталоге и в заказе должна совпадать (за неё отвечает право «Покупка»).
Итог
Персональные цены в 1С-Битрикс собираются из трёх кубиков: типы цен, группы пользователей и права доступа групп к этим типам. Товар остаётся один, каталог один, а цена подбирается автоматически по членству в группе и приоритету сортировки. Главное — аккуратно закрыть чувствительные типы цен от гостей и следить, чтобы у клиента не накапливались лишние группы.
Мы в B2Bsite настраиваем многоуровневое ценообразование под B2B: розница, опт, дилерские и индивидуальные цены с корректным выводом в каталоге и обменом с 1С. Если нужно связать сегменты контрагентов из учётной системы с группами на сайте или разобраться, почему клиент видит «не свою» цену — поможем спроектировать схему и внедрить её без дублей каталога.
Частые вопросы
Нужно ли создавать отдельный товар под каждую цену?
Нет. Товар остаётся один, а разные цены хранятся как разные типы цен у одного и того же товара. Пользователь видит ту цену, тип которой доступен его группе.
Что увидит неавторизованный посетитель?
Гость входит в группу «Все пользователи» с ID 2 и видит только те типы цен, которые разрешены этой группе — обычно базовую или розничную. Оптовые цены ему показывать не следует.
Какая цена выберется, если пользователю доступно несколько типов?
Битрикс выбирает тип цены с наименьшим значением поля «Сортировка» среди доступных группе. Поэтому приоритет цен задаётся именно сортировкой типов.
Чем отличаются права «Просмотр» и «Покупка»?
«Просмотр» разрешает видеть цену в каталоге, «Покупка» — оформлять заказ по ней. Их можно разделять, например показывать оптовую цену, но разрешать покупку только подтверждённым оптовикам.
Как автоматически относить клиентов к нужной группе?
Через событие на регистрацию, модерацию заявки на опт или через обмен с 1С/CRM, где сегмент контрагента маппится на группу пользователей сайта.
Почему после настройки клиент всё ещё видит старую цену?
Скорее всего страница отдаётся из кэша компонента каталога. Сбросьте кэш компонентов и каталога после изменения типов цен или прав доступа.
Как передавать персональные цены из 1С?
Штатным обменом CommerceML: каждому типу цены сайта сопоставляется вид цен в 1С по символьному коду, и при выгрузке товар получает сразу несколько цен.
Можно ли задать индивидуальную цену конкретному клиенту, а не группе?
Штатно цены привязаны к группам. Под одного клиента заводят персональную группу либо используют скидки/правила корзины и доработки — это уже задача разработки.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.