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

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Предлагаемые услуги
Показано 1 из 1 услугВсе 1626 услуг
Настройка сезонного ценообразования на 1С-Битрикс
Простая
~1 рабочий день
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1181
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    813
  • 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_discount. У каждого правила есть поля ACTIVE_FROM и ACTIVE_TO (тип DateTime). Создайте правило с нужным периодом и действием «Уменьшить цену на X%»:

  • Правило «Зимняя наценка»: ACTIVE_FROM = 2024-10-01, ACTIVE_TO = 2025-02-28, скидка -15% (отрицательная = наценка не поддерживается напрямую — см. ниже)
  • Правило «Летняя распродажа»: ACTIVE_FROM = 2024-07-01, ACTIVE_TO = 2024-08-31, скидка 20%

Ограничение: скидки каталога умеют только уменьшать цену. Для наценок нужен другой подход.

Наценка через типы цен

Для сезонного повышения цен создайте отдельный тип цены bl_season_price в b_catalog_group. Агент в нужную дату заполняет b_catalog_price для этого типа, а в конце сезона очищает. Группы пользователей переключаются на сезонный тип через CGroup::Update() или остаются на базовом (сезонный тип как дополнительный).

Другой вариант — агент напрямую обновляет базовую цену в b_catalog_price:

\Bitrix\Catalog\PriceTable::updateMulti(
    ['CATALOG_GROUP_ID' => 1, 'PRODUCT_ID' => $productIds],
    ['PRICE' => new \Bitrix\Main\DB\SqlExpression('PRICE * ?f', 1.15)]
);

Сохраняйте исходные цены перед изменением — в таблицу bl_price_backup с полями product_id, original_price, backup_date. Агент возврата в конце сезона восстанавливает цены из бэкапа.

Расписание сезонов

Храните сезонные периоды в таблице bl_seasonal_pricing:

Поле Описание
name Название сезона («Зимняя коллекция»)
active_from Дата начала
active_to Дата окончания
modifier Коэффициент цены (1.15 = +15%)
iblock_section_id Раздел каталога (NULL = весь каталог)
applied Флаг, применено ли изменение

Агент SeasonalPricingAgent запускается раз в день, проверяет записи где active_from = TODAY и applied = 0, применяет коэффициент и ставит applied = 1. Аналогично — агент возврата при active_to < TODAY.

Интеграция с кэшем

После массового обновления цен нужно сбросить кэш каталога. Используйте \Bitrix\Main\Data\Cache::clearByTag('b_catalog') или вызовите \Bitrix\Main\Data\TaggedCache::clearByTag('catalog_element_'.$productId) в цикле. На больших каталогах (10 000+ товаров) делайте это батчами по 500 товаров с паузами.

Что настраиваем

  • Таблицу расписания bl_seasonal_pricing и bl_price_backup
  • Агент применения сезонных цен с бэкапом исходных значений
  • Агент возврата цен по истечении сезона
  • Правила каталога в b_catalog_discount для скидочных сезонов
  • Инвалидацию кэша после массового обновления цен