Налаштування цінових типів 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' => 'UAH',
]);
}
// Встановлення ціни для товару
\CCatalogProduct::SetPrice($productId, $priceTypeId, 1500.00, 'UAH');
// Отримання ціни для поточного користувача
$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' => 'UAH',
'QUANTITY_FROM' => null,
'QUANTITY_TO' => null,
]);
Терміни виконання
Створення та налаштування 2–3 типів цін із прив'язкою до груп — 2–4 години. Налаштування імпорту прайс-листа з кількома типами цін — 4–8 годин.







