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

Наша компанія займається розробкою, підтримкою та обслуговуванням рішень на Бітрікс та Бітрікс24 будь-якої складності. Від простих односторінкових сайтів до складних інтернет-магазинів, CRM систем з інтеграцією 1С та телефонії. Досвід розробників підтверджено сертифікатами від вендора.
Пропоновані послуги
Показано 1 з 1 послугУсі 1626 послуг
Налаштування акційних цін за розкладом 1С-Бітрікс
Проста
~1 робочий день
Часті питання

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

Етапи розробки

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

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

Налаштування акційних цін за розкладом 1С-Bitrix

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

Два механізми знижок: каталог vs. кошик

У Bitrix паралельно працюють два механізми знижок, і плутати їх — головна помилка.

Знижки каталогу (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. Перевірте, що шаблон каталогу виводить обидва значення — інакше відвідувач не побачить вигоди.