Уявіть: каталог з 10 000 позицій, сезонні націнки на зимові товари стартують 1 жовтня. Ручне оновлення цін — 800 людино-годин на рік. Помилка в одній ціні — втрата маржі або скарги клієнтів. Наш агент вирішує це за 10 хвилин з повним бекапом та скиданням кешу.
За 5 років ми реалізували десятки таких рішень для каталогів від 1000 до 100 000 товарів. Сезонні зміни цін — це не лише знижки, але й націнки: зимові куртки дорожчають у жовтні, новорічні набори йдуть з націнкою у грудні, літні товари уцінюються у серпні. У Бітрікс це вирішується через правила каталогу з умовою за датою або через планові агенти, які змінюють ціни за розкладом.
Чому варто автоматизувати сезонні ціни?
Ручне оновлення цін на 50 000 товарів займає 2-3 дні та загрожує помилками. Один пропущений товар — втрата прибутку або невдоволення клієнтів. Агент робить це за 10 хвилин з повним бекапом. У разі збою агент відновить ціни з резервної таблиці, виключивши простої.
Як агент сезонного ціноутворення гарантує відмовостійкість?
Перед будь-якою зміною ми зберігаємо вихідні ціни в таблицю bl_price_backup. Агент перевіряє записи в bl_seasonal_pricing, де дата початку збігається з сьогоднішньою, та застосовує коефіцієнт. Якщо агент падає на середині, він просто не виставляє прапорець applied — при наступному запуску він продовжить з того ж місця. Після успішного застосування всіх батчів скидається тегований кеш.
Офіційна документація 1С-Бітрікс підтверджує: «Агенти виконуються системою за розкладом і можуть бути використані для автоматизації будь-яких процесів».
Чому агентний підхід ефективніший за правила каталогу для націнок?
Стандартні знижки каталогу (правила в b_catalog_discount) не підтримують націнки — лише зменшення ціни. Для підвищення цін ми створюємо виділений тип ціни bl_season_price та агент, який за розкладом перемикає товари на цей тип. Агент працює в 10 разів швидше за стандартний cron, тому що використовує батчі по 500 записів та тегований кеш.
Приклад: агент сезонної націнки з бекапом
Зберігаємо розклад у таблиці bl_seasonal_pricing:
| Поле | Опис |
|---|---|
name |
Назва сезону («Зимова колекція») |
active_from |
Дата початку |
active_to |
Дата закінчення |
modifier |
Коефіцієнт ціни (1.15 = +15%) |
iblock_section_id |
Розділ каталогу (NULL = весь каталог) |
applied |
Прапорець, чи застосовано зміну |
Агент перевіряє записи, де active_from = TODAY та applied = 0, застосовує коефіцієнт і ставить прапорець. Перед зміною зберігаємо вихідні ціни в bl_price_backup:
\Bitrix\Catalog\PriceTable::updateMulti( ['CATALOG_GROUP_ID' => 1, 'PRODUCT_ID' => $productIds], ['PRICE' => new \Bitrix\Main\DB\SqlExpression('PRICE * ?f', 1.15)] ); Після оновлення скидаємо кеш: \Bitrix\Main\Data\Cache::clearByTag('b_catalog'). Для великих каталогів (10 000+ товарів) робимо батчами по 500 з паузами в 2 секунди.
Фрагмент коду агента (спрощено)
class SeasonalPricingAgent { public static function apply(): string { $rows = \Bitrix\Seasonal\PricingTable::getList([ 'filter' => ['=ACTIVE_FROM' => date('Y-m-d'), '=APPLIED' => false], ])->fetchAll(); foreach ($rows as $row) { // зберігаємо бекап, оновлюємо ціни, інвалідуємо кеш } return 'SeasonalPricingAgent::apply();'; } } Порівняння підходів до сезонного ціноутворення
| Метод | Знижки | Націнки | Швидкість застосування на 10 000 товарів |
|---|---|---|---|
| Правила каталогу | Так, до -99% | Ні | Миттєво (зберігаються в БД) |
| Агент з бекапом | Так, будь-який коефіцієнт | Так, будь-який модифікатор | ~2 хвилини (з батчами і кешем) |
| Гібрид (правила + агент) | Так | Так | ~3 хвилини (подвійний запис) |
Що входить в роботу
- Створення таблиць
bl_seasonal_pricingтаbl_price_backupз міграціями - Розробка агента застосування та агента відновлення цін
- Налаштування правил каталогу для знижкових періодів
- Інтеграція з кешем (теговане скидання)
- Документація з встановлення та експлуатації
- Навчання адміністраторів
- Підтримка 2 тижні після запуску
Процес роботи
- Аналітика — вивчаємо каталог, сезонні цикли, поточну логіку ціноутворення
- Проєктування — обираємо метод (знижки, націнки, гібрид), визначаємо таблиці та агентів
- Реалізація — пишемо код, міграції, тести (unit + інтеграційні)
- Тестування — перевіряємо на staging з копією каталогу, заміряємо продуктивність
- Деплой — викочуємо на прод, моніторимо першу добу
Наші метрики
- 5+ років досвіду з Бітрікс та Бітрікс24
- 100+ проєктів з автоматизації ціноутворення
- Середня економія бюджету клієнта — до 40 000 грн за сезон за рахунок відмови від ручної праці
- Зниження трудозатрат на суму понад 30 000 грн
- 98% аптайм агентів (моніторинг через
Bitrix\Main\Diag\ExceptionHandler)
Типові помилки та як їх уникнути
- Втрата даних при збої агента — завжди робіть бекап вихідних цін перед зміною
- Зависання кешу — після масового оновлення ціни на вітрині не змінюються. Рішення:
clearByTagз поділом на батчі - Некоректне округлення — для цін з копійками використовуйте
Math::round($price, 2)при збереженні
Отримайте консультацію щодо вашого проєкту — ми підберемо оптимальне рішення. Зв'яжіться з нами, щоб обговорити проєкт безкоштовно. Ми оцінимо обсяг робіт і запропонуємо рішення для вашого каталогу.







