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

Add

bool
CCatalogDiscount::Add(
 array arFields );

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

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

ПараметрОписание
arFields Ассоциативный массив параметров новой скидки, ключами в котором являются названия параметров, а значениями - соответствующие значения. Допустимые ключи:
  • SITE_ID - сайт, обязательное поле;
  • ACTIVE - флаг активности;
  • NAME - название скидки, обязательное поле;
  • COUPON - код купона;
  • SORT - индекс сортировки;
  • MAX_DISCOUNT - максимальная величина скидки;
  • LAST_DISCOUNT - если равно N, то отменяет опцию Прекратить дальнейшее применение скидок;
  • VALUE_TYPE - тип скидки (P - в процентах, F - фиксированная величина, S - фиксированная цена);
  • VALUE - величина скидки;
  • CURRENCY - валюта, обязательное поле;
  • RENEWAL - флаг "Скидка на продление";
  • ACTIVE_FROM - дата начала действия скидки;
  • ACTIVE_TO - дата окончания действия скидки;
  • IBLOCK_IDS - массив кодов инфоблоков, на которые действует скидка (если скидка действует не на все инфоблоки). Ключ является устаревшим с версии 12.0.0;
  • PRODUCT_IDS - массив кодов товаров, на которые действует скидка (если скидка действует не на все товары). Ключ является устаревшим с версии 12.0.0;
  • SECTION_IDS - массив кодов групп товаров, на которые действует скидка (если скидка действует не на все группы товары). Ключ является устаревшим с версии 12.0.0;
  • GROUP_IDS - массив кодов групп пользователей, на которые действует скидка (если скидка действует не на все группы пользователей);
  • CATALOG_GROUP_IDS - массив кодов типов цен, на которые действует скидка (если скидка действует не на все типы цен).
  • CATALOG_COUPONS - массив купонов скидки.
  • USE_COUPONS - [Y/N] - есть купоны или нет, обновляется автоматически.
  • PRIORITY - приоритет применимости;
  • CONDITIONS - массив для создания условий использования скидки. Ключ доступен с версии 12.0.0.

    Если он задан и не пуст, то массивы PRODUCT_IDS, SECTION_IDS и IBLOCK_IDS использоваться не будут. Чтобы задать параметры скидки через эти 3 ключа, то CONDITIONS в массиве arFields должен отсутствовать.

    Каждое условие массива CONDITIONS описывается массивом следующей структуры:
    • CLASS_ID - идентификатор (строка);
    • DATA => array() - массив параметров условий;
    • CHILDREN => array() - массив подусловий, каждое из которых является массивом аналогичной структуры, где ключами являются значения 0,1,2,3,..

    Возможные логические условия:
    • Equal - равно;
    • Not - не равно;
    • Great - больше;
    • Less - меньше;
    • EqGr - больше либо равно;
    • EqLs - меньше либо равно.

    Наименования условий:
    • CondIBElement - товар;
    • CondIBIBlock - инфоблок;
    • CondIBSection - раздел;
    • CondIBCode - символьный код;
    • CondIBXmlID - внешний код;
    • CondIBName - название;
    • CondIBActive - активность;
    • CondIBDateActiveFrom - начало активности;
    • CondIBDateActiveTo - окончание активности;
    • CondIBSort - сортировка;
    • CondIBPreviewText - описание для анонса;
    • CondIBDetailText - детальное описание;
    • CondIBDateCreate - дата создания;
    • CondIBCreatedBy - автор;
    • CondIBTimestampX - дата изменения;
    • CondIBModifiedBy - изменивший;
    • CondIBTags - теги;
    • CondCatQuantity - количество товара на складе;
    • CondCatWeight - вес товара;
    • CondCatVatID - НДС;
    • CondCatVatIncluded - НДС включен в цену.

    Кроме того, возможна привязка условий к свойствам товара.

    Верхний элемент массива CONDITIONS всегда один и тот же (для скидок каталога может быть получен методом CCatalogCondTree::GetDefaultConditions()):
    array(
             'CLASS_ID' => 'CondGroup',
             'DATA' => array('All' => 'AND', 'True' => 'True'),
             'CHILDREN' => array()
    );
    

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

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

Пример использования

Получить детальную информацию об ошибке при сохранении можно следующим образом:

$ID = CCatalogDiscount::Add($arFields);
$res = $ID>0;
if (!$res) { 
    $ex = $APPLICATION->GetException();  
    $ex->GetString(); 
}


Пользовательские комментарии

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
4
Илья Греков
Чтобы задать условие по свойству через массив CONDITIONS, необходимо добавить в 'CHILDREN' массив вида:
Код
array(
   "CLASS_ID" => "CondIBProp:ID Инфоблока:ID Свойства",
   "DATA" => array (
      "logic" => "Equal",
      "value" => ID значения свойства
   )
Пример массива CONDITIONS с условием по свойству
Код
$CONDITIONS = array (
   "CLASS_ID" => "CondGroup",
   "DATA" => array (
      "All" => "OR",
      "True" => "True",
   ),
   "CHILDREN" => array(   
      "CLASS_ID" => "CondIBProp:16:52",
      "DATA" => array (
         "logic" => "Equal",
         "value" => $ar_res['ID']
   )
);
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх