Настройка акционных цен по расписанию 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С-Битрикс

Менеджер хочет запустить скидку в пятницу в 18:00 и снять в понедельник в 09:00 — без ручного вмешательства. Модуль catalog поддерживает скидки с диапазоном дат, но на практике настройка ломается из-за неправильного выбора типа скидки, игнорирования кэша и конфликтов между правилами корзины и каталога.

Два механизма скидок: каталог vs. корзина

В Битрикс параллельно работают два движка скидок, и путать их — главная ошибка.

Скидки каталога (b_catalog_discount) — применяются на этапе показа цены. Имеют поля ACTIVE_FROM и ACTIVE_TO, которые задают период действия. Работают с типами цен, группами пользователей и условиями по свойствам товара. Это именно тот механизм, который нужен для расписания.

Правила корзины (b_sale_discount) — применяются при расчёте заказа в модуле sale. Тоже имеют ACTIVE_FROM/ACTIVE_TO, но работают иначе: условие проверяется в момент оформления, а не показа. Если акционная цена должна быть видна в каталоге до добавления в корзину — используйте скидки каталога.

Настройка скидки каталога по расписанию

Путь: Магазин → Скидки на товары → Добавить скидку.

Ключевые поля:

  • Активность — обязательно «Да».
  • Дата начала / Дата окончания — задают окно акции. Формат зависит от настройки сайта, внутренне хранится как DATETIME в b_catalog_discount.
  • Тип скидки — процент или фиксированная сумма.
  • Условия применения — раздел каталога, конкретные товары (по ID или свойству), группа пользователей.
  • Приоритет — число, определяющее порядок применения. Скидка с приоритетом 1 применяется раньше скидки с приоритетом 2.

Флаг «Прекратить применение» — если включён, скидки с меньшим приоритетом не применяются. Используйте его, чтобы акционная цена не суммировалась с накопительной скидкой.

Автоматизация через агенты

Для сложных расписаний (каждую пятницу, каждый первый день месяца) полей ACTIVE_FROM/ACTIVE_TO недостаточно — они задают одноразовый период. Решение — агент, который программно создаёт и деактивирует скидки.

Агент регистрируется в b_agent и вызывает \Bitrix\Catalog\DiscountTable::update() для изменения полей ACTIVE_FROM, ACTIVE_TO и ACTIVE. Расписание хранится в пользовательской таблице или в UF-полях скидки.

Альтернатива — cron-скрипт, который по таблице расписаний (custom_discount_schedule) находит скидки, подлежащие активации, и переключает флаг ACTIVE. Такой подход проще отлаживать: лог выполнения скрипта покажет, что именно активировалось и когда.

Кэширование и отображение

Скидки каталога кэшируются компонентами catalog.section и catalog.element. Если TTL кэша — 3600 секунд, а акция стартует в 18:00, посетитель может увидеть старую цену до 19:00.

Решения:

  • Уменьшить TTL до 300–600 секунд на период акции.
  • Сбросить кэш программно в агенте после активации скидки: \Bitrix\Main\Data\Cache::clearCache(true, '/bitrix/catalog.section/').
  • Использовать тегированный кэш — при изменении скидки модуль catalog сбрасывает тег catalog, но только если скидка изменена через API, а не прямым SQL.

Перечёркнутая старая цена отображается автоматически, если в типе цены указана «старая цена» и шаблон компонента поддерживает вывод OLD_PRICE. Проверьте, что шаблон каталога выводит оба значения — иначе посетитель не увидит выгоду.