Тип цены — базовая сущность ценообразования в 1С-Битрикс: именно к типам привязываются розничные, оптовые и специальные цены, а показ конкретной цены посетителю определяется его группой пользователей. Разберём, как это устроено на уровне модуля «Торговый каталог» и как не запутаться в приоритетах.
Что такое тип цены и зачем он нужен
В 1С-Битрикс у товара может быть не одна, а сразу несколько цен — по одной на каждый тип цены. Тип цены — это именованная колонка стоимости: «Розница», «Опт», «Дилер», «Цена для B2B». Физически это записи в таблице типов цен модуля catalog, а сами значения хранятся в b_catalog_price и привязаны к товару через PRODUCT_ID и CATALOG_GROUP_ID.
Такая модель решает типовую задачу интернет-магазина: одному и тому же артикулу нужно показывать разную стоимость разным аудиториям. Розничному покупателю — цену из колонки «Розница», оптовику — из «Опт», партнёру — из «Дилер». При этом карточка товара и остатки остаются едиными, меняется только выводимая цифра.
- Базовая цена — один из типов помечен как базовый (флаг «Базовый»), от него считаются наценки и скидки других типов.
- Дополнительные типы — розница, опт, дилерская и любые ваши колонки цен.
- Валюта — у каждого значения цены своя валюта, что удобно для мультивалютных прайсов.
Где заводятся типы цен в админке
Типы цен создаются и настраиваются в разделе Магазин → Настройки → Типы цен / Наценки (в старых редакциях — Торговый каталог → Типы цен). Для каждого типа задаются:
- Символьный код — латиницей, например
BASE,OPT,DILER. Он же используется в коде и при обмене с 1С. - Название и языковые названия — как тип подписан в интерфейсе.
- Признак базового типа — базовым может быть только один тип.
- Права групп пользователей — кто может видеть и кто может покупать по этому типу.
Связь с группами пользователей
Ключевой момент, который путает новичков: тип цены сам по себе не привязан к покупателю. Связь строится через права доступа групп пользователей к типам цен. У каждого типа есть таблица прав, где для группы можно указать уровень: «Покупка» (может купить по этой цене) или «Просмотр» (только видит).
Когда посетитель заходит в каталог, Битрикс определяет его группы (через модуль main) и подбирает доступные типы цен. Если пользователь входит сразу в несколько групп с доступом к разным типам, действует приоритет — показывается наиболее выгодная (минимальная) цена среди доступных, если иное не задано логикой компонента.
| Группа пользователей | Тип цены | Уровень права |
|---|---|---|
| Все пользователи (гости) | Розница | Покупка |
| Оптовики | Опт | Покупка |
| Дилеры | Дилер | Покупка |
Таким образом, чтобы оптовик увидел оптовую цену, недостаточно завести тип «Опт» — нужно, чтобы его группа имела право «Покупка» именно по этому типу, а по рознице — не имела приоритета.
Розница и опт: типовая схема
Минимально рабочая конфигурация магазина с розницей и оптом выглядит так:
- Тип «Розница» (например, базовый) — доступ на покупку у группы «Все пользователи (в том числе неавторизованные)».
- Тип «Опт» — доступ на покупку только у группы «Оптовые покупатели», в которую пользователи попадают после регистрации/модерации.
Оптовая цена обычно ниже розничной, поэтому её либо импортируют из 1С, либо задают как наценку/скидку к базовой цене (например, «−15% от Розницы») — это удобно, когда не хочется вести отдельную колонку вручную. О наценках и скидках подробно рассказано в отдельной статье рубрики.
Как цена попадает на витрину
За вывод отвечают компоненты каталога (catalog.section, catalog.element, комплексный bitrix:catalog). В настройках компонента есть параметр «Тип цены» (PRICE_CODE), где перечисляются символьные коды типов, которые компонент вообще должен обрабатывать.
- Если в
PRICE_CODEуказать несколько типов, компонент отдаст на витрину те из них, к которым у текущего пользователя есть права, и выберет отображаемую цену по приоритету. - Параметр
SHOW_PRICE_COUNTотвечает за показ ценовых диапазонов при количественных ценах. - Флаг «Использовать цены с учётом валют» (
CONVERT_CURRENCY) приводит мультивалютные цены к одной валюте на витрине.
Важно: если тип цены заведён и права даны, но в PRICE_CODE компонента он не перечислен — цена не появится. Настройка типов в админке и настройка компонента должны быть согласованы.
Типы цен и обмен с 1С
Если каталог грузится из 1С по стандартному протоколу CommerceML, типы цен создаются автоматически при импорте — 1С передаёт их названиями из своего справочника «Типы цен номенклатуры». Битрикс сопоставляет их по названию, а при отсутствии создаёт новый тип.
Это порождает две типичные проблемы:
- Дубли типов — если название в 1С переименовали, при следующем обмене появляется второй тип цены. Старые товары остаются на прежнем, новые падают на новый.
- Несовпадение кодов — символьный код, сгенерированный обменом, может отличаться от того, что прописан в компонентах, и цена «пропадает» с витрины.
BASE, OPT) и следить, чтобы названия в 1С им соответствовали. Тогда обмен будет обновлять существующие типы, а не плодить новые.Итог
Тип цены в 1С-Битрикс — это колонка стоимости, а какую именно цену увидит посетитель, решают права групп пользователей на типы цен и настройки компонента каталога. Розница, опт и цены для B2B — это просто разные типы плюс корректно розданные права. Три вещи держите в согласии: символьные коды типов, права групп и параметр PRICE_CODE в компонентах — тогда каждый покупатель увидит свою цену.
Мы в B2Bsite проектируем ценообразование под реальные бизнес-сценарии: розница и опт, дилерские сетки, персональные цены и корректный обмен ценами с 1С без дублей типов. Если нужно навести порядок в ценах или связать сайт с учётной системой — поможем с интеграцией и настройкой каталога.
Частые вопросы
Сколько типов цен можно завести в 1С-Битрикс?
Ограничения по количеству типов практически нет. На практике заводят от одного (только розница) до нескольких: розница, опт, дилер, персональные типы. Много типов усложняет права и обмен, поэтому создавайте только реально используемые.
Чем базовый тип цены отличается от остальных?
Базовым может быть только один тип, и именно от него по умолчанию считаются наценки и скидки других типов. Обычно базовым делают розницу или закупочную цену, приходящую из 1С.
Почему оптовик видит розничную цену, а не оптовую?
Скорее всего, его группа пользователей сохранила право «Покупка» на розничный тип, и алгоритм выбрал минимальную из доступных цен. Уберите у оптовой группы доступ к рознице и оставьте только оптовый тип.
Как привязать тип цены к конкретному покупателю?
Напрямую к покупателю тип не привязывается. Покупателя добавляют в группу пользователей, а группе дают право «Покупка» на нужный тип цены. Так связка «покупатель → группа → тип» и работает.
Почему заведённая цена не показывается в каталоге?
Проверьте параметр «Тип цены» (PRICE_CODE) в настройках компонента каталога — тип должен быть в нём перечислен. Также убедитесь, что у группы текущего пользователя есть право на просмотр или покупку по этому типу.
Можно ли скрыть цену от неавторизованных гостей?
Да. Для группы «Все пользователи» не давайте прав на нужный тип цены либо используйте сценарий «цена по запросу». Тогда гость не увидит стоимость, пока не авторизуется. Этому посвящена отдельная статья рубрики.
Откуда берутся типы цен при обмене с 1С?
При импорте по CommerceML Битрикс сопоставляет типы цен с справочником «Типы цен номенклатуры» из 1С по названию, а недостающие создаёт автоматически. Из-за переименований в 1С могут появляться дубли типов.
В чём разница между уровнями прав «Покупка» и «Просмотр»?
«Просмотр» позволяет группе видеть цену этого типа, но не участвует в выборе цены для покупки. «Покупка» разрешает и видеть, и оформлять заказ по данному типу. Для рабочей цены нужен уровень «Покупка».
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.