Настройка ценообразования по времени суток в 1С-Битрикс

Настройка ценообразования по времени суток 1С-Битрикс Владельцы интернет-магазинов часто сталкиваются с задачей: цены должны меняться автоматически в зависимости от времени суток — например, ночной тариф на доставку или скидка в обеденное время. Представьте: сеть кофеен хочет запустить happy hour
Услуги, которые мы предлагаем
Показано 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 Appointment Booking Widget for a Medical Center
    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 день. Получите консультацию по ценообразованию и срокам.