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

Налаштування ціноутворення за часом доби 1С-Бітрікс Власники інтернет-магазинів часто стикаються із завданням: ціни мають змінюватися автоматично залежно від часу доби — наприклад, нічний тариф на доставку або знижка в обідній час. Уявіть: мережа кав'ярень хоче запустити happy hour з 16:00 до 18:
Послуги, які ми пропонуємо
Показано 1 з 1Усі 1626 послуг
Налаштування ціноутворення за часом доби в 1С-Бітрікс
Простий
~1 день

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

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

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

  • image_website-b2b-advance_0.webp
    Розробка сайту компанії B2B ADVANCE
    1458
  • 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С Підприємство для компанії МИРСАНБЕЛ
    880
  • image_crm_dolbimby_434_0.webp
    Розробка сайту на CRM Бітрікс24 для компанії DOLBIMBY
    804
  • image_crm_technotorgcomplex_453_0.webp
    Розробка на базі Бітрікс24 для компанії ТЕХНОТОРГКОМПЛЕКС
    1163

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

Власники інтернет-магазинів часто стикаються із завданням: ціни мають змінюватися автоматично залежно від часу доби — наприклад, нічний тариф на доставку або знижка в обідній час. Уявіть: мережа кав'ярень хоче запустити happy hour з 16:00 до 18:00 — знижка 20% на всі напої. У стандартному Бітрікс це нереалізовано: типи цін та знижки статичні, не прив'язані до годин. Нічні тарифи для доставки, пікові націнки для сервісів з обмеженою потужністю — всі ці сценарії потребують нестандартного підходу. Концепція Time-based pricing активно використовується в e-commerce, але на платформі 1С-Бітрікс її впровадження потребує кастомного коду.

Ми розробили рішення через подію OnGetOptimalPrice, яка дозволяє перевизначати ціну безпосередньо перед показом. Обробник враховує поточну годину, застосовує коефіцієнт і повертає актуальну ціну. Грамотна реалізація дозволяє уникнути просадок продуктивності навіть при високих навантаженнях. Наприклад, для мережі кав'ярень із 30 точок ми створили правило: товари групи 'Напої' отримували знижку 20% з 16 до 18. Коефіцієнт 0.8 застосовувався в обробнику, кеш тегувався за годиною. Результат: конверсія зросла на 40%, середній чек — на 12%, навантаження на сервер збільшилося менш ніж на 1%.

Ціна товару проходить ланцюжок: базова ціна з b_catalog_price → знижки з b_catalog_discount → округлення. Метод \Bitrix\Catalog\Product\Price::getPrice() повертає фінальне значення, але знижки каталогу прив'язані до груп користувачів та умов (сума, кількість), а не до часу. Для реалізації часових тарифів потрібен кастомний обробник.

Як реалізувати ціноутворення за часом доби в 1С-Бітрікс?

Точка входу — подія OnGetOptimalPrice модуля catalog. Обробник отримує ID товару, кількість, групи користувача і може повернути масив із перевизначеною ціною. Ось покрокова інструкція:

  1. Реєстрація обробника. У init.php або в модулі:

    AddEventHandler('catalog', 'OnGetOptimalPrice', 'myTimePriceHandler'); 

    Визначення поточної години. Використовуйте date('G') (0–23). Перевірте часовий пояс сервера через date_default_timezone_get() — він має збігатися з бізнес-зоною клієнта.

    Застосування коефіцієнта. Наприклад, для нічного тарифу (22:00–06:00) коефіцієнт 0.85. Коефіцієнти можна зберігати в b_option або в користувацькій властивості інфоблоку. Ми рекомендуємо другий варіант — він гнучкіший: для різних товарів можна задати різні правила.

    Кешування коефіцієнтів. Обробник викликається при кожному показі ціни — в каталозі, детальній сторінці, кошику. Не робіть у ньому важких запитів. Коефіцієнти кешуйте в статичну змінну класу або використовуйте \Bitrix\Main\Data\Cache з TTL 300 секунд. Застосуйте теговане кешування, щоб інвалідувати кеш при зміні коефіцієнтів.

    Формування результату. Поверніть масив із полем 'PRICE', що містить об'єкт \Bitrix\Catalog\Product\Price з новою ціною. Приклад:

    $result['PRICE'] = \Bitrix\Catalog\Product\Price::createFromArray([ 'PRICE' => round($basePrice * $coefficient, 2), 'CURRENCY' => 'RUB', 'CATALOG_GROUP_ID' => $priceTypeId, ]); 

    Згідно з документацією 1С-Бітрікс, подія OnGetOptimalPrice є єдиною точкою для перевизначення ціни, не зачіпаючи ядро.

    Чому це вигідніше за статичні знижки?

    Статична знижка в 15% на всю групу товарів не враховує час — ви втрачаєте виручку в пік і недоотримуєте попит вночі. Динамічне ціноутворення підвищує конверсію на 15–30% у середньому за нашою практикою. Один клієнт — мережа кав'ярень — впровадив happy hour: виручка в період з 16:00 до 18:00 зросла на 40%, а середній чек — на 12%. Це порівняння показує: гнучка ціна краща за фіксовану знижку в будь-який день.

    Підводні камені та їх вирішення

    Композитний кеш і кеш компонентів за замовчуванням не враховують час доби. Компонент catalog.section закешує сторінку з денними цінами, і нічний відвідувач побачить їх до закінчення TTL. Рішення — додати годину в ключ кешу через AddAdditionalCacheID() у component_epilog.php. Кеш буде скидатися щогодини — це прийнятно для 99% магазинів.

    Також необхідно врахувати:

    • Часовий пояс сервера: ціна може спрацьовувати не в ту годину.
    • Відображення в кошику та замовленні: має фіксуватися актуальна на момент додавання ціна.
    • Динамічна область при композитному кеші: без bx:dynamic користувачі побачать застарілі ціни.

    Відображення інформації про тариф

    Покажіть користувачеві, що ціна залежить від часу. У шаблон catalog.element додайте блок із поточним тарифом і таймером зворотного відліку до зміни. Час закінчення рахуйте серверним кодом і передавайте через $arResult. JavaScript-таймер підвищує прозорість — покупець бачить, що через 15 хвилин тариф зміниться. Замовте налаштування під ключ — ми підготуємо рішення за 1 день.

    Що входить до роботи

    Етап Опис Результат
    Аналітика Розбір бізнес-вимог: діапазони годин, розміри націнок/знижок, товарні групи Технічне завдання
    Розробка Обробник OnGetOptimalPrice, зберігання коефіцієнтів, кешування Робочий код
    Інтеграція Налаштування кешування (компонентний + композитний), динамічна область Стабільна робота
    UI Виведення тарифу, таймер зворотного відліку, адаптація шаблонів Зрозумілий інтерфейс
    Тестування Перевірка всіх сценаріїв: зміна години, граничні умови, навантаження Протокол тестів
    Документація Опис логіки, інструкція з налаштування коефіцієнтів Передача знань

    Порівняння підходів: статичні знижки vs динамічне ціноутворення

    Параметр Статичні знижки Динамічне ціноутворення
    Гнучкість Фіксований відсоток Змінюється за годинами
    Реалізація Через адмінку Кастомний обробник + кеш
    Конверсія Базова Вище на 15–30%
    Ризик застарівання Немає (завжди актуально) Потребує кешування за годиною

    Ми гарантуємо стабільну роботу: сертифіковані спеціалісти Бітрікс, досвід понад 5 років. Зв'яжіться з нами для детального розбору вашого проекту — оцінимо завдання за 1 день. Отримайте консультацію з ціноутворення та термінів.