У большинства оптово-розничных компаний одна и та же боль: розничный покупатель должен видеть одну цену, оптовик — другую, дилер — третью, а крупный клиент по договору — вообще индивидуальную. Первое, что приходит в голову, — сделать два сайта или продублировать товары с разными ценниками. Это тупик: рассинхрон остатков, двойной контент, боль с обменом и SEO. В 1С-Битрикс задача решается штатно — несколькими типами цен в одном каталоге, где нужную цену подбирает система по группе покупателя.
Ниже — практическая схема: как устроены типы цен и группы покупателей, как показать рознице розничные цены, а опту оптовые, как сделать персональные цены и наценки, как это правильно сопоставить с 1С и не потерять скорость каталога. Материал основан на наших проектах по разработке B2B-порталов и личных кабинетов на 1С-Битрикс — без теории ради теории.
Коротко
- Каталог, товары и URL остаются общими — меняется только тип цены, который видит покупатель.
- Тип цены — это колонка цены у товара; группа покупателей — категория клиента. Связь задаётся правами доступа к типам цен.
- Розница видит розничную цену, авторизованный опт — оптовую; переключение происходит автоматически по группе.
- Персональные цены делают отдельным типом, наценкой на группу или выгрузкой готовых цен из 1С по договору.
- Главное — правильно сопоставить виды цен с 1С и учесть группу пользователя в ключе кэширования каталога.
Задача: розница и опт в одном магазине
Прежде чем настраивать типы цен, полезно чётко сформулировать бизнес-задачу — от неё зависит вся конфигурация. В оптово-розничной компании обычно сосуществуют несколько категорий покупателей, и каждая ждёт свою цену.
- Розница (B2C). Незалогиненный посетитель или физлицо. Видит розничную цену, покупает поштучно, платит картой.
- Мелкий опт. Небольшие магазины и ИП. Цена ниже розницы, часто с порогом минимальной суммы заказа.
- Крупный опт и дилеры (B2B). Постоянные партнёры с договором. Своя оптовая цена, отсрочка платежа, безнал, иногда индивидуальные условия.
- Ключевые клиенты. Персональные прайсы, согласованные вручную или рассчитанные в 1С по договору.
Ошибочный путь — заводить под каждую категорию свой каталог или дублировать товары. Он множит сущности: остатки расходятся, карточки дублируются, обмен с 1С усложняется, а поисковик получает дубли. Правильный путь — один каталог, несколько типов цен: товар остаётся одним объектом с одной карточкой, одним URL и одними остатками, а разным покупателям система показывает разную цену. Именно так устроен торговый каталог 1С-Битрикс, и дальше мы разберём его механику по деталям.
Что такое типы цен в 1С-Битрикс
Тип цены (в интерфейсе — «Тип цен») — это именованная «колонка» стоимости, которую можно назначить товару. У одного товара одновременно может быть сколько угодно типов цен: «Розничная», «Оптовая», «Мелкий опт», «Дилерская», «Закупочная» и так далее. Каждый тип — самостоятельная величина со своей валютой и, при необходимости, отдельным правом на просмотр и покупку.
Технически типы цен хранятся в модуле «Торговый каталог» (catalog). У каждого типа есть символьный код (например, BASE, OPT, DILER), название и признак базового типа. Один из типов помечается как базовый — это опорная цена, от которой удобно считать наценки и скидки, и именно она обычно приходит первой из 1С.
Ключевая идея: тип цены сам по себе не привязан к покупателю. Он просто существует у товара как одно из значений стоимости. А вот кто из покупателей какую цену увидит и по какой купит — определяется отдельно, через права доступа типа цены к группам пользователей. Это разделение и даёт гибкость: можно завести пять типов цен и раздать их десяти группам в любых комбинациях, не трогая сами товары.
Стоит сразу разделить два права у каждого типа цены: «просмотр» и «покупка». Просмотр разрешает группе видеть цену в каталоге, покупка — оформлять по ней заказ. Обычно они совпадают, но иногда полезно развести: например, показать оптовику розничную цену «для сравнения», но продавать только по оптовой. Понимание этой пары прав снимает половину вопросов по настройке.
Группы покупателей и права на цены
Группы пользователей — это штатный механизм ядра 1С-Битрикс (модуль main), который используется для прав доступа по всему сайту. В контексте цен группа отвечает на вопрос «к какой категории покупателей относится этот пользователь». Стандартно есть группы «Все пользователи» (в неё входят в том числе неавторизованные) и «Зарегистрированные пользователи», а под задачу добавляют свои: «Оптовики», «Дилеры», «VIP-клиенты».
Связь групп и типов цен настраивается в правах доступа к каждому типу цены. Матрица получается простой и наглядной: строки — типы цен, столбцы — группы, на пересечении — уровень доступа (нет доступа / просмотр / покупка). Например:
| Тип цены | Все пользователи (розница) | Оптовики | Дилеры |
|---|---|---|---|
| Розничная (BASE) | Покупка | Просмотр | — |
| Оптовая (OPT) | — | Покупка | Просмотр |
| Дилерская (DILER) | — | — | Покупка |
Когда пользователь открывает каталог, система смотрит на его группы, собирает доступные типы цен и подставляет ту, что доступна на покупку (а если таких несколько — минимальную, самую выгодную для клиента). Незалогиненный посетитель входит в группу «Все пользователи» и видит розничную цену. Оптовик после авторизации попадает в группу «Оптовики» — и на тех же страницах видит оптовую цену. Никакого дублирования товаров: одна карточка, разная цена по группе.
Важный нюанс — пользователь может состоять в нескольких группах сразу. Тогда ему доступны все типы цен этих групп, а покупка идёт по самой низкой из доступных на покупку. Это удобно для акций и переходных статусов, но требует аккуратности: случайно оставленная у клиента лишняя группа может открыть ему не ту цену. Поэтому назначение групп в B2B обычно автоматизируют — привязывают к статусу контрагента в 1С или CRM.
Архитектура ценообразования: как всё связано
Чтобы настраивать цены осознанно, держите в голове полную цепочку, которая приводит к тому, что покупатель видит на карточке. В 1С-Битрикс она собирается из нескольких слоёв.
- Товар (элемент инфоблока каталога). Хранит набор цен — по одному значению на каждый тип цены.
- Типы цен. Именованные колонки стоимости (розничная, оптовая, дилерская) с базовым признаком и валютой.
- Права доступа к типам цен. Матрица «тип цены × группа» с уровнями «просмотр» и «покупка».
- Группы пользователя. Категории покупателя, определяющие доступные ему типы цен.
- Наценки и скидки. Правила, которые модифицируют цену для группы или условий корзины.
- Слой вывода и кэша. Компоненты каталога и корзины, которые подбирают итоговую цену и кэшируют результат с учётом группы.
Запрос покупателя проходит по этой цепочке так: система определяет группы текущего пользователя, отбирает доступные типы цен, выбирает из них минимальную доступную на покупку, применяет наценки и скидки, приводит валюту и выводит итог. Понимание цепочки сразу подсказывает, где искать проблему: если клиент видит не ту цену — смотрим его группы и права типов цен; если цена «прыгает» между пользователями — смотрим ключ кэширования; если итог не сходится с 1С — смотрим наценки и сопоставление видов цен.
Типовые сценарии B2B и B2C
Механика типов цен и групп покрывает большинство реальных задач. Разберём частые конфигурации, чтобы было от чего отталкиваться.
Розница видит одну цену, опт — другую
Базовый сценарий. Тип «Розничная» доступен группе «Все пользователи» на покупку, тип «Оптовая» — только группе «Оптовики» на покупку и закрыт для розницы. Незалогиненный клиент видит розницу, оптовик после входа — опт. Один каталог, одни товары.
Опт видит и розничную, и оптовую цену
Иногда полезно показать оптовику «выгоду»: перечёркнутую розничную цену рядом с оптовой. Тогда группе «Оптовики» дают оптовый тип на покупку и розничный на просмотр, а шаблон каталога выводит обе цены с пометкой скидки.
Несколько уровней опта
Мелкий и крупный опт — два разных типа цен и две группы. Клиент попадает в свою группу по обороту или статусу в 1С и видит соответствующий уровень цен. Переход между уровнями — это просто смена группы, товары трогать не нужно.
Розничные цены скрыты до авторизации
Для чисто B2B-каталогов цены часто закрывают полностью: неавторизованный посетитель видит товары без цен и кнопку «Войти, чтобы увидеть цену». После входа под B2B-аккаунтом появляются цены его уровня. Об этом подробнее в разделе про «цену по запросу».
Все эти сценарии — комбинации одних и тех же кирпичиков: типов цен, групп и прав. Именно поэтому связку так удобно масштабировать: добавление нового уровня цен — это новый тип и новая группа, а не переделка каталога. Похожую логику мы разбираем в статье про оптовые цены по группам в Битрикс.
Персональные цены и индивидуальные прайсы
Групповых цен хватает не всегда. У крупного B2B-клиента часто индивидуальный прайс по договору: своя цена на каждую позицию, а не общая скидка. В 1С-Битрикс персонализацию делают несколькими способами, и выбор зависит от того, сколько таких клиентов и откуда берутся цены.
- Отдельный тип цены под клиента или узкую группу. Подходит, когда индивидуальных клиентов немного. Заводим тип «Цена клиента N», открываем его группе из одного-двух пользователей. Цены задаются вручную или приходят из 1С. Прозрачно, но плохо масштабируется на сотни договоров.
- Наценка/скидка на группу. Если персонализация сводится к «−7% от базовой», проще не заводить отдельные цены, а повесить на группу правило скидки. Одна настройка обслуживает всех клиентов с такой же скидкой.
- Готовые цены из 1С по договору. Самый масштабируемый вариант для настоящего B2B. Индивидуальные цены рассчитываются в 1С по договорам и соглашениям и выгружаются в Битрикс в отдельный тип цены, привязанный к клиенту. Каталог просто показывает то, что прислала учётная система.
- Личный кабинет и загрузка прайса. Для сложных B2B-порталов персональный прайс отдают в личном кабинете: клиент видит только свои цены и позиции, может скачать прайс-лист в Excel и заказать по нему.
На практике для среднего и крупного опта побеждает третий путь — расчёт в 1С и выгрузка. Он снимает нагрузку с сайта, держит цены в одной точке правды (учётная система) и легко масштабируется на сотни контрагентов. Тонкости реализации мы разбираем в отдельном материале про индивидуальные прайс-листы B2B в Битрикс.
Наценки, скидки и базовая цена
Не каждую цену нужно хранить отдельным типом. Часто одни цены — это другие плюс-минус процент. В 1С-Битрикс для этого есть механизм наценок и скидок, который считает цену «на лету» от базовой.
Базовая цена — опорный тип, помеченный как базовый. От неё удобно считать всё остальное. Например, розница = базовая, мелкий опт = базовая −10%, крупный опт = базовая −18%. Тогда в каталоге можно хранить только базовую цену, а оптовые уровни задать наценками (со знаком минус) на соответствующие группы.
Наценки бывают двух природы, и их важно не путать:
- Наценка на тип цены. Модификатор самого типа: «оптовая = базовая минус 15%». Считается при формировании цены товара, влияет на то, что видно в каталоге.
- Скидка на корзину / правила работы с корзиной. Модуль
saleприменяет скидки по условиям заказа: сумма, количество, промокод, группа. Работает уже в корзине и оформлении.
Выбор между «отдельным типом цены» и «наценкой от базовой» — это баланс между гибкостью и простотой. Если оптовая цена — это всегда ровно −15% от розницы, наценка проще: одна настройка, ничего не выгружать. Если же опт считается по своей логике (свои округления, свои цены на отдельные позиции, спеццены на акции), надёжнее хранить оптовую цену отдельным типом и приводить её из 1С. На реальных проектах эти подходы часто сочетают: базовые уровни — наценками, а исключения и индивидуальные цены — отдельными типами из учётной системы.
Отдельно стоит помнить про порядок применения: сначала система определяет цену типа (с учётом наценки на тип), затем в корзине накладываются скидки правил sale. Если перепутать уровни и задать одну и ту же скидку и там, и там, покупатель получит двойное списание процента. Управление наценками и переоценкой по расписанию мы подробно разбираем в статье про управление ценами и переоценку в Битрикс.
| Механизм | Когда применяется | Хорошо для |
|---|---|---|
| Отдельный тип цены | При формировании цены товара | Опт со своей логикой, спеццены, индивидуальные прайсы из 1С |
| Наценка на тип от базовой | При формировании цены товара | Ровные проценты «опт = розница −15%» |
| Скидки правил корзины (sale) | В корзине и оформлении | Пороги суммы, количества, промокоды, акции |
Сравнение подходов к мультиценам
Чтобы окончательно закрыть вопрос «дублировать или нет», сравним три способа организовать разные цены для розницы и опта.
| Критерий | Один каталог, типы цен | Отдельные сайты / дубли товаров |
|---|---|---|
| Товары и остатки | Общие, одна точка правды | Дублируются, расходятся |
| Карточка и URL | Одни для всех групп | Разные, риск дублей в поиске |
| Обмен с 1С | Один обмен, цены по видам | Несколько обменов, сложнее |
| Добавить новый уровень цен | Новый тип + группа | Новый каталог/сайт |
| Переключение розница ↔ опт | Автоматически по группе | Разные адреса, вручную |
| Сопровождение | Низкое | Высокое, растёт с ассортиментом |
Вывод очевиден: связка «один каталог + типы цен + группы» выигрывает почти по всем параметрам. Отдельные сайты оправданы только тогда, когда розничный и оптовый бизнес — это действительно разные бренды с разным ассортиментом и дизайном, а не просто разные цены на один товар.
Настройка мультицен пошагово
- Спроектируйте типы цен и группы. Выпишите категории покупателей (розница, мелкий/крупный опт, дилеры) и нужные типы цен. Нарисуйте матрицу «тип цены × группа» с уровнями доступа.
- Создайте типы цен. В разделе «Магазин → Настройки → Типы цен» заведите нужные типы, задайте символьные коды (BASE, OPT, DILER) и отметьте базовый тип. Коды пригодятся для сопоставления с 1С.
- Создайте группы покупателей. В «Настройки → Пользователи → Группы пользователей» добавьте «Оптовики», «Дилеры» и другие нужные группы.
- Раздайте права на типы цен. Для каждого типа цены откройте права доступа и назначьте группам уровни «просмотр» / «покупка» по вашей матрице. Закройте оптовые типы от «Всех пользователей».
- Настройте наценки, если нужны. Для уровней «ровный процент от базовой» задайте наценки на тип цены вместо хранения отдельных цен.
- Свяжите цены с 1С. В настройках обмена сопоставьте виды цен 1С с типами цен Битрикса по внешнему коду, чтобы оптовые и розничные цены ложились в свои колонки.
- Настройте вывод в каталоге. В компонентах каталога (
catalog.section,catalog.element) укажите, какие типы цен показывать; при необходимости выводите розничную «зачёркнутой» рядом с оптовой. - Автоматизируйте назначение групп. Привяжите группу пользователя к статусу контрагента в 1С/CRM, чтобы клиент автоматически попадал в свой ценовой уровень.
- Проверьте под разными ролями. Зайдите как гость, как оптовик и как дилер — убедитесь, что каждый видит и покупает по своей цене, а кэш не отдаёт чужую.
Как это выглядит в админке 1С-Битрикс
Настройки цен живут в модуле «Торговый каталог» и разделах магазина. Типы цен заводят в «Магазин → Настройки → Типы цен», права раздают там же во вкладке доступа, группы — в разделе пользователей. Схематично экран настройки типа цены с правами выглядит так:
Для полноценной работы с несколькими типами цен нужна редакция с модулем «Интернет-магумент» — «Малый бизнес» или «Бизнес» (в «Старте» торгового каталога нет). Компоненты, которые участвуют в выводе цен:
bitrix:catalog.section— список товаров раздела; в параметрах указывают типы цен для показа.bitrix:catalog.element— карточка товара с ценами и предложениями.bitrix:sale.basket.basket— корзина, где применяются скидки правилsaleи итоговая цена покупки.- Модуль «Торговый каталог» (
catalog) — хранит типы цен, наценки и права доступа. - Модуль «Обмен» / «1С» — сопоставляет виды цен 1С с типами цен Битрикса при выгрузке.
Важная деталь вывода: в параметрах компонентов каталога есть настройка «Тип цены» и «Показывать цены» — там перечисляют, какие типы выводить в шаблоне. Если хотите показывать оптовику розничную цену «для сравнения», добавьте оба типа в вывод, а в шаблоне пометьте базовую как зачёркнутую.
Обмен с 1С: сопоставление видов цен
В связке «1С + Битрикс» цены обычно считаются в учётной системе, а сайт их показывает. Ключевой момент — правильно сопоставить виды цен в 1С с типами цен в Битриксе. Делается это по внешнему коду (идентификатору), который приходит в файле обмена CommerceML.
Как это работает:
- В 1С заведены виды цен. Например, «Розничная», «Оптовая», «Дилерская» — со своими правилами расчёта по договорам и соглашениям.
- При первой выгрузке приходят их идентификаторы. Битрикс получает список видов цен с их GUID/кодами.
- Настраивается сопоставление. Каждому виду цены из 1С назначается соответствующий тип цены Битрикса. Розничная → BASE, Оптовая → OPT и так далее.
- Дальнейшие обмены кладут цены по местам. Каждая цена приходит в свою колонку, оптовые и розничные не смешиваются.
Самая частая беда — рассогласование внешних кодов. Если сопоставление не настроено или коды «уехали» после изменений в 1С, обмен начинает создавать дубли типов цен («Оптовая», «Оптовая (1)») или перетирать цены не в те колонки. Поэтому карту сопоставления проверяют до первого боевого обмена и фиксируют внешние коды. После настройки цены живут в одной точке правды — в 1С, а Битрикс их только отображает нужным группам.
Скрытие цен и «цена по запросу»
В B2B нередко цены не показывают публично: их видно только авторизованным партнёрам. Логика та же — права типов цен, — но с акцентом на группу «Все пользователи».
- Полное скрытие до входа. Закройте все типы цен от группы «Все пользователи». Неавторизованный посетитель видит товары без цен; в шаблоне вместо цены показываете кнопку «Войти, чтобы увидеть цену».
- Только розница до входа. Гостю доступна розничная цена, оптовые — после авторизации. Компромисс между открытостью и защитой оптовых цен от конкурентов.
- Цена по запросу для отдельных позиций. Для товаров без цены (проектные, под заказ) в шаблоне выводите форму запроса цены вместо кнопки «В корзину».
Технически «скрытие» — это отсутствие доступа группы к типу цены и обработка этого случая в шаблоне компонента: если доступной цены нет, вместо ценника рисуется призыв авторизоваться или оставить запрос. Важно не забыть про кнопку покупки — при скрытой цене её тоже прячут или заменяют, иначе клиент положит товар в корзину «за 0 рублей».
НДС, валюты и юрлица
Разные типы покупателей нередко отличаются не только ценой, но и налоговыми и валютными условиями. 1С-Битрикс это поддерживает, но настройку легко упустить.
- НДС. Розничная цена обычно «с НДС», а оптовые могут показываться и с НДС, и без — по договорённости. Ставка НДС задаётся у товара, а вывод «с НДС / без НДС» настраивается в параметрах каталога и может зависеть от типа плательщика.
- Валюты. У каждого типа цены своя валюта. Если опт ведётся в другой валюте (например, закупочная в валюте поставщика), Битрикс приводит её к валюте вывода по курсу модуля «Валюты».
- Юрлица и плательщики. В корзине оформления B2B-клиент выбирает плательщика-юрлицо, и от этого зависят доступные способы оплаты (безнал, счёт) и отображение цен с НДС.
Практический совет: определите заранее, в каких ценах и с каким НДС ведётся каждый уровень, и зафиксируйте это в 1С. Тогда обмен принесёт корректные значения, а на сайте останется только правильно их вывести. Смешение «цены с НДС» и «без НДС» в одном типе — источник самых обидных расхождений в счетах.
Кэш и производительность при мультиценах
Само наличие нескольких типов цен почти не нагружает каталог: нужную цену система выбирает по группе за счёт индексов. Но у мультицен есть своя специфическая ловушка — кэширование с учётом группы пользователя.
Проблема возникает так: компонент каталога кэширует HTML страницы, чтобы не пересобирать её на каждый запрос. Если в ключ кэша не заложена группа пользователя, первый зашедший (например, гость) «прогреет» кэш с розничными ценами, и следующий за ним оптовик получит из кэша чужую розничную цену. Это классическая и очень неприятная ошибка B2B-каталога.
Как её избежать:
- Учитывайте группу в ключе кэша. В компонентах каталога включите зависимость кэша от прав/группы пользователя, чтобы для каждой ценовой группы был свой кэш.
- Осторожно с композитным кэшем. Композит отдаёт статику всем одинаково; цены, зависящие от группы, выносите в динамическую часть, которая догружается по пользователю.
- Не считайте цены тяжёлыми правилами на каждый запрос. Если оптовая цена — это выгрузка из 1С, а не расчёт скидок «на лету», нагрузка минимальна. Тяжёлые правила
saleс множеством условий заметно дороже. - Проверяйте под несколькими ролями. Обязательно тестируйте каталог из-под гостя и разных B2B-групп после каждого изменения кэша.
Правильно настроенный кэш по группе даёт и скорость, и корректность: каждая ценовая категория работает на своём тёплом кэше и видит только свои цены. Ошибка же в ключе кэша — это не «медленно», а «клиент увидел не ту цену», что в опте куда опаснее.
Частые ошибки при настройке
- Дублируют товары ради разных цен вместо типов цен — остатки расходятся, появляются дубли в поиске, обмен усложняется.
- Забыли закрыть оптовый тип цены от группы «Все пользователи» — конкуренты и розница видят оптовые цены.
- Ключ кэша не учитывает группу — оптовик получает из кэша розничную цену (или наоборот). Самая опасная ошибка мультицен.
- Внешние коды видов цен не сопоставлены с 1С — обмен плодит дубли типов цен или кладёт цены не в те колонки.
- Правят цены в админке Битрикса, хотя они приходят из 1С — следующий обмен всё перетирает.
- Задали одну и ту же скидку и наценкой на тип, и правилом корзины — покупатель получает двойное списание процента.
- Скрыли цену, но забыли спрятать кнопку «В корзину» — товар кладётся в заказ «за 0 рублей».
- Оставили клиенту лишнюю группу — он видит более выгодную цену, чем положено по договору.
- Смешали «с НДС» и «без НДС» в одном типе цены — счета и суммы в корзине расходятся.
Чек-лист внедрения
Сведём всё в практический список, по которому удобно принимать готовность мультицен перед запуском:
- Матрица спроектирована. Есть схема «тип цены × группа» с уровнями «просмотр» / «покупка» для всех категорий покупателей.
- Типы цен созданы. Заведены нужные типы с символьными кодами, отмечен базовый тип.
- Группы созданы. Есть группы под опт, дилеров и другие категории, помимо стандартных.
- Права розданы. Оптовые типы закрыты от «Всех пользователей», нужным группам открыты на покупку.
- Наценки настроены. Уровни «ровный процент от базовой» заданы наценками; спеццены хранятся отдельными типами.
- Обмен с 1С сопоставлен. Виды цен 1С привязаны к типам Битрикса по внешнему коду, проверено на тестовом обмене.
- Кэш учитывает группу. В ключ кэша каталога заложена группа пользователя, проверено под гостем и B2B-ролями.
- Скрытие цен работает. Для B2B-режима гость видит корректный призыв авторизоваться, кнопка покупки спрятана при отсутствии цены.
- НДС и валюты выверены. Для каждого уровня зафиксировано, в какой валюте и с каким НДС ведётся цена.
- Назначение групп автоматизировано. Клиент попадает в свой ценовой уровень по статусу в 1С/CRM, а не вручную.
Вывод
Розница и опт спокойно уживаются в одном каталоге 1С-Битрикс — для этого не нужны ни дубли товаров, ни отдельные сайты. Всё держится на трёх сущностях: типах цен у товара, группах покупателей у пользователя и правах доступа, которые их связывают. Добавьте к этому корректное сопоставление видов цен с 1С, аккуратные наценки и кэш с ключом по группе — и получите гибкую систему, где каждый клиент видит свою цену на одной и той же странице. Персональные прайсы для крупных B2B-клиентов масштабируются выгрузкой готовых цен из 1С, а не ручной правкой. Спроектируйте матрицу цен и групп до настройки — и внедрение пройдёт без сюрпризов.