Оптовые и B2B-цены в 1С-Битрикс строятся не на «второй колонке в карточке», а на связке трёх сущностей: типы цен, группы покупателей и права доступа к типам цен. Разберём, как собрать эту конструкцию так, чтобы разные категории клиентов видели свои цены автоматически, а обмен с 1С не ломал настройку.
Как устроено ценообразование в Битрикс
В модуле catalog (Торговый каталог) у товара может быть сколько угодно типов цен: «Розничная», «Оптовая», «Дилерская» и так далее. Каждый тип цены — это отдельная запись, привязанная к товару, а не альтернативное поле. Именно поэтому один и тот же товар может одновременно иметь розничную цену 1000 ₽ и оптовую 750 ₽.
Кто какую цену увидит, решают группы покупателей — это те же группы пользователей из модуля main (/bitrix/admin/group_admin.php). Связь двусторонняя: у типа цены задаётся, какие группы могут покупать по этой цене, а через права — какие группы могут её видеть. B2B-логика целиком собирается из этих настроек, без единой строчки кода.
Создаём типы цен для опта и B2B
Типы цен настраиваются в разделе Магазин → Настройки → Типы цен (/bitrix/admin/cat_group_admin.php). Нажмите «Добавить тип цены» и заполните ключевые поля:
- Символьный код (XML_ID) — латиницей, например
OPTилиDEALER. Именно по нему цена сопоставляется при обмене с 1С, поэтому код должен совпадать с наименованием вида цены в 1С. - Название — как видит менеджер в админке.
- Группы покупателей — какие группы пользователей смогут купить товар по этой цене. Для дилеров создайте отдельную группу, например «Оптовики B2B».
Практичная схема для B2B-магазина: одна базовая розничная цена и одна-две оптовых («Опт», «Дилер»). Не плодите десятки типов — каждая лишняя цена усложняет обмен и импорт прайсов.
Группы покупателей и привязка клиентов
Тип цены сам по себе ничего не даёт, пока к нему не привязаны группы пользователей. Создайте группу Оптовики в Настройки → Пользователи → Группы пользователей и укажите её в поле «Группы покупателей» у оптового типа цены.
Дальше клиента нужно в эту группу поместить. Вариантов несколько:
- Вручную — менеджер добавляет пользователя в группу после проверки реквизитов и подписания договора.
- По подтверждению регистрации — форма «стать оптовиком» создаёт заявку, после одобрения пользователь переносится в группу.
- Из 1С — при выгрузке контрагентов сопоставлять их с группой на стороне сайта (обычно через доработку обработчика обмена).
Права на просмотр и покупку по цене
Даже привязанная группа не увидит оптовую цену без прав доступа. Права настраиваются на вкладке «Доступ» в карточке типа цены и разграничивают два действия:
| Право | Что даёт |
|---|---|
| Просмотр | Группа видит эту цену в каталоге и карточке товара |
| Покупка | Группа может оформить заказ именно по этой цене |
Для классического B2B-сценария розничную цену скрывают от оптовиков (снимают просмотр), а оптовую — от анонимных гостей и розничных покупателей. Так дилер в каталоге видит только свою цену, а обычный посетитель — только розничную.
Проверить итог удобно через вход под тестовым пользователем нужной группы или режим «Просмотр от имени пользователя». Если цена не отображается в компоненте каталога, почти всегда причина — отсутствие права «Просмотр» либо тип цены не добавлен в настройках компонента catalog.section / catalog.element (параметр «Тип цены»).
Вывод нужной цены в каталоге
Компоненты каталога не показывают все цены подряд — им явно перечисляют, какие типы цен выводить. В настройках комплексного компонента bitrix:catalog (или отдельных catalog.section, catalog.element) есть параметр «Тип цены» — отметьте там и розницу, и опт.
Дальше движок сам решает, какую из перечисленных цен показать конкретному пользователю, исходя из его групп и прав. Гостю — розницу, залогиненному дилеру — опт. Отдельную страницу или отдельный шаблон под B2B делать не нужно: один каталог обслуживает все категории клиентов.
- Если нужно показывать перечёркнутую старую цену, включите вывод базовой цены и цены со скидкой — компонент отрисует их вместе.
- После смены настроек цен обязательно сбросьте кэш компонентов (
Настройки → Настройки продукта → Автокэшированиеили очистка кэша), иначе изменения «залипнут».
Синхронизация цен с 1С
В большинстве B2B-проектов цены ведутся в 1С, а сайт их только принимает. Обмен идёт через стандартный протокол CommerceML (/bitrix/admin/1c_exchange.php). Ключевой момент — сопоставление видов цен:
- В 1С каждому виду цены («Оптовая», «Дилерская») соответствует свой идентификатор, который приходит в файле выгрузки.
- В Битрикс тип цены сопоставляется с ним по символьному коду. При первой выгрузке типы цен создаются автоматически, но коды лучше заранее согласовать, чтобы не появлялись дубли.
Группы покупателей и права доступа при обмене не передаются — их вы настраиваете на стороне сайта один раз. 1С отвечает за значения цен, Битрикс — за то, кто их видит.
Проверка и типовые ошибки
Перед запуском прогоните короткий чек-лист под тремя ролями: гость, розничный клиент, оптовик.
- Гость видит только розницу — оптовая цена скрыта правами «Просмотр».
- Оптовик видит опт — он в нужной группе, группа привязана к типу цены, право «Просмотр» есть.
- В корзине списывается верная цена — совпадает право «Покупка», а не только «Просмотр».
Самые частые грабли: оптовик остался только в группе «Все пользователи»; тип цены не отмечен в настройках компонента; закэшированная страница показывает старую цену; при нескольких группах сработал приоритет минимальной цены и клиент видит не ту цифру, что ожидали.
Итог
Рабочая B2B-схема цен в Битрикс — это три согласованных слоя: типы цен (розница, опт, дилер), группы покупателей (кто к какой цене привязан) и права доступа (кто цену видит и по ней покупает). Значения удобно вести в 1С и синхронизировать по символьным кодам, а логику показа держать на сайте. Настраивается всё штатными средствами, без кастомного кода.
Если магазин крупный, ассортимент большой, а видов цен и правил много, ручная настройка быстро превращается в клубок исключений. Мы в B2Bsite проектируем ценовую матрицу под реальные бизнес-процессы, настраиваем корректный обмен с 1С и следим, чтобы каждая категория клиентов видела ровно свою цену — без сюрпризов в корзине.
Частые вопросы
Чем оптовая цена отличается от розничной в Битрикс?
Технически ничем — это просто разные типы цен, привязанные к одному товару. Разница только в том, каким группам покупателей они доступны и по каким правам.
Как сделать, чтобы оптовик видел свою цену, а гость — розничную?
Создайте отдельную группу пользователей для оптовиков, привяжите её к оптовому типу цены и настройте права: гостям и рознице закройте просмотр опта, оптовикам — просмотр розницы.
Почему оптовая цена не показывается в каталоге?
Обычно причин две: у группы нет права «Просмотр» на этот тип цены, либо тип цены не отмечен в настройках компонента каталога. Также проверьте кэш.
Можно ли завести несколько оптовых уровней (опт, крупный опт, дилер)?
Да, создайте нужное количество типов цен и отдельные группы покупателей под каждый уровень. Не увлекайтесь количеством — это усложняет обмен и импорт прайсов.
Как цены попадают из 1С на сайт?
Через стандартный обмен CommerceML. Виды цен из 1С сопоставляются с типами цен Битрикс по символьному коду, поэтому коды нужно согласовать заранее.
Что будет, если пользователь в нескольких группах покупателей?
По умолчанию ему покажется минимальная из доступных цен. Поэтому оптовиков не стоит оставлять в общей группе с розничным доступом.
Передаются ли группы и права при обмене с 1С?
Нет. 1С передаёт только значения цен, а группы покупателей и права доступа настраиваются на стороне сайта один раз.
Нужен ли отдельный раздел или сайт для B2B-клиентов?
Нет, один каталог обслуживает всех. Движок сам подставляет нужную цену в зависимости от групп и прав пользователя.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.