Купоны и промокоды — типовой механизм модуля продаж для точечных разовых скидок, не требующих постоянного правила. Разберём, как они устроены в 1С-Битрикс, чем отличаются от обычных правил скидок каталога и на что обратить внимание при настройке ограничений.
Где настраиваются купоны
Купоны создаются в разделе Маркетинг → Скидки → Купоны и всегда привязаны к конкретному правилу скидки — сам купон не задаёт размер скидки напрямую, он лишь активирует существующее правило при вводе кода покупателем в корзине.
Одноразовые и многоразовые купоны
Тип купона определяет, сколько раз он может быть использован: одноразовый деактивируется сразу после первого успешного применения, многоразовый допускает использование заданное число раз или без ограничения по количеству, но чаще всего с ограничением по сроку действия. Выбор типа стоит делать исходя из маркетингового сценария: персональный промокод для конкретного клиента — одноразовый, промокод для массовой email-рассылки — многоразовый с общим лимитом.
Нужна помощь с Битрикс?
Программная генерация купонов
<?php
use Bitrix\Main\Loader;
Loader::includeModule('sale');
$couponData = CSaleCoupon::Add([
'DISCOUNT_ID' => $discountId,
'ACTIVE' => 'Y',
'TYPE' => CSaleCoupon::TYPE_ONE_TIME,
'ACTIVE_FROM' => date('d.m.Y'),
'ACTIVE_TO' => date('d.m.Y', strtotime('+30 days')),
]);
echo $couponData['COUPON']; // сгенерированный код купона
Программная генерация полезна для сценариев вроде "промокод на день рождения" или "купон за подписку на рассылку", где код должен создаваться автоматически по событию, а не вводиться вручную администратором в интерфейсе.
Проверка купона перед применением
<?php
$coupon = CSaleCoupon::GetByCoupon($couponCode);
if (!$coupon || $coupon['ACTIVE'] !== 'Y') {
// купон не найден или деактивирован
}
if ($coupon['ACTIVE_TO'] && strtotime($coupon['ACTIVE_TO']) < time()) {
// срок действия истёк
}
При кастомной форме ввода купона (не через штатный компонент корзины) эти проверки нужно продублировать вручную — штатный компонент делает их сам, но при написании собственной логики оформления заказа ответственность за проверку переходит к разработчику.
Ограничение купона по категории или сумме заказа
Само правило скидки, к которому привязан купон, может ограничивать область действия — конкретным разделом каталога, минимальной суммой заказа, определённой группой пользователей. Купон в этом случае лишь активирует правило, но не расширяет и не сужает его условия — расхождение между ожиданием "купон даёт скидку на всё" и фактическим ограничением правила часто становится источником обращений в поддержку от покупателей.
Комбинирование нескольких купонов
По умолчанию поведение при применении нескольких купонов одновременно (если корзина это допускает) зависит от настроек совместного применения скидок в разделе Маркетинг → Скидки → Настройки. Без явной настройки суммирования купоны могут применяться не так, как ожидает бизнес-логика магазина, — например, взаимно исключать друг друга там, где ожидалось сложение скидок.
Частые ошибки
- Проверка купона пропущена в кастомной форме оформления. Истёкший или деактивированный купон принимается без ошибки.
- Ожидание, что купон переопределяет условия правила скидки. Купон только активирует правило, а не меняет его область действия.
- Не настроено поведение при нескольких купонах в корзине. Непредсказуемый результат вместо ожидаемого суммирования или выбора большей скидки.
Итог
Купон в 1С-Битрикс — это способ активации существующего правила скидки по коду, а не самостоятельная сущность со своими условиями. При программной генерации и кастомных формах ввода важно вручную дублировать проверки активности и срока действия, которые штатный компонент корзины делает автоматически.
