Словарь
← Словарь03.a / Термин
class· Битрикс· Таблица купонов Битрикс· Купоны Sale Битрикс

DiscountCouponTable

DiscountCouponTable — D7 ORM-класс в Битрикс Sale для создания и получения купонов. Поля, типы купонов TYPE_ONE_ORDER, методы add(), getList(), generateCoupon().

Категория
Битрикс
Оригинал
DiscountCouponTable (Таблица купонов скидок) · en
Обновлено
27 июн. 2026
Теги
4

DiscountCouponTable — D7 ORM-класс модуля «Интернет-магазин» (sale) в 1С-Битрикс для создания, получения и управления купонами скидок. Расположен в пространстве имён BitrixSaleInternals. Работает с таблицей базы данных b_sale_discount_coupon.

Ключевые поля таблицы купонов Битрикс

ПолеТипОписание
IDintПервичный ключ, автоинкремент
DISCOUNT_IDintID правила скидки из b_sale_discount
COUPONstringКод купона (уникальный)
TYPEintТип купона: 1 = один заказ, 2 = один пользователь, 3 = многоразовый
MAX_USEintМаксимальное количество использований
USE_COUNTintФактическое количество использований
USER_IDintПривязка к конкретному пользователю (0 — для всех)
ACTIVEY/NАктивен ли купон
ACTIVE_FROMDateTimeДата начала действия
ACTIVE_TODateTimeДата окончания действия
DESCRIPTIONstringПроизвольный комментарий администратора

Константы типов купонов DiscountCouponTable

  • DiscountCouponTable::TYPE_ONE_ORDER (1) — купон применяется только в одном заказе, после чего деактивируется. Наиболее распространённый тип для персональных купонов.
  • DiscountCouponTable::TYPE_ONE_USER (2) — купон может применить только один конкретный пользователь, но неограниченное количество раз.
  • DiscountCouponTable::TYPE_MULTI_USE (3) — купон могут использовать любые пользователи неограниченное количество раз (или до исчерпания MAX_USE).

Основные методы DiscountCouponTable

DiscountCouponTable::add(array $data) — создаёт новый купон. Возвращает объект BitrixMainORMDataAddResult. Проверяйте успех через $result->isSuccess(), ошибки — через $result->getErrorMessages().

DiscountCouponTable::getList(array $params) — выборка купонов с фильтрацией, сортировкой и ограничением. Параметры аналогичны любому D7 ORM getList: ключи select, filter, order, limit.

DiscountCouponTable::generateCoupon(bool $upper = false) — генерирует уникальный случайный код купона. При true возвращает код в верхнем регистре. Перед вставкой в БД уникальность подтверждается проверкой на существование.

Пример создания одноразового купона ко дню рождения

<?php

use Bitrix\Main\Type\DateTime;
use Bitrix\Sale\Internals\DiscountCouponTable;

$userId = 42;
$discountId = 125;
$birthdayDate = new \DateTimeImmutable('2026-07-01');

$couponCode = DiscountCouponTable::generateCoupon(true);

$activeTo = DateTime::createFromPhp(
    \DateTime::createFromImmutable(
        $birthdayDate->modify('+5 days')->setTime(23, 59, 59)
    )
);

$result = DiscountCouponTable::add([
    'DISCOUNT_ID' => $discountId,
    'ACTIVE'      => 'Y',
    'ACTIVE_FROM' => new DateTime(),
    'ACTIVE_TO'   => $activeTo,
    'COUPON'      => $couponCode,
    'TYPE'        => DiscountCouponTable::TYPE_ONE_ORDER,
    'MAX_USE'     => 1,
    'USER_ID'     => $userId,
    'DESCRIPTION' => 'birthday_coupon:user=' . $userId . ';year=2026',
]);

if ($result->isSuccess()) {
    echo 'Купон создан: ' . $couponCode;
} else {
    echo 'Ошибка: ' . implode('; ', $result->getErrorMessages());
}

Для использования класса необходимо подключить модуль sale через Loader::includeModule('sale'). Без этого вызова класс DiscountCouponTable будет недоступен и PHP выбросит ошибку класса не найден.

DiscountCouponTable в 1С-Битрикс: создание и управление купонами | Viku-Lov Studio