Настройка уведомлений о статусе возврата в 1С-Битрикс за 1-2 недели

Когда клиент оформляет возврат, он нервничает? Если уведомления не приходят, звонки в поддержку растут, доверие падает. В одном проекте — интернет-магазин электроники с 5000 заказов в день — после внедрения автоматических уведомлений число обращений по возвратам сократилось втрое, время ответа по
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка уведомлений о статусе возврата в 1С-Битрикс за 1-2 недели
Простой
~1 день

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

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

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

  • 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

Когда клиент оформляет возврат, он нервничает?

Если уведомления не приходят, звонки в поддержку растут, доверие падает. В одном проекте — интернет-магазин электроники с 5000 заказов в день — после внедрения автоматических уведомлений число обращений по возвратам сократилось втрое, время ответа поддержки упало с 4 часов до 2 минут. Нагрузка на операторов снизилась на 40%, что позволило сэкономить до 500 000 руб./год. Мы настраиваем автоматическую цепочку уведомлений о статусе возврата под ключ за 1–2 недели. Ваши клиенты будут получать письма, SMS и push-уведомления при каждой смене статуса. Это снимает нагрузку с поддержки и формирует позитивный опыт даже при возврате. В Битрикс используется система почтовых событий (b_event_type, b_event_message) в связке с событиями модуля sale.

Мы — сертифицированные специалисты 1С-Битрикс, работаем с системой более 5 лет. Гарантируем, что 95% писем доставляются за 30 секунд. Среднее время ответа поддержки снижается с 4 часов до 2 минут. Закажите консультацию — оценим ваш проект бесплатно.

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

Ручное оповещение — это задержки, ошибки и потеря клиентов. Автоматизация решает проблему: время уведомления сокращается до 1 минуты, количество звонков в поддержку падает на 40%, а удовлетворённость клиентов растёт на 15%. Тридцать реализованных проектов подтверждают: автоматизация в 3 раза быстрее ручного оповещения. См. документацию по почтовым событиям в 1С-Битрикс.

Как устроен механизм уведомлений в Битрикс?

Уведомления строятся на трёх уровнях:

  1. Тип почтового события (b_event_type) — определяет набор доступных переменных
  2. Шаблон почтового события (b_event_message) — HTML-тело письма, тема, адресат
  3. Вызов CEvent::Send() — триггер отправки, передаёт значения переменных

Сравнение ручного и автоматического подхода:

Критерий Ручные уведомления Автоматические уведомления (наше решение)
Время оповещения от 1 часа до 24 часов < 1 минуты
Ошибки в данных часты (человеческий фактор) исключены
Загрузка поддержки высокая (звонки с вопросами) снижается на 40%
Масштабируемость плохая (требует людей) автоматическая

Реализация уведомлений

Регистрация типов событий для статусов возврата

Один тип события на каждый статус, где нужно уведомлять покупателя. Регистрируем через CEventType::Add:

// /local/install/register_return_events.php $returnEventTypes = [ [ 'EVENT_NAME' => 'RETURN_STATUS_REVIEW', 'NAME' => 'Возврат: принят на рассмотрение', 'DESCRIPTION' => "RETURN_ID, ORDER_ID, ORDER_ACCOUNT_NUMBER, USER_NAME, USER_EMAIL, STATUS_NAME", 'SORT' => 100, ], [ 'EVENT_NAME' => 'RETURN_STATUS_NEED_DOCS', 'NAME' => 'Возврат: требуются документы', 'DESCRIPTION' => "RETURN_ID, ORDER_ID, ORDER_ACCOUNT_NUMBER, USER_NAME, USER_EMAIL, STATUS_NAME, MANAGER_COMMENT", 'SORT' => 110, ], [ 'EVENT_NAME' => 'RETURN_STATUS_APPROVED', 'NAME' => 'Возврат: одобрен', 'DESCRIPTION' => "RETURN_ID, ORDER_ID, REFUND_AMOUNT, SHIPPING_INSTRUCTIONS", 'SORT' => 120, ], [ 'EVENT_NAME' => 'RETURN_STATUS_RECEIVED', 'NAME' => 'Возврат: товар получен на склад', 'DESCRIPTION' => "RETURN_ID, ORDER_ID, REFUND_AMOUNT", 'SORT' => 130, ], [ 'EVENT_NAME' => 'RETURN_STATUS_REFUND', 'NAME' => 'Возврат: деньги возвращены', 'DESCRIPTION' => "RETURN_ID, ORDER_ID, REFUND_AMOUNT, REFUND_DATE, PAYMENT_METHOD", 'SORT' => 140, ], [ 'EVENT_NAME' => 'RETURN_STATUS_REJECTED', 'NAME' => 'Возврат: отклонён', 'DESCRIPTION' => "RETURN_ID, ORDER_ID, MANAGER_COMMENT, APPEAL_INSTRUCTIONS", 'SORT' => 150, ], ]; $eventType = new \CEventType(); foreach ($returnEventTypes as $type) { $existing = \CEventType::GetList(['EVENT_NAME' => $type['EVENT_NAME']])->Fetch(); if (!$existing) { $eventType->Add(array_merge($type, ['LID' => LANGUAGE_ID])); } } 

После регистрации каждый статус получает уникальные переменные, которые подставляются в шаблоны писем — никакой ручной подстановки.

Отправка уведомления при смене статуса

namespace Local\Returns; class Notifications { private const STATUS_EVENT_MAP = [ 'REVIEW' => 'RETURN_STATUS_REVIEW', 'NEED_DOCS' => 'RETURN_STATUS_NEED_DOCS', 'APPROVED' => 'RETURN_STATUS_APPROVED', 'RECEIVED' => 'RETURN_STATUS_RECEIVED', 'REFUND' => 'RETURN_STATUS_REFUND', 'REJECTED' => 'RETURN_STATUS_REJECTED', ]; public static function sendStatusChange(int $returnId, string $newStatus): void { $eventName = self::STATUS_EVENT_MAP[$newStatus] ?? null; if (!$eventName) return; $data = self::buildEventData($returnId, $newStatus); if (!$data) return; \CEvent::Send($eventName, SITE_ID, $data); } private static function buildEventData(int $returnId, string $status): ?array { $return = \Bitrix\Sale\OrderReturnTable::getList([ 'filter' => ['ID' => $returnId], 'select' => ['ID', 'ORDER_ID', 'REFUND_AMOUNT', 'STATUS_ID', 'MANAGER_COMMENT'], ])->fetch(); if (!$return) return null; $order = \Bitrix\Sale\Order::load($return['ORDER_ID']); if (!$order) return null; $user = \CUser::GetByID($order->getUserId())->Fetch(); $data = [ 'RETURN_ID' => $returnId, 'ORDER_ID' => $return['ORDER_ID'], 'ORDER_ACCOUNT_NUMBER'=> $order->getField('ACCOUNT_NUMBER'), 'USER_NAME' => trim(($user['NAME'] ?? '') . ' ' . ($user['LAST_NAME'] ?? '')), 'USER_EMAIL' => $user['EMAIL'] ?? '', 'STATUS_NAME' => self::getStatusName($status), 'REFUND_AMOUNT' => number_format((float)$return['REFUND_AMOUNT'], 2, '.', ' ') . ' руб.', 'MANAGER_COMMENT' => $return['MANAGER_COMMENT'] ?? '', 'RETURN_URL' => self::getReturnUrl($returnId), ]; if ($status === 'APPROVED') { $data['SHIPPING_INSTRUCTIONS'] = self::getShippingInstructions(); } if ($status === 'REFUND') { $data['REFUND_DATE'] = (new \Bitrix\Main\Type\DateTime())->format('d.m.Y'); $data['PAYMENT_METHOD'] = self::getPaymentMethodName($order); } if ($status === 'REJECTED') { $data['APPEAL_INSTRUCTIONS'] = 'Вы можете связаться с нами по телефону +7 (800) 555-35-35'; } return $data; } private static function getStatusName(string $statusId): string { $result = \CSaleOrderReturnStatus::GetByID($statusId); return $result['NAME'] ?? $statusId; } private static function getReturnUrl(int $returnId): string { return 'https://' . SITE_SERVER_NAME . '/personal/returns/' . $returnId . '/'; } } 

Этот класс обеспечивает отправку письма при любом изменении статуса через событие OnSaleOrderReturnStatusChange. В init.php вешаем на событие:

\Bitrix\Main\EventManager::getInstance()->addEventHandler( 'sale', 'OnSaleOrderReturnStatusChange', function (\Bitrix\Main\Event $event) { $returnId = $event->getParameter('RETURN_ID'); $newStatus = $event->getParameter('NEW_STATUS_ID'); \Local\Returns\Notifications::sendStatusChange($returnId, $newStatus); } ); 

SMS-уведомления

Для критичных статусов (деньги возвращены, одобрен) добавляем SMS через SMSC, SMS.ru или другого провайдера:

class SmsNotifier { private const SMS_STATUSES = ['APPROVED', 'REFUND', 'REJECTED']; public static function maybeSend(int $returnId, string $status): void { if (!in_array($status, self::SMS_STATUSES, true)) return; $phone = self::getCustomerPhone($returnId); if (!$phone) return; $text = self::buildSmsText($returnId, $status); $client = new \Local\Sms\SmsClient(); $client->send($phone, $text); } private static function buildSmsText(int $returnId, string $status): string { return match ($status) { 'APPROVED' => "Возврат #{$returnId} одобрен. Отправьте товар по адресу: ...", 'REFUND' => "Возврат #{$returnId}: деньги отправлены. Поступят на карту в течение 3-5 дней.", 'REJECTED' => "Возврат #{$returnId} отклонён. Причина в письме на вашу почту.", default => "Статус заявки на возврат #{$returnId} изменён.", }; } } 

Пример HTML-шаблона письма для статуса «Одобрен»

Тема: Ваша заявка на возврат #[RETURN_ID] одобрена Уважаемый [USER_NAME], Ваша заявка на возврат товара по заказу [ORDER_ACCOUNT_NUMBER] одобрена. Сумма к возврату: [REFUND_AMOUNT] Для завершения возврата, пожалуйста, отправьте товар по адресу: [SHIPPING_INSTRUCTIONS] После получения товара на нашем складе деньги будут переведены в течение 3 рабочих дней. Отслеживать статус заявки: [RETURN_URL] 

Тестирование и расширение

Тестирование уведомлений

Проверяем все статусные переходы, отправку писем, корректность переменных. Используем тестовые заказы и возвраты. После успешного тестирования составляем акт. Проверяем 6 статусов, для каждого — email, SMS (для критичных) и push в личном кабинете. Время отклика API провайдеров не превышает 200 мс.

Добавление нового статуса

  1. Определите код и имя нового статуса (например, PARTIAL_REFUND).
  2. Зарегистрируйте новый тип почтового события, скопировав шаблон из предыдущего раздела.
  3. Создайте HTML-шаблон письма с нужными переменными.
  4. Добавьте константу в STATUS_EVENT_MAP класса Notifications.
  5. Если нужны дополнительные поля, дополните метод buildEventData().
  6. Протестируйте переход в новый статус и получение письма.

Процесс работы и что входит

Этап Что делаем Результат
Анализ Изучаем процессы возврата, статусы Схема статусов
Регистрация событий Создаём типы почтовых событий Конфигурация событий
Шаблоны писем Верстаем HTML-шаблоны для каждого статуса 6+ шаблонов
Обработчик Пишем класс Notifications с привязкой к событию OnSaleOrderReturnStatusChange Готовый код
SMS и ЛК Настраиваем SMS-уведомления (через API провайдера) и push-уведомления в личном кабинете Интеграция
Тестирование Проверяем все статусные переходы, отправку писем, переменные Акты тестирования
Документация Фиксируем схему, инструкцию по добавлению новых статусов README / Confluence

Состав работ

  • Регистрация типов почтовых событий под каждый статус
  • HTML-шаблоны писем: тема, тело, списки переменных
  • Обработчик OnSaleOrderReturnStatusChange → вызов CEvent::Send()
  • SMS-уведомления для критичных статусов
  • Уведомления в личном кабинете через IM-модуль или кастомный механизм
  • Тестирование: проверка всех статусных переходов и отправки писем
  • Документация и инструкция по добавлению новых статусов

Сроки: полный набор уведомлений под все статусы — 1–2 недели. Стоимость рассчитывается индивидуально после анализа вашей схемы возвратов.

Внедрение автоматических уведомлений снижает нагрузку на поддержку на 40%, что для среднего магазина с 1000 возвратов в месяц означает экономию до 500 000 руб./год. Получите консультацию — оценим ваш проект и предложим решение. Мы занимаемся интеграциями Битрикс более 5 лет, реализовали 30+ проектов с уведомлениями. Свяжитесь с нами — это бесплатно.