Настройка ценовых типов 1С-Битрикс
Ценовые типы (типы цен) в 1С-Битрикс — механизм отображения разных цен разным группам пользователей. Розничная цена для обычного покупателя, оптовая для зарегистрированного дилера, специальная для VIP-клиента — всё это реализуется через типы цен в связке с группами пользователей.
Структура данных
Ценовые типы хранятся в b_catalog_price_type. Цены конкретных товаров — в b_catalog_price, где каждая строка содержит CATALOG_ID (ID инфоблока-каталога), PRODUCT_ID, CATALOG_PRICE_TYPE_ID, PRICE и CURRENCY.
Создание ценового типа
Магазин → Каталог → Типы цен → Добавить:
- Название — техническое и публичное
-
Символьный код — используется в коде (
BASE,WHOLESALE,DEALER) - Сортировка — влияет на порядок в прайс-листе
- Валюта — валюта по умолчанию для этого типа
Привязка к группам пользователей: Магазин → Каталог → Типы цен → [тип] → Группы. Укажите, какая группа видит данный тип. Один пользователь может входить в несколько групп — применяется тип с наивысшим приоритетом.
Программное управление
// Создание типа цены
$priceType = \CCatalogPriceType::GetByID('WHOLESALE');
if (!$priceType) {
\CCatalogPriceType::Add([
'NAME' => 'Оптовая',
'CODE' => 'WHOLESALE',
'SORT' => 100,
'BASE' => 'N',
'CURRENCY' => 'RUB',
]);
}
// Установка цены для товара
\CCatalogProduct::SetPrice($productId, $priceTypeId, 1500.00, 'RUB');
// Получение цены для текущего пользователя
$price = \CCatalogProduct::GetOptimalPrice($productId);
// Возвращает минимальную цену из доступных пользователю типов
BASE-цена
Один тип цены должен иметь флаг BASE = Y. Это базовая цена — от неё рассчитываются скидки. Если у товара нет цены нужного типа для пользователя, Битрикс возвращает BASE-цену. Не удаляйте BASE-тип и не создавайте несколько BASE = Y — поведение непредсказуемо.
Импорт цен через CSV/XML
При импорте из 1С или Excel прайс-листа цены разных типов передаются отдельными колонками. В настройках импорта каждая колонка маппируется на тип цены. Через CIBlockElement::SetPropertyValues цены не устанавливаются — только через CCatalogProduct::SetPrice или D7 API:
\Bitrix\Catalog\PriceTable::add([
'PRODUCT_ID' => $productId,
'CATALOG_GROUP_ID' => $priceTypeId,
'PRICE' => 2500.00,
'CURRENCY' => 'RUB',
'QUANTITY_FROM' => null,
'QUANTITY_TO' => null,
]);
Сроки выполнения
Создание и настройка 2–3 типов цен с привязкой к группам — 2–4 часа. Настройка импорта прайс-листа с несколькими типами цен — 4–8 часов.







