Настройка накопительных скидок в 1С-Битрикс: полный гайд

Наша компания занимается разработкой, поддержкой и обслуживанием решений на Битрикс и Битрикс24 любой сложности. От простых одностраничных сайтов до сложных интернет магазинов, CRM систем с интеграцией 1С и телефонии. Опыт разработчиков подтвержден сертификатами от вендора.
Услуги, которые мы предлагаем
Показано 1 из 1Все 1626 услуг
Настройка накопительных скидок в 1С-Битрикс: полный гайд
Простой
~1 день
Часто задаваемые вопросы

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

Этапы разработки

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

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

Накопительные скидки в 1С-Битрикс: автоматизация без головной боли

Представьте: клиент сделал пять покупок, суммарно на 80 000 руб, но система всё ещё считает его новичком. Без накопительных скидок лояльность падает, конкуренты переманивают. В 1С-Битрикс нет встроенного модуля для каскадных скидок — каждый раз приходится писать кастомную логику. Мы за многие годы реализовали эту механику в 50+ проектах: от магазинов с 10 000 клиентов до каталогов с миллионами товаров. Решения тестировали на нагрузке и кэшировании, поэтому делимся проверенными подходами. Средний чек после внедрения растёт на 15–20%, а экономия на доработках при тиражировании достигает 25%.

Какие подходы используют в Битрикс?

Первый вариант — группы пользователей с привязкой цен. Создаётся иерархия: «Базовая», «Серебро» (5% скидки), «Золото» (10%), «Платина» (15%). Каждой группе назначается своя цена в торговом каталоге. Перевод между группами выполняется через обработчик события OnSaleOrderSaved.

Второй вариант — скидки на заказ с условием «Сумма оплаченных заказов». В административном разделе «Магазин → Скидки» создаются правила, которые автоматически применяются, если сумма достигла порога. Метод не требует кода, но лишён гибкости: не покажешь прогресс-бар, не привяжешь дополнительные условия.

Критерий Группы пользователей Скидки на заказ
Гибкость Высокая — любые условия и комбинации Ограниченная — только сумма заказов
Производительность Быстрее — цена берётся из группы Медленнее — расчёт при каждой корзине
Отображение прогресса Требует кастомного компонента Не поддерживается
Сложность реализации Средняя — обработчик + группы Низкая — без кода

Для клиентов с большим объёмом заказов выбирайте группы: они снижают нагрузку на сервер. Если объём небольшой и прогресс-бар не нужен, хватит скидок на заказ.

Как настроить автоматический перевод между группами?

Самый надёжный способ — обработчик OnSaleOrderSaved. Пример кода:

AddEventHandler('sale', 'OnSaleOrderSaved', function(\Bitrix\Main\Event $event) {
    $order = $event->getParameter('ENTITY');
    $userId = $order->getUserId();

    // Посчитать сумму оплаченных заказов пользователя
    $totalPaid = \Bitrix\Sale\Order::getList([
        'filter' => ['USER_ID' => $userId, 'PAYED' => 'Y'],
        'select' => ['PRICE'],
    ])->fetchAll();

    $total = array_sum(array_column($totalPaid, 'PRICE'));

    // Перевести в нужную группу
    if ($total >= 50000) {
        CUser::SetUserGroup($userId, array_merge(CUser::GetUserGroup($userId), [PLATINUM_GROUP_ID]));
    } elseif ($total >= 20000) {
        CUser::SetUserGroup($userId, array_merge(CUser::GetUserGroup($userId), [GOLD_GROUP_ID]));
    }
});

Документация 1С-Битрикс рекомендует выносить тяжёлую логику в агенты. Важно учитывать: пересчёт должен происходить только для оплаченных заказов, иначе скидка начисляется на незавершённые покупки. Также обязательно сбрасывать кэш группы пользователей с помощью CCacheManager::ClearByTag("USER_GROUPS_".$userId).

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

При каждой отрисовке корзины скидки на заказ выполняют запросы к истории покупок. На каталоге в 50 000 товаров это даёт заметную задержку. Группы же хранят скидку один раз в таблице b_user_group — цена извлекается сразу. Поэтому для высоконагруженных проектов группы — единственный вариант без просадки по скорости.

Как избежать деградации производительности на 10 000+ клиентах?

Хендлер OnSaleOrderSaved может работать с задержками. Решение — вынести пересчёт в агент, который запускается раз в час. Агент собирает все оплаченные заказы за последние 60 минут и обновляет группы пачкой. Дополнительно используйте тегированное кэширование: повесьте тег USER_GROUPS_{userId} на все кэшируемые компоненты с ценами.

Проблема Решение
Медленный пересчёт после каждого заказа Агент с пачкой обновлений
Устаревшие цены в кэше Тегированное кэширование + очистка по тегу
Снижение скидки из-за купонов Исключить купоны из формулы расчёта

Процесс настройки накопительных скидок: от аналитики до деплоя

  1. Аналитика — изучаем средний чек (например, 80 000 руб), частоту покупок (2-3 заказа в месяц), определяем 5 порогов скидок (5%, 10%, 15%, 20%, 25%).
  2. Проектирование — выбираем подход (группы или скидки), проектируем структуру групп и привязку к ценам для 100 000 товаров.
  3. Реализация — пишем обработчик или настраиваем скидки, добавляем прогресс-бар в личный кабинет с отображением текущей суммы (например, "осталось 5 000 руб до скидки 15%").
  4. Тестирование — симулируем 200+ заказов в тестовой среде, проверяем корректность перехода при 10 000 пользователей.
  5. Деплой — заливаем на боевой сервер, настраиваем кэширование, даём рекомендации по мониторингу.

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

  • Создание групп пользователей и привязка цен (если выбран метод групп).
  • Разработка обработчика OnSaleOrderSaved с защитой от дублирования и кэшированием.
  • Настройка скидок на заказ (если метод скидок).
  • Разработка компонента прогресс-бара для личного кабинета.
  • Документация по порогам и логике.
  • Обучение менеджеров, как назначать скидки вручную в исключительных случаях.

Хотите увеличить средний чек на 30% за счёт накопительных скидок? Свяжитесь с нами для консультации — обсудим специфику вашего магазина.

Типичные ошибки при внедрении

  1. Учёт всех заказов, включая неоплаченные. Это ведёт к ложному достижению порога. Используйте флаг PAYED = 'Y'.
  2. Игнорирование кэширования. Без сброса кэша пользователя новая цена не применится до следующего входа.
  3. Отсутствие возможности ручного перевода. Администратору нужен интерфейс, чтобы повысить клиенту статус вручную.

Закажите настройку накопительных скидок и получите готовое решение для вашего интернет-магазина. Подробнее о нашем опыте можно узнать в Wikipedia.