Настройка региональных цен на 1С-Битрикс

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка региональных цен на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1175
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    811
  • 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 Appointment Booking Widget for a Medical Center
    564
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    747
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    655
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    976

Настройка региональных цен на 1С-Битрикс

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

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

В Битрикс региональные цены реализуются через комбинацию двух инструментов:

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

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

Правила торговли (b_sale_discount) — условные скидки и наценки. Здесь задаётся: если пользователь из группы «Москва» — применить цену типа MOSCOW или скидку X%.

Географические группы — модуль sale.regions (входит в редакцию Business). Определяет местоположение пользователя и автоматически добавляет его в соответствующую группу Битрикс.

Настройка пошагово

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

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

Шаг 3. Настроить определение региона. Варианты:

  • Автоматически по IP (модуль sale + GeoIP база данных MaxMind)
  • Через сессию: пользователь выбирает город из выпадающего списка
  • Через куку: $_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 дней