Налаштування сповіщення про поступлення товара у 1С-Бітрикс
Коли товар закінчується, замість кнопки «Купити» потрібно запропонувати покупцю підписатися на сповіщення. Вбудованого компонента для цього в стандартному Бітрикс немає — функціональність реалізується через подписки (модуль subscribe) або кастомну таблицю з обробником зміни остатків.
Варіант 1: Через модуль подписок
Модуль subscribe призначений для розсилок, але його можна адаптувати для подписок на товари. Покупець підписується на «рубрику», яка відповідає конкретному товару (або SKU). При появлені остатків — ручна або автоматична відправка.
Це не найчистіший підхід, але працює без додаткових таблиць.
Варіант 2: Кастомна таблиця подписок
Більш правильне рішення — окрема таблиця:
CREATE TABLE product_availability_notify (
ID SERIAL PRIMARY KEY,
PRODUCT_ID INT NOT NULL,
EMAIL VARCHAR(255) NOT NULL,
USER_ID INT NULL, -- NULL для гостей
DATE_ADD TIMESTAMP DEFAULT NOW(),
DATE_SENT TIMESTAMP NULL,
IS_SENT BOOLEAN DEFAULT FALSE,
UNIQUE(PRODUCT_ID, EMAIL)
);
Форма подписки — простої HTML-форма з AJAX-відправкою, з'являється при QUANTITY = 0 на сторінці товара.
Тригер відправки сповіщень
Відправка при поступленні товара — через обробник подій зміни остатків. Подія викликається при оновленні поля QUANTITY у b_catalog_product:
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.
Агент для періодичної перевірки
Альтернатива подій — агент Бітрикс, запускаємий за розписанням (раз на годину), який сам перевіряє появлення остатків у товарів з підписчиками:
Параметри → Інструменти → Агенти
Терміни виконання
Форма подписки + обробник + лист — 4–8 годин. Якщо потрібна сторінка управління подписками в особистому кабінеті — ще 2–3 години.







