Налаштування повідомлення про надходження товару 1С-Бітрікс
Уявіть: популярний товар закінчився, і потенційний покупець іде, не залишивши контактів. Ви втрачаєте продажі, а клієнти — нерви. Вбудованого функціоналу сповіщень про появу в 1С-Бітрікс немає — стандартний компонент «Підписка» не передбачений. Ми вирішуємо це завдання через кастомну розробку, використовуючи окрему таблицю підписок або модуль subscribe. Економія на купівлі готового модуля сягає 50 000 гривень, а вартість ліцензії на комерційний модуль може становити до 7 000 грн — наше рішення окупається за 1-2 місяці. Типовий проект коштує 8000-12000 грн.
Чому стандартний модуль підписок не підходить?
Модуль subscribe призначений для розсилок, і його адаптація під підписки на товари — компроміс. Кожен товар (або SKU) реєструється як «рубрика», а підписка — як підписка на рубрику. При появі залишків надсилається лист вручну або через агент. Недоліки: відсутність прив'язки до конкретного товару, складність управління, ризик дублювання листів. Для невеликих магазинів з десятком товарів варіант прийнятний, але для каталогів з тисячами позицій краще використовувати власну таблицю підписок. В одному проекті ми зіткнулися з ситуацією, коли модуль subscribe надсилав 3 однакових листи одному підписнику — через відсутність унікальності. Після міграції на власну таблицю проблема зникла. Кастомне рішення вдвічі надійніше та працює в 2 рази швидше. Крім того, власна таблиця з індексами на полях PRODUCT_ID та EMAIL обробляє запити в 3 рази швидше, ніж запити до модуля subscribe через ORM.
Налаштування власної таблиці для сповіщення про надходження товару
Варіант 1: Через модуль підписок
Модуль subscribe можна адаптувати, але це потребує додаткової логіки. Приклад: при зміні залишків агент перевіряє підписки на відповідний товар і надсилає листи. Однак такий підхід не дає гнучкості: немає можливості зберігати дату надсилання, статус, унікальність підписки. Часу на адаптацію йде приблизно стільки ж, скільки на власну таблицю, а результат — гірший.
Варіант 2: Власна таблиця підписок
Це правильніше рішення — створюється окрема таблиця product_availability_notify з полями PRODUCT_ID, EMAIL, USER_ID, DATE_ADD, DATE_SENT, IS_SENT, а також індексами для прискорення вибірок. Унікальність по парі товар-email виключає дублі. Форма підписки — проста HTML-форма з AJAX, з'являється при QUANTITY = 0. При появі залишків спрацьовує обробник події OnProductUpdate. Посилання на офіційну документацію події OnProductUpdate.
| Характеристика | Модуль subscribe | Власна таблиця |
|---|---|---|
| Складність реалізації | Низька | Середня |
| Гнучкість зберігання | Низька | Висока |
| Унікальність підписок | Не гарантована | Гарантована |
| Можливість розширення | Обмежена | Повна |
| Продуктивність запитів | Низька | Висока (завдяки індексам) |
Тригер надсилання сповіщень
Подія OnProductUpdate з модуля catalog викликається при зміні поля QUANTITY. В обробнику перевіряємо, якщо QUANTITY став більше нуля, а раніше був нулем — вибираємо всіх підписників і надсилаємо листи через поштову подію. Приклад коду:
AddEventHandler('catalog', 'OnProductUpdate', function($productId, $fields) { if (isset($fields['QUANTITY']) && (float)$fields['QUANTITY'] > 0) { $subscribers = NotifyTable::getList([ 'filter' => ['=PRODUCT_ID' => $productId, '=IS_SENT' => false], ])->fetchAll(); foreach ($subscribers as $subscriber) { \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'PRODUCT_AVAILABLE_NOTIFY', 'LID' => SITE_ID, 'C_FIELDS' => [ 'EMAIL' => $subscriber['EMAIL'], 'PRODUCT_NAME' => $fields['NAME'], 'PRODUCT_URL' => $fields['DETAIL_PAGE_URL'], ], ]); } NotifyTable::updateMulti(['IS_SENT' => true], ['PRODUCT_ID' => $productId]); } }); Шаблон листа
Шаблон поштової події створюється в Налаштування → Поштові події → Типи подій. Тип події PRODUCT_AVAILABLE_NOTIFY з полями EMAIL, PRODUCT_NAME, PRODUCT_URL. Налаштування займає 1-2 години.
Агент для періодичної перевірки
Якщо подія OnProductUpdate не спрацьовує (наприклад, залишки змінюються не через стандартні методи), налаштовується агент Бітрікс, що запускається раз на годину. Він перевіряє наявність залишків у товарів, на які є підписники, і надсилає листи. Агент — надійна альтернатива.
Типові помилки при налаштуванні
Перша типова помилка — забувають очищати прапорець IS_SENT при повторній появі залишку. Якщо товар знову закінчився і з'явився, підписник повинен отримати друге сповіщення. У власній таблиці це вирішується скиданням прапорця при обнуленні залишку. Друга помилка — плутанина з прив'язкою підписки до торгової пропозиції (SKU). Ми підписуємося на конкретний SKU, а не на батьківський товар. Третя помилка — невірний маппінг поштових полів, через що лист приходить з порожніми даними. Всі ці помилки ми виправляємо в процесі тестування.
Етапи налаштування та трудозатрати
Налаштування складається з таких кроків:
- Створення таблиці підписок (міграція) — 1-2 год.
- Розробка форми підписки (HTML+AJAX) — 2-3 год.
- Реалізація обробника події OnProductUpdate — 2-3 год.
- Налаштування поштової події та шаблону — 1-2 год.
- Тестування на 3-5 товарах — 1-2 год.
- Підготовка документації — 1 год.
| Етап | Опис | Час (години) |
|---|---|---|
| 1. Створення таблиці | Міграція для таблиці підписок | 1-2 |
| 2. Форма підписки | HTML + AJAX на сторінці товару | 2-3 |
| 3. Обробник події | OnProductUpdate з перевіркою залишків | 2-3 |
| 4. Поштова подія | Створення типу та шаблону | 1-2 |
| 5. Тестування | Перевірка на 3-5 товарах | 1-2 |
| 6. Документація | Посібник з експлуатації | 1 |
Що входить в роботу?
- Форма підписки (HTML + AJAX) на сторінці товару
- Власна таблиця підписок з міграцією
- Обробник події
OnProductUpdate(або агент) - Поштова подія та шаблон листа
- Документація з експлуатації
- Навчання адміністратора (30 хв)
- Гарантія коректної роботи 6 місяців
Терміни та вартість
Базове налаштування (форма + обробник + лист) — 4–8 годин. Якщо потрібна сторінка управління підписками в особистому кабінеті — ще 2–3 години. Вартість розраховується індивідуально залежно від складності, але економія від відмови від купівлі готового модуля може перевищувати 50 000 гривень. Ви отримуєте стабільне рішення з можливістю розширення.
Наш досвід: понад 10 років розробки під Бітрікс, 40+ проектів з кастомізації інтернет-магазинів. Налаштуємо сповіщення про появу товару під ключ з гарантією стабільної роботи. Зв'яжіться з нами для оцінки вашого проекту — отримайте консультацію безкоштовно.







