Документация для разработчиков
Темная тема

Add

int
CSaleDiscount::Add(
	array arFields
);

Метод добавляет новую скидку на сумму заказа с параметрами из массива arFields. Статический метод.

Параметры вызова

Параметр Описание
arFields Ассоциативный массив параметров скидки, ключами в котором являются названия параметров скидки, а значениями - значения параметров.

Допустимые ключи:
  • LID - идентификатор сайта;
  • NAME - название;
  • ACTIVE_FROM - дата и время начала действия в формате сайта (если не указано, то действует с момента создания);
  • ACTIVE_TO - дата и время окончания действия в формате сайта (если не указано, то ограничения по времени не имеет);
  • ACTIVE - флаг активности;
  • PRIORITY - приоритет применимости (чем выше, тем раньше применится);
  • SORT - сортировка в рамках одного значения приоритета (чем меньше, тем раньше применится в рамках одного приоритета);
  • LAST_DISCOUNT - флаг "Прекратить применение скидок". Если правило применилось и флаг стоит, все последующие скидки не будут использованы (независимо от того, совпадают их условия или нет);
  • LAST_LEVEL_DISCOUNT - флаг "Прекратить уровень". Аналогичен предыдущему, но отменяет только последующие правила с таким же приоритетом;
  • XML_ID - внешний код;
  • CONDITIONS - массив, описывающий дополнительные условия правила;
  • ACTIONS - массив, описывающий действия правила;
  • USER_GROUPS - массив групп пользователей, на которых распространяется правило (не может быть пустым);
  • CURRENCY - с версии 14.0 принудительно содержит валюту сайта;
  • PRICE_FROM - общая стоимость заказа, начиная с которой предоставляется эта скидка. Устаревшее поле с 14.0, значение жестко переопределяются при добавлении;
  • PRICE_TO - общая стоимость заказа, до достижения которой предоставляется эта скидка. Устаревшее поле с 14.0, значение жестко переопределяются при добавлении;
  • DISCOUNT_VALUE - величина скидки. Устаревшее поле с 14.0, значение жестко переопределяются при добавлении;
  • DISCOUNT_TYPE - тип величины скидки (P - величина задана в процентах, V - величина задана в абсолютной сумме). Устаревшее поле с 14.0, значение жестко переопределяются при добавлении;

  • Блок купонов:
  • COUPON_ADD - создать купоны одного типа при добавлении правила или нет (Y/N);
  • COUPON_COUNT - число создаваемых купонов;
  • COUPON - массив, описывающий купон:
    • TYPE - тип купона (Y - купон на одну позицию заказа, O - купон на один заказ, N - многоразовый купон);
    • ACTIVE_FROM - дата и время начала активности купона в формате сайта либо null;
    • ACTIVE_TO - дата и время окончания активности купона в формате сайта либо null;
    • MAX_USE - максимальное число использования купона (для многоразовых) либо 0.

Возвращаемые значения

Возвращается код добавленной скидки или false в случае ошибки.

Примеры

Создание правила корзины, которое применяет скидку 10% при сумме товаров в корзине от 5000 рублей:

\Bitrix\Main\Loader::includeModule('sale');

global $APPLICATION;

$fields = [
	'LID' => 's1',
	'NAME' => 'Скидка 10% при заказе от 5000',
	'ACTIVE' => 'Y',
	'SORT' => 100,
	'PRIORITY' => 1,
	'LAST_DISCOUNT' => 'N',
	'LAST_LEVEL_DISCOUNT' => 'N',
	'USER_GROUPS' => [2],
	'CURRENCY' => 'RUB',
	'CONDITIONS' => [
		'CLASS_ID' => 'CondGroup',
		'DATA' => [
			'All' => 'AND',
			'True' => 'True',
		],
		'CHILDREN' => [
			[
				'CLASS_ID' => 'CondBsktAmtGroup',
				'DATA' => [
					'logic' => 'EqGr',
					'Value' => 5000,
					'All' => 'AND',
				],
				'CHILDREN' => [],
			],
		],
	],
	'ACTIONS' => [
		'CLASS_ID' => 'CondGroup',
		'DATA' => [
			'All' => 'AND',
		],
		'CHILDREN' => [
			[
				'CLASS_ID' => 'ActSaleBsktGrp',
				'DATA' => [
					'Type' => 'Discount',
					'Value' => 10,
					'Unit' => 'Perc',
					'Max' => 0,
					'All' => 'AND',
					'True' => 'True',
				],
				'CHILDREN' => [],
			],
		],
	],
];

$discountId = CSaleDiscount::Add($fields);

if (!$discountId)
{
	$exception = $APPLICATION->GetException();
	echo $exception ? $exception->GetString() : 'Не удалось создать правило корзины';
}

В поле CONDITIONS передается дерево условий применения правила. В примере корневой узел CondGroup объединяет условия по AND, а дочерний узел CondBsktAmtGroup проверяет сумму товаров в корзине.

Значение logic => EqGr означает «больше или равно», Value => 5000 — минимальную сумму корзины.

В поле ACTIONS передается дерево действий правила. В примере корневой узел CondGroup содержит действие ActSaleBsktGrp, которое применяет скидку к корзине.

Значение Type => Discount задает действие скидки, Value => 10 — размер скидки, Unit => Perc — процентный тип значения.

Ключи CLASS_ID, DATA и CHILDREN обязательны для узлов дерева условий и действий. В CHILDREN передается массив дочерних условий или действий; если дочерних узлов нет, передается пустой массив.



© «Битрикс», 2001-2026, «1С-Битрикс», 2026