Один товар в B2B-магазине почти всегда стоит по-разному: розница, мелкий опт, крупный опт, цена для дилера. 1С умеет хранить все эти цены одновременно, а обмен CommerceML переносит их на сайт как отдельные типы цен каталога. Разберём, как настроить выгрузку нескольких типов цен, привязать их к группам покупателей и не сломать при этом расчёт скидок.
Как несколько цен переносятся из 1С
В 1С типы цен — это отдельный справочник (Справочники → Типы цен номенклатуры в УТ и УНФ). Для каждой позиции хранится матрица «товар × тип цены», и все нужные типы можно включить в один документ выгрузки CommerceML. При обмене они попадают в раздел import.xml внутри тега <Цены>, где у каждой цены есть свой <ИдТипаЦены> и представление.
На стороне 1С-Битрикс каждому такому идентификатору соответствует запись в разделе Магазин → Настройки → Типы цен. Модуль Торговый каталог (catalog) создаёт эти типы автоматически при первой загрузке, если их ещё нет, и дальше сопоставляет по внешнему коду (XML_ID). Поэтому важно не переименовывать типы цен в 1С после запуска обмена — иначе система заведёт дубли.
- Товары без торговых предложений — цены пишутся прямо в инфоблок каталога;
- Товары с торговыми предложениями (SKU) — цены хранятся на уровне предложения, а карточка показывает диапазон «от … до».
Что настроить на стороне 1С
Перед выгрузкой убедитесь, что нужные типы цен реально заполнены у номенклатуры. В обработке обмена (Администрирование → Обмен с сайтом или узел плана обмена «Обмен с сайтом») в настройках выгрузки каталога есть флаг выбора типов цен — по умолчанию выгружается только одна, «основная». Отметьте все типы, которые должны попасть на сайт.
import.xml, доступный по URL обмена. Оставьте только продажные типы.Проверьте валюту: если типы цен в 1С в разных валютах (например, розница в рублях, дилерская в у.е.), на сайте должны быть заведены соответствующие валюты в модуле currency, иначе цены загрузятся с нулём или в валюте по умолчанию.
Типы цен и права доступа в Битрикс
После первой загрузки откройте Магазин → Настройки → Типы цен. Здесь у каждого типа задаются два ключевых параметра: «Кто может просматривать» и «Кто может покупать по этой цене». Именно они превращают «просто набор цен» в реальную B2B-логику: розничные покупатели видят розницу, авторизованные дилеры — дилерскую.
| Тип цены | Группа с доступом | Результат на витрине |
|---|---|---|
| Розничная | Все пользователи | Базовая цена для гостей |
| Оптовая | Оптовики | Видна после авторизации оптовика |
| Дилерская | Дилеры | Персональная цена дилера |
Права выдаются группам пользователей, а не отдельным людям, поэтому клиентов нужно распределить по группам (Настройки → Пользователи → Группы пользователей). Часто распределение тоже автоматизируют — по признаку из 1С или по типу договора.
Приоритет цен и какая покажется покупателю
Когда одному пользователю доступно несколько типов цен, Битрикс выбирает по правилу: из всех цен, которые группа имеет право покупать, показывается минимальная. Это логично для скидок, но иногда даёт неожиданный результат — например, оптовик видит розницу, если она оказалась ниже опта на акционный товар.
Управлять этим можно через настройку «Кто может покупать»: снимите у оптовой группы право покупки по розничному типу, тогда для расчёта корзины будет браться только опт. Проверяйте поведение на тестовом пользователе каждой группы — витрина и корзина используют одну и ту же цену, и ошибка здесь сразу видна в заказе.
Несколько цен и торговые предложения
В большинстве B2B-каталогов товары имеют варианты (цвет, размер, фасовка) — это торговые предложения. Каждый тип цены выгружается на уровне конкретного предложения, поэтому матрица разрастается: «предложение × тип цены». Следите, чтобы в 1С у всех вариантов были заполнены одни и те же типы цен, иначе часть SKU получит цену 0 и выпадет из выборки по фильтру цены.
- Проверьте полноту цен у номенклатуры и характеристик в 1С перед выгрузкой;
- В карточке товара на сайте цена показывается как диапазон — минимум и максимум по выбранному типу;
- В компоненте каталога (
catalog.section,catalog.element) в настройках указывается, какие типы цен выводить и в каком порядке.
Если нужна не «минимальная», а конкретная цена для каждой группы, тип цены к выводу задаётся в параметрах компонента PRICE_CODE — можно вывести сразу несколько колонок (розница/опт) в таблице для менеджеров.
Проверка и типовые ошибки
После настройки прогоните полный обмен и проверьте результат под разными пользователями. Быстрый чек-лист:
- в
Магазин → Настройки → Типы ценнет дублей одного типа (следствие переименования в 1С); - у гостя видна только розница, у оптовика — опт;
- цены не нулевые: ноль означает, что тип не заполнен в 1С или не совпал XML_ID;
- валюта совпадает с заявленной в 1С;
- в корзине берётся ожидаемый тип цены, а не случайный минимум.
Самая частая проблема — рассинхрон идентификаторов: тип цены в 1С пересоздали, у него сменился GUID, и Битрикс завёл новый тип, а старый остался пустым. Лечится сопоставлением XML_ID или удалением дубля с переносом привязок. Смотреть детали удобно прямо в import.xml — раздел <ТипыЦен> в начале файла содержит справочник всех выгруженных типов.
Итог
Обмен несколькими типами цен из 1С — это связка из трёх настроек: выбор нужных типов в выгрузке 1С, автоматическое создание типов цен в каталоге Битрикс и раздача прав «просмотр/покупка» группам пользователей. Правильно расставленные приоритеты и единая договорённость о том, где считаются скидки, избавляют от задвоения и неверных сумм в заказах.
Если B2B-прайс сложный — десятки типов цен, персональные условия по договорам, разные валюты — мы настраиваем такой обмен под ключ: сопоставляем типы цен 1С и сайта, автоматизируем распределение клиентов по группам и проверяем расчёт корзины для каждой роли. Обращайтесь, если нужно, чтобы цены на витрине всегда совпадали с 1С.
Частые вопросы
Сколько типов цен можно выгрузить из 1С на сайт?
Технического ограничения нет — выгружаются все типы, отмеченные в настройках обмена. На практике на витрину выводят несколько продажных типов, а закупочные и себестоимость не выгружают.
Почему после обмена появились дубли типов цен?
Чаще всего тип цены переименовали или пересоздали в 1С, из-за чего сменился его идентификатор. Битрикс не нашёл совпадения по XML_ID и завёл новую запись. Нужно сопоставить идентификаторы или удалить дубль с переносом привязок.
Какая цена покажется покупателю, если ему доступно несколько типов?
По умолчанию Битрикс показывает минимальную из цен, которые группа имеет право покупать. Управлять этим можно, ограничив право покупки по ненужным типам в настройках типа цены.
Как сделать, чтобы оптовик видел опт, а гость — розницу?
Распределите клиентов по группам пользователей и в настройках каждого типа цены задайте, какая группа может его просматривать и покупать. Розницу открывают всем, опт — только группе оптовиков.
Почему часть товаров загрузилась с нулевой ценой?
Обычно тип цены не заполнен у этой номенклатуры в 1С или не совпал идентификатор типа. У товаров с вариантами цену нужно заполнять на каждом торговом предложении отдельно.
Можно ли выгрузить цены в разных валютах?
Да, если соответствующие валюты заведены в модуле валют Битрикс. Иначе цена в чужой валюте загрузится некорректно или пересчитается в валюту по умолчанию.
Где считать скидки — в 1С или на сайте?
Выберите одно место и не дублируйте. Если скидка уже включена в выгружаемый тип цены из 1С, не настраивайте на сайте ещё одно правило скидки на ту же группу, иначе суммы задвоятся.
Как вывести сразу две колонки цен для менеджеров?
В настройках компонента каталога через параметр PRICE_CODE можно указать несколько типов цен к выводу. Так в таблице товаров одновременно видны, например, розница и опт.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.