Штатный модуль sale содержит механизм скидок через b_sale_discount — правила, основанные на условиях корзины. Это мощный инструмент, но он заточен под автоматические скидки на уровне заказа. Маркетинговые акции с баннерами, периодами, счётчиками участников, лимитами использования, механикой «купи 2 — получи 3» — всё это либо не реализуется стандартными средствами, либо требует громоздких обходных решений. Клиенты часто приходят с запросом: «сделайте акцию «купи 2 по цене 1», но в Битриксе это не скидка на товар, а полноценный бандл. Стандартные возможности не дают гибкости для условий на уровне корзины — например, скидка только для зарегистрированных пользователей или при достижении суммы с определённым артикулом. Всё это упирается в необходимость отдельного модуля. За 5+ лет разработки на Битрикс мы накопили десятки кейсов, где стандартные скидки не спасали. Модуль управления акциями закрывает этот пробел — предлагаем готовую ORM-модель, гибкий конструктор условий и интеграцию с любыми каналами продаж. Используйте готовый модуль — и забудьте о головной боли с кастомными событиями. Получите консультацию — мы поможем подобрать оптимальную конфигурацию.
Почему стандартных скидок недостаточно?
b_sale_discount — это линейные правила: скидка на сумму, на товар, на группу. Всё, что выходит за рамки — акции с купонами, бандлы, подарки при выполнении кастомных условий — требует либо костыльных событий, либо внешнего модуля. Наш подход: отдельная таблица b_vendor_promo_action с JSON-условиями и вознаграждением. Это даёт гибкость без оверхеда. Экономия времени разработки — до 60% по сравнению с кастомными решениями.
Модель данных
Модуль vendor.promo со следующими таблицами:
-
b_vendor_promo_action— акции: id, code, name, type (discount/gift/bundle/coupon/cashback), date_from, date_to, is_active, priority, usage_limit, usage_count, conditions (JSON), reward (JSON), banner_image_id, description -
b_vendor_promo_coupon— купоны: id, action_id, code, discount_type (percent/fixed), discount_value, usage_limit, usage_count, user_id (null = общий), expires_at, is_active -
b_vendor_promo_usage— история применения: id, action_id, coupon_id, order_id, user_id, discount_amount, applied_at -
b_vendor_promo_gift— подарочные товары акции: id, action_id, product_id, quantity
Типы акций
- Скидка по условию:
"conditions": {"min_sum": 3000, "iblock_section_id": 12}— скидка 10% на заказы от 3000 рублей в разделе «Электроника». - Комплект (bundle):
"type": "bundle"— при добавлении товара A в корзину товар B добавляется автоматически со скидкой. Реализуется через событиеOnSaleBasketItemAdd. - Купон: генерация уникальных кодов в
b_vendor_promo_coupon, проверка при оформлении заказа. - Подарок: при выполнении условий корзины — автоматически добавляется товар из
b_vendor_promo_giftс ценой 0. - Cashback: начисление баллов программы лояльности вместо скидки.
Как работает проверка условий?
class PromoChecker
{
public function check(PromoAction $action, \Bitrix\Sale\Order $order): CheckResult
{
$conditions = $action->getConditions();
$basket = $order->getBasket();
if (isset($conditions['min_sum']) && $basket->getPrice() < $conditions['min_sum']) {
return CheckResult::fail('Минимальная сумма заказа не достигнута');
}
if ($action->getUsageLimit() && $action->getUsageCount() >= $action->getUsageLimit()) {
return CheckResult::fail('Лимит использования акции исчерпан');
}
return CheckResult::success();
}
}
Приоритет и совместимость акций
Несколько акций могут быть активны одновременно. Параметр priority определяет порядок применения. Поле exclusive в настройках акции означает, что другие акции с ней не совмещаются.
Логика: активные акции сортируются по убыванию приоритета. Для каждой проверяется CheckResult. Если акция exclusive и прошла проверку — применяется, цикл прерывается.
Генератор купонов
Массовая генерация уникальных кодов для email-рассылок:
$generator = new CouponGenerator($action);
$coupons = $generator->generate(1000, [
'length' => 8,
'prefix' => 'SALE-',
'charset' => 'ABCDEFGHJKLMNPQRSTUVWXYZ23456789',
]);
// batch insert в b_vendor_promo_coupon + CSV-файл для экспорта
Символы, похожие на цифры (O/0, I/1), исключаются из charset, чтобы избежать ошибок при ручном вводе.
Статистика акций
В административном интерфейсе по каждой акции видны:
- Количество применений и процент от лимита
- Суммарная скидка за период
- Конверсия: сколько пользователей добавили купон к незавершённому заказу vs завершили оплату
- Топ товаров, попавших под акцию
- Динамика использования по дням (график)
Административный интерфейс
- Список акций с фильтром по статусу, типу, дате
- Конструктор условий и вознаграждений
- Управление купонами: генерация пачками, деактивация, экспорт в CSV
- Отчёт по акции с разбивкой по заказам
Что входит в разработку модуля?
| Компонент | Описание |
|---|---|
| ORM-таблицы | Готовые D7-сущности для акций, купонов, использования |
| Конструктор условий | Интерфейс для задания правил корзины (сумма, раздел, товар, пользователь) |
| Виды вознаграждений | Скидка процентная/фиксированная, подарок, бандл, купон, cashback |
| Генератор купонов | Массовая генерация с дайджест-проверкой и экспортом в CSV |
| Совместимость акций | Приоритеты, эксклюзивность, тегирование |
| Статистика | Отчёты по каждой акции: количество применений, скидка, конверсия |
| Административный интерфейс | Фильтры, отчёты, управление купонами |
| Тестирование | Нагрузочное тестирование с имитацией 1000+ одновременных проверок |
Сроки разработки
| Этап | Срок |
|---|---|
| ORM-таблицы, модель | 1 день |
| Проверка условий, скидки | 2 дня |
| Подарки и бандлы | 2 дня |
| Генератор купонов | 1 день |
| Приоритеты и совместимость | 1 день |
| Отчёты и статистика | 1 день |
| Административный интерфейс | 2 дня |
| Интеграционное тестирование | 1 день |
Итого: 11 рабочих дней под ключ. Интеграция с email-платформой — дополнительно 1–2 дня.
Сравнение стандартного подхода и нашего модуля
| Критерий | Стандартные скидки | Наш модуль |
|---|---|---|
| Акция «купи 2 — получи 3» | Требует событий и костылей | Настраивается за 5 минут |
| Купоны для email-рассылок | Нет встроенного генератора | Генерация пачками 1000+ кодов |
| Приоритеты акций | Не поддерживаются | Встроенные приоритеты и exclusive |
| Отчёты по акциям | Только базовые | Конверсия, динамика, топ товаров |
Свяжитесь с нами — мы оценим ваш проект и предложим оптимальное решение. Опираясь на 5+ лет опыта с Битрикс, гарантируем работоспособность модуля и его встраиваемость в существующую архитектуру. Закажите разработку модуля управления акциями и получите гибкий инструмент для маркетинговых кампаний.
Ссылка на официальную документацию: ORM D7. 1С-Битрикс: D7 ORM







