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

Динамічне ціноутворення: від правил до обробника Уявіть: інтернет-магазин електроніки з 10 000 позицій. Один товар — SSD-накопичувач. При залишку менше 10 штук ціна автоматично зростає на 20% — без ручних знижок, лише логіка в коді. Реалізувати це можна через перехоплення події `OnGetOptimalPrice
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування динамічного ціноутворення на 1С-Бітрікс
Простий
~1 день

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

Часті запитання

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1459
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Розробка веб-сайту для компанії ФІКСПЕР
    1019
  • 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
    761
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Розробка на базі 1С Підприємство для компанії МИРСАНБЕЛ
    882
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    808
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1163

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

Уявіть: інтернет-магазин електроніки з 10 000 позицій. Один товар — SSD-накопичувач. При залишку менше 10 штук ціна автоматично зростає на 20% — без ручних знижок, лише логіка в коді. Реалізувати це можна через перехоплення події OnGetOptimalPrice — підміняємо ціну на льоту, не чіпаючи таблицю b_catalog_price. За 5 років реалізували понад 50 проєктів з динамічним ціноутворенням для магазинів різного масштабу. Наші клієнти отримують прозорий аудит: усі модифікації логуються в окрему таблицю.

Як Бітрікс формує підсумкову ціну?

Ланцюжок розрахунку: базова ціна (b_catalog_price) → знижки каталогу (b_catalog_discount) → правила кошика (b_sale_discount) → підсумок. Динамічне ціноутворення працює на першому рівні — змінює базову ціну, або перехоплює її через подію OnGetOptimalPrice і повертає інше значення. Подія викликається при кожному запиті ціни: у списку товарів, на детальній, у кошику. Без оптимізації один запит до БД — 0.3 мс, але сторінка каталогу з 48 товарами — 48 запитів. Рішення — кешувати модифікатор з TTL 5 хвилин.

Чому варто використовувати подію, а не прямий запис у базу?

Критерій Через подію OnGetOptimalPrice Пряма зміна ціни в b_catalog_price
Чистота історії цін Ціна залишається незмінною, модифікатор застосовується на льоту Заповнює історію зайвими записами
Відкат змін Миттєво — вимикаємо правило Потрібно відновлювати попередні значення, до 2 годин
Індексація прайсів Не впливає Може спотворювати вивантаження
Продуктивність Один запит до кешу на товар Багато запитів на запис при кожній зміні

Подія скорочує час відкату до 1 хвилини, а прямий запис потребує відновлення з бекапу. Кешування прискорює роботу в 10 разів.

Які правила динамічного ціноутворення ми налаштовуємо?

Правила зберігаються в користувацькій таблиці bl_dynamic_pricing_rules. Ось її поля з прикладами:

Поле Опис Приклад
rule_type stock / demand / competitor / time stock
iblock_id інфоблок або NULL (усі) 17
product_id конкретний товар або NULL (усі в розділі) 1234
condition_json параметри умови (залишок, година, коефіцієнт) {"min_stock": 5}
price_modifier коефіцієнт (1.15 = +15%, 0.9 = -10%) 1.2
priority порядок застосування при конфлікті правил 10
active увімкнено/вимкнено Y

При конфлікті правил застосовується правило з найвищим пріоритетом.

Приклад: правило за залишками складу

Якщо залишок товару падає нижче порогу — підвищуємо ціну. Це стимулює купувати швидше або обмежує ажіотаж. Залишки беремо з b_catalog_store_product:

$stock = \Bitrix\Catalog\StoreProductTable::getList([ 'filter' => ['PRODUCT_ID' => $productId], 'select' => ['AMOUNT'], 'runtime' => [new \Bitrix\Main\ORM\Fields\ExpressionField('TOTAL', 'SUM(%s)', 'AMOUNT')], ])->fetch()['TOTAL'] ?? 0; if ($stock < 5) return 1.2; // +20% при залишку < 5 шт if ($stock < 20) return 1.1; // +10% при залишку < 20 шт return 1.0; 

Пороги та коефіцієнти ви можете налаштувати в адміністративному інтерфейсі.

Як налаштувати правило за залишками?

  1. Створіть правило в адміністративному інтерфейсі (розділ «Динамічне ціноутворення»).
  2. Вкажіть тип stock.
  3. Задайте пороги залишків (наприклад, <5, 5-20).
  4. Призначте коефіцієнт зміни ціни (наприклад, 1.2 для +20%).
  5. Увімкніть кешування з TTL 300 секунд.
  6. Протестуйте на одному товарі — перевірте ціну на вітрині.
  7. Активуйте правило для всього каталогу.

Оптимізація продуктивності

Без кешування сторінка каталогу з 48 товарами робить 48 викликів події OnGetOptimalPrice до БД. З кешуванням — 1 запит кожні 5 хвилин. Навантаження знижується в 10 разів. Ми також використовуємо тегований кеш Bitrix \Bitrix\Main\Data\Cache з TTL 300 секунд і скиданням за тегом dynamic_price_{productId}. Це дозволяє витримувати каталоги до 100 000 товарів без просідань.

Процес роботи

  1. Аналіз: вивчаємо поточну схему ціноутворення, бізнес-вимоги, навантаження на сайт.
  2. Проектування: створюємо структуру таблиці bl_dynamic_pricing_rules та логіку пріоритетів.
  3. Розробка: пишемо клас DynamicPricingEngine з кешуванням, підключаємо обробник OnGetOptimalPrice в init.php.
  4. Інтерфейс адміністрування: створюємо форму для керування правилами (додавання, редагування, увімкнення/вимкнення).
  5. Логування: записуємо всі застосування правил у bl_dynamic_pricing_log для аудиту.
  6. Тестування: навантажувальне тестування на каталозі з 100 000 товарів, перевірка коректності цін.
  7. Деплой і документація: інструкція для оператора з налаштування правил.

Що входить у результат

Після завершення робіт ви отримуєте:

  • працюючий механізм динамічного ціноутворення на основі правил;
  • адміністративний інтерфейс для керування правилами без доступу до коду;
  • логи всіх змін цін для аудиту;
  • документацію з налаштування та експлуатації;
  • навантажувальне тестування каталогу до 100 000 товарів;
  • гарантійну підтримку протягом місяця після впровадження.

Терміни та консультація

Налаштування займає від 3 до 10 робочих днів залежно від кількості правил та розміру каталогу. Вартість розраховується індивідуально — ми оцінимо проєкт після брифу. Отримайте консультацію — зв'яжіться з нами, і ми підготуємо дорожню карту. Замовте впровадження — і ваш магазин отримає гнучке ціноутворення без ручного керування.

Ми гарантуємо, що рішення працюватиме стабільно: витримає пікові навантаження і не викличе помилок на вітрині. Наші сертифікати та портфоліо — на запит.