Налаштування регіональних цін на 1С-Бітрікс

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування регіональних цін на 1С-Бітрікс
Проста
~1 робочий день
Часті питання

Наші компетенції:

Етапи розробки

Останні роботи

  • image_website-b2b-advance_0.png
    Розробка сайту компанії B2B ADVANCE
    1262
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Розробка веб-сайту для компанії ФІКСПЕР
    851
  • image_bitrix-bitrix-24-1c_development_of_an_online_appointment_booking_widget_for_a_medical_center_594_0.webp
    Розробка на базі Бітрікс, Бітрікс24, 1С для компанії Development of an Online
    585
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    751
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    657
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    989

Налаштування регіональних цін на 1С-Бітрікс

Регіональне ціноутворення — одна з найскладніших тем у каталозі 1С-Бітрікс. «Показувати ціну залежно від регіону» — звучить просто, а на практиці перетинаються кілька механізмів: типи цін, групи користувачів, географічні групи та правила торгівлі. Розберемо, як це працює зсередини.

Механіка регіональних цін

У 1С-Бітрікс регіональні ціни реалізуються через поєднання двох інструментів:

Типи цін (b_catalog_price_type) — базовий механізм. Для кожного типу ціни задається доступність за групами користувачів. Приклади типів:

  • BASE — базова роздрібна ціна
  • WHOLESALE — оптова
  • MOSCOW — ціна для Москви
  • REGIONS — ціна для регіонів

Правила торгівлі (b_sale_discount) — умовні знижки та націнки. Тут задається: якщо користувач із групи «Москва» — застосувати ціну типу MOSCOW або знижку X%.

Географічні групи — модуль sale.regions (входить до редакції Business). Визначає місцезнаходження користувача і автоматично додає його до відповідної групи 1С-Бітрікс.

Налаштування покроково

Крок 1. Створити типи цін для кожного регіону: Торговий каталог → Налаштування → Типи цін. Призначити права доступу — яка група користувачів бачить який тип ціни.

Крок 2. Заповнити ціни для кожного типу. Або вручну в картці товару, або через завантаження CSV/XML, або через синхронізацію з 1С з кількома типами цін.

Крок 3. Налаштувати визначення регіону. Варіанти:

  • Автоматично за IP (модуль sale + база даних GeoIP MaxMind)
  • Через сесію: користувач обирає місто зі списку
  • Через cookie: $_COOKIE['BITRIX_SM_SALE_LOCATION']

Крок 4. Пов'язати регіон із групою користувачів через правило торгівлі:

// Програмне додавання користувача до групи за геолокацією
$locationCode = \Bitrix\Sale\Location\LocationTable::getLocationCityCode($cityId);

if (in_array($locationCode, ['0000073738', '0c5b2444b22d4d0fa32c11a4401d4c46'])) {
    // Москва і МО — додаємо до групи 5
    \CUser::SetUserGroup($userId, array_unique(array_merge($currentGroups, [5])));
}

Визначення ціни в запиті

При вибірці товарів важливо передавати коректну групу користувача для отримання потрібного типу ціни:

$userGroups = \Bitrix\Main\UserTable::getUserGroupIds($userId);

$products = \CCatalogProduct::GetList(
    ['SORT' => 'ASC'],
    ['IBLOCK_ID' => CATALOG_IBLOCK_ID, 'ACTIVE' => 'Y'],
    false,
    false,
    ['ID', 'NAME', 'CATALOG_PRICE_1', 'CATALOG_PRICE_3'] // ID типів цін
);
// Або через GetPrice із зазначенням типу ціни
$price = \CCatalogProduct::GetOptimalPrice($productId, 1, $userGroups);

GetOptimalPrice повертає мінімальну ціну серед усіх типів, доступних групам користувача — це ключовий метод для регіональних цін.

Кешування та продуктивність

Регіональні ціни збільшують навантаження на кеш: один і той самий список товарів виглядає по-різному для різних регіонів. Використовують тегове кешування з включенням ідентифікатора регіону до ключа кешу:

$regionTag = 'region_' . \Bitrix\Sale\Location\LocationTable::getCurrentRegionCode();
$cacheId = 'catalog_section_' . $sectionId . '_' . $regionTag;

Терміни

Конфігурація Термін
2–3 типи цін + ручний вибір регіону 1–2 дні
Автовизначення регіону за IP + групи 2–4 дні
Повне налаштування із синхронізацією цін з 1С 4–7 днів