Групповое управление ценами — это когда вы меняете стоимость не по одному товару, а сразу по типу цены, группе покупателей или разделу каталога. Ниже — сквозной пример: заводим типы цен, назначаем их группам, поднимаем оптовую наценку на весь бренд и синхронизируем результат с 1С.
Исходная задача
Возьмём типичный магазин на 1С-Битрикс: Управление сайтом с модулем catalog. Есть каталог из нескольких тысяч SKU, розничные и оптовые клиенты, а также дилеры с индивидуальными условиями. Менеджеры устали править цену в каждой карточке товара и хотят управлять стоимостью пакетно: по типу цены и по группе покупателей.
Сформулируем конкретные требования к примеру, чтобы было что проверять по итогу:
- розница видна всем, опт — только авторизованным B2B-клиентам;
- оптовая цена считается как розница минус фиксированный процент;
- для бренда «X» нужно разово поднять опт на 7% без ручной правки карточек;
- дилерские цены приходят из 1С и не редактируются на сайте.
Шаг 1. Создаём типы цен
Типы цен — это «колонки» стоимости, независимые друг от друга. Заходим в Магазин → Настройки → Цены → Типы цен и заводим нужный набор. Под нашу задачу достаточно трёх типов.
| Тип цены (XML_ID) | Назначение | Кому показываем |
|---|---|---|
BASE | Базовая розница | Всем посетителям |
OPT | Оптовая цена | Группа «Оптовики» |
DEALER | Дилерская цена из 1С | Группа «Дилеры» |
У каждого типа задаётся символьный код — именно по нему тип сопоставляется при обмене с 1С и в API. Тип BASE создаётся модулем автоматически и является базовым: относительно него удобно строить наценки. Права на просмотр и покупку по каждому типу цены назначаются группам пользователей прямо в форме редактирования типа — это ключ к тому, чтобы опт не «протекал» гостям.
Шаг 2. Привязываем цены к группам покупателей
Групповое управление держится на связке «тип цены → группа пользователей». В Настройки → Пользователи → Группы пользователей создаём группы «Оптовики» и «Дилеры» (розница обслуживается стандартными «Все пользователи»/«Зарегистрированные»).
- В настройках типа
OPTв блоке прав ставим группе «Оптовики» доступ «Покупка», а «Зарегистрированным» — «Нет доступа». - Для
DEALERаналогично открываем доступ только группе «Дилеры». - Для
BASEоставляем «Покупка» у всех — это витринная розница.
Теперь одна и та же карточка товара показывает разную цену в зависимости от группы авторизованного пользователя, а сам компонент catalog.section берёт корректную колонку без дополнительного кода. Это и есть суть группового управления: вы не трогаете товары, вы управляете правами и типами.
BASE, иначе розничная витрина «онемеет».Шаг 3. Массовая наценка на бренд
Задача «поднять опт бренда X на 7%» — классический групповой сценарий. В 1С-Битрикс есть несколько путей, выбирайте по объёму и регулярности.
- Массовое изменение цен в разделе. В списке товаров каталога фильтруем по свойству «Бренд = X», выделяем позиции и через групповое действие меняем цену типа
OPTна+7%. Подходит для разовой правки одного раздела. - Наценка к базовой цене. Если
OPTвычисляется отBASE, наценку можно задать правилом, и она пересчитается автоматически при изменении розницы — ручных проходов не нужно. - Скрипт через API. Для регулярной задачи надёжнее код: перебираем элементы и пишем цену через
\Bitrix\Catalog\Model\Price::add()/::update()(в старых проектах —CPrice::Update()).
Минимальный пример пакетной наценки на PHP:
$price = \Bitrix\Catalog\Model\Price::getList(['filter' => ['=PRODUCT_ID' => $id, '=CATALOG_GROUP_ID' => $optGroupId]])->fetch();
\Bitrix\Catalog\Model\Price::update($price['ID'], ['PRICE' => round($price['PRICE'] * 1.07, 2), 'CURRENCY' => 'RUB']);
Так вы за один прогон обновляете тысячи позиций, не открывая ни одной карточки.
Шаг 4. Синхронизация с 1С
Дилерские цены (DEALER) в нашем примере — «ведущие» в 1С, поэтому сайт их не редактирует, а получает. Обмен идёт по протоколу CommerceML через модуль 1c_catalog: в файле offers.xml для каждого предложения приходит блок цен, а тип цены сопоставляется по символьному коду.
Чтобы групповое управление не конфликтовало с обменом, разграничьте зоны ответственности:
| Тип цены | Источник истины | Правится на сайте |
|---|---|---|
BASE, OPT | Сайт (наценки, акции) | Да |
DEALER | 1С | Нет |
Шаг 5. Проверяем результат
Групповые операции легко «промахиваются» мимо части товаров, поэтому итог обязательно проверяем от лица разных ролей.
- Зайти гостем — видна только розница
BASE, кнопка покупки активна. - Зайти под оптовиком — показывается
OPT, и по бренду X она на 7% выше прежней. - Зайти под дилером — видна
DEALERиз 1С, совпадает с учётной системой. - Открыть отфильтрованный список каталога и убедиться, что наценка легла на все позиции бренда, а не на текущую страницу.
Полезно проверить и кэш: цены выводятся через кэшируемые компоненты, поэтому после массовой правки сбросьте кэш каталога (Настройки → Настройки продукта → Автокэширование или очистка каталога) — иначе на витрине задержатся старые значения.
Итог
Групповое управление ценами в 1С-Битрикс сводится к четырём опорам: типы цен как колонки стоимости, права групп как правила видимости, массовые операции (групповые действия, наценки, API) для пакетной правки и чёткое разграничение с 1С, чтобы обмен не затирал ручные наценки. Собранная один раз схема избавляет менеджеров от правки карточек по одной и делает изменение цен предсказуемым.
Если нужно выстроить такую модель под ваш ассортимент, настроить корректный обмен ценами или ускорить каталог после массовых пересчётов — мы в B2Bsite проектируем ценообразование и интеграции на 1С-Битрикс под конкретную бизнес-логику и берём проект на сопровождение.
Частые вопросы
Чем групповое управление отличается от правки цены в карточке?
В карточке вы меняете стоимость одного товара, а групповое управление затрагивает сразу тип цены, группу покупателей или целый раздел каталога. Это экономит время и исключает разнобой при большом ассортименте.
Сколько типов цен можно завести?
Модуль каталога не ограничивает число типов цен жёстко, но на практике держат 3–6: розница, опт, дилер, спеццена. Чем больше типов, тем сложнее права и обмен, поэтому лишние лучше не плодить.
Как сделать так, чтобы опт видели только B2B-клиенты?
В настройках оптового типа цены дайте право «Покупка» только группе оптовиков, а остальным поставьте «Нет доступа». Тогда компонент каталога сам покажет нужную колонку в зависимости от группы авторизованного пользователя.
Можно ли поднять цену сразу на весь бренд?
Да. Отфильтруйте список товаров по свойству бренда и примените групповое действие с наценкой в процентах, либо запустите скрипт через API каталога. Оба способа не требуют открывать карточки по одной.
Наценка не перезапишется при обмене с 1С?
Перезапишется, если этот тип цены выгружается из 1С. Управляйте на сайте только теми типами, которых нет в выгрузке, а «ведущие» в учётной системе цены не редактируйте вручную.
Почему после массовой правки на витрине старая цена?
Цены выводятся через кэшируемые компоненты. Сбросьте кэш каталога после пакетного изменения, иначе посетители будут видеть устаревшие значения до истечения времени кэширования.
Как менять цены программно?
Используйте классы D7: Bitrix\Catalog\Model\Price с методами add и update, отфильтровав записи по PRODUCT_ID и CATALOG_GROUP_ID. В старых проектах встречается CPrice::Update, но новый API предпочтительнее.
Что будет, если у гостя нет прав ни на одну цену?
Товар может отобразиться без цены и без кнопки покупки. Убедитесь, что для анонимных посетителей открыт хотя бы базовый розничный тип цены.
Поможем с настройкой и поддержкой 1С-Битрикс: Управление сайтом
Поможем с настройкой, доработкой и поддержкой 1С-Битрикс: Управление сайтом.