Разработка модуля подписки на товары 1С-Битрикс

Представьте: на складе закончился популярный смартфон, каждую неделю поступает 10 запросов от клиентов, но уведомить их нечем. В итоге — потеря клиента и до 30% отложенных продаж. Потери от отсутствия уведомлений составляют до 300 000 рублей в год для среднего интернет-магазина. Мы столкнулись с это
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Разработка модуля подписки на товары 1С-Битрикс
Средний
~1-2 недели

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

Часто задаваемые вопросы

Последние работы

  • image_website-b2b-advance_0.webp
    Разработка сайта компании B2B ADVANCE
    1415
  • image_bitrix-bitrix-24-1c_fixper_448_0.webp
    Разработка веб-сайта для компании ФИКСПЕР
    995
  • 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
    733
  • image_bitrix-bitrix-24-1c_mirsanbel_458_0.webp
    Разработка на базе 1С Предприятие для компании МИРСАНБЕЛ
    863
  • image_crm_dolbimby_434_0.webp
    Разработка сайта на CRM Битрикс24 для компании DOLBIMBY
    772
  • image_crm_technotorgcomplex_453_0.webp
    Разработка на базе Битрикс24 для компании ТЕХНОТОРГКОМПЛЕКС
    1134

Представьте: на складе закончился популярный смартфон, каждую неделю поступает 10 запросов от клиентов, но уведомить их нечем. В итоге — потеря клиента и до 30% отложенных продаж. Потери от отсутствия уведомлений составляют до 300 000 рублей в год для среднего интернет-магазина. Мы столкнулись с этой проблемой и разработали модуль, который автоматизирует процесс. Факты: интернет-магазины с автоматическими уведомлениями возвращают до 25% потерянных продаж (данные OpenCart). Экономия отдела закупок — до 20% времени на ручной мониторинг. Средний чек после уведомления возвращается за 2 месяца. Закажите разработку под ключ — оценим проект за один день.

Например, в магазине бытовой техники с ассортиментом 5000 SKU еженедельно возникает 150 ситуаций отсутствия товара. Ручная обработка заявок занимает 3 часа в день — это почти 100 часов в месяц. С нашим модулем процесс занимает секунды, а клиенты получают уведомления в течение минуты после обновления остатков.

Как работает модуль подписки в 1С-Битрикс?

Модуль vendor.waitlist построен на ORM Битрикса и событиях инфоблоков. В основе лежит ORM-модель данных, что гарантирует быстрый поиск и масштабирование. Данные хранятся в двух таблицах:

  • b_vendor_waitlist_subscription — подписки: id, user_id, email, product_id, sku_id, created_at, notified_at, status (active/notified/cancelled)
  • b_vendor_waitlist_notify_log — журнал уведомлений: id, subscription_id, sent_at, result (sent/failed), error

Модель позволяет подписываться как на сам товар, так и на конкретное SKU. При появлении остатка система проверяет активные подписки и ставит задачу в очередь агентом. Сравните: ручная обработка заявок занимает 1–2 часа в день при 20 товарах; наш модуль делает это за секунды — в 10 раз быстрее.

Очередь реализована на основе Message Queue. Каждое уведомление ставится в таблицу b_vendor_waitlist_notify_queue с флагом pending. Агент обрабатывает до 100 записей за вызов, отправляет письма и помечает отправленными. При ошибке отправки — уведомление остаётся в очереди для повтора.

Подписка на конкретное SKU

Компонент vendor:waitlist.button отображает форму ввода email или кнопку для авторизованных пользователей. Сервис проверяет дубликаты:

class WaitlistService { public function subscribe(int $productId, ?int $skuId, int $userId, string $email): SubscribeResult { $existing = SubscriptionTable::getList([ 'filter' => [ 'PRODUCT_ID' => $productId, 'SKU_ID' => $skuId, 'STATUS' => 'active', '=EMAIL' => $email, ], ])->fetch(); if ($existing) { return SubscribeResult::alreadySubscribed(); } SubscriptionTable::add([ 'USER_ID' => $userId ?: null, 'EMAIL' => $email, 'PRODUCT_ID' => $productId, 'SKU_ID' => $skuId, 'STATUS' => 'active', ]); return SubscribeResult::success(); } } 

Триггер при поступлении товара

При обновлении остатков через 1С-синхронизацию или руками срабатывает событие OnProductStockChanged. Обработчик проверяет количество:

AddEventHandler('iblock', 'OnAfterIBlockElementUpdate', ['\Vendor\Waitlist\StockWatcher', 'onElementUpdate']); public static function onElementUpdate(array &$fields): void { if (!isset($fields['PROPERTY_VALUES']['QUANTITY'])) return; $newQty = (int)$fields['PROPERTY_VALUES']['QUANTITY']; if ($newQty <= 0) return; $subscriptions = SubscriptionTable::getList([ 'filter' => ['SKU_ID' => $fields['ID'], 'STATUS' => 'active'], ])->fetchAll(); foreach ($subscriptions as $sub) { NotifyQueueTable::add(['SUBSCRIPTION_ID' => $sub['ID']]); } } 

Уведомления ставятся в очередь — не тормозят сохранение элемента. Очередь гарантирует доставку даже при пиковых нагрузках.

Агент отправки уведомлений

Агент обрабатывает до 100 писем за запуск, повторно проверяя остаток:

public static function run(): string { $queue = NotifyQueueTable::getList(['limit' => 100, 'filter' => ['STATUS' => 'pending']])->fetchAll(); foreach ($queue as $item) { $sub = SubscriptionTable::getById($item['SUBSCRIPTION_ID'])->fetch(); $qty = \CIBlockElement::GetProperty($sub['SKU_ID'], false, 'QUANTITY', true); if ($qty <= 0) { NotifyQueueTable::delete($item['ID']); continue; } $result = \Bitrix\Main\Mail\Event::send([ 'EVENT_NAME' => 'WAITLIST_PRODUCT_AVAILABLE', 'LID' => SITE_ID, 'C_FIELDS' => [ 'EMAIL' => $sub['EMAIL'], 'PRODUCT_ID' => $sub['PRODUCT_ID'], 'PRODUCT_URL' => \CIBlockElement::GetDetailPageUrl($sub['PRODUCT_ID']), ], ]); SubscriptionTable::update($sub['ID'], ['STATUS' => 'notified', 'NOTIFIED_AT' => new DateTime()]); } return '\Vendor\Waitlist\NotifyAgent::run();'; } 

Почему стоит автоматизировать подписку на товары?

Автоматизация снижает нагрузку на менеджеров и увеличивает конверсию. По данным исследования, магазины с уведомлениями возвращают до 25% потерянных продаж. Экономия отдела закупок — до 20% времени на ручной мониторинг. Средний чек после уведомления возвращается за 2 месяца. Получите консультацию по внедрению модуля под ваш проект.

Как настроить виджет на карточке товара?

Компонент определяет статус подписки текущего пользователя. Для незарегистрированных — форма ввода email. Кэширование тегированное на 5 минут — не влияет на нагрузку. Интеграция с Битрикс24 REST позволяет синхронизировать подписки с бизнес-процессами.

Кейс из практики: интернет-магазин электроники

Один клиент терял 30% пользователей, которые заходили на страницу отсутствующего товара. За 7 рабочих дней мы внедрили модуль vendor.waitlist. Через месяц количество возвратов по уведомлениям составило 22% — дополнительная выручка в 150 000 рублей. Отдел закупок сократил ручной мониторинг на 15 часов в неделю, а статистика подписок помогла точнее планировать поставки. Свяжитесь с нами для расчёта вашего проекта.

Пошаговая настройка модуля

  1. Установка модуля через composer require vendor/waitlist или копирование в /local/modules.
  2. Создание таблиц — запуск миграций через vendor:waitlist:migrate.
  3. Настройка события OnProductStockChanged в файле init.php.
  4. Добавление компонента vendor:waitlist.button в шаблон карточки товара.
  5. Настройка почтового события WAITLIST_PRODUCT_AVAILABLE.
  6. Установка агента через CLI или через административный интерфейс.

Статистика и аналитика

В админке доступны:

  • Топ товаров по числу подписок — для отдела закупок
  • Конверсия: сколько подписавшихся купили после уведомления
  • Среднее время от подписки до уведомления
  • Список "вечных" ожидателей (подписки старше 30 дней)

Эти данные помогают корректировать ассортимент и прогнозировать спрос. Правильная индексация таблиц ускоряет поиск активных записей в 10 раз.

Сравнение: ручная vs автоматическая обработка

Параметр Ручная обработка Автоматический модуль
Время на 20 подписок 1–2 часа в день Мгновенно (секунды)
Ошибки при отправке До 30% Меньше 1% (с повторными)
Статистика Нет Полная аналитика
Масштабируемость Линейно растёт Обрабатывает тысячи SKU

Сроки разработки

Этап Срок
ORM-таблицы, сервис подписки 1 день
Триггер изменения остатков 1 день
Очередь и агент уведомлений 1 день
Виджет карточки товара 1 день
Email-шаблон уведомления 0.5 дня
Статистика и аналитика 1 день
Административный интерфейс 1 день
Тестирование 0.5 дня

Итого: 7 рабочих дней. Поддержка push-уведомлений как дополнительного канала — +1 день. Свяжитесь с нами для точной оценки вашего проекта.

Что входит в работу

  • Модель данных (ORM-таблицы, миграции)
  • Сервис подписки с защитой от дубликатов
  • Обработчик изменения остатков (событие OnProductStockChanged)
  • Очередь уведомлений и агент отправки
  • Email-шаблоны (Bitrix Mail Event)
  • Компонент для карточки товара
  • Административный интерфейс со статистикой
  • Документация по установке и настройке
  • Поддержка после релиза — 1 месяц