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

Update

bool
CCatalogDiscount::Update(
 int ID,
 array arFields
);

Метод изменяет параметры скидки с кодом ID в соответствии с данными из массива arFields. Нестатический метод.

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

ПараметрОписание
ID Код скидки.
arFields Ассоциативный массив параметров новой скидки, ключами в котором являются названия параметров, а значениями - соответствующие значения. Допустимые ключи:
  • SITE_ID - сайт;
  • ACTIVE - флаг активности;
  • NAME - название скидки;
  • COUPON - код купона;
  • USE_COUPONS - [Y/N] - есть купоны или нет, обновляется автоматически.
  • SORT - индекс сортировки;
  • MAX_DISCOUNT - максимальная величина скидки;
  • 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 - массив кодов типов цен, на которые действует скидка (если скидка действует не на все типы цен);
  • CONDITIONS - массив для изменения условий использования скидки. Массив перезаписывается, поэтому при обновлении скидки следует добавлять в массив все необходимые данные. Ключ доступен с версии 12.0.0.

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

    Каждое условие массива 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 в случае ошибки.

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

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

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

Пример массива arFields:

$arFields = array(
   "SITE_ID" => "s1",
   "MAX_DISCOUNT" => 0,
   "VALUE" => 15,
   "ACTIVE" => "Y",
   "CONDITIONS" =>  array (
      'CLASS_ID' => 'CondGroup',
      'DATA' =>
      array (
         'All' => 'AND',
         'True' => 'True',
      ),
      'CHILDREN' =>
      array (
         0 =>
         array (
            'CLASS_ID' => 'CondIBElement',
            'DATA' =>
            array (
               'logic' => 'Equal',
               'value' => 2975, //товар с ID=2975
            ),
         ),
         1 =>
         array (
            'CLASS_ID' => 'CondCatQuantity',
            'DATA' =>
            array (
               'logic' => 'Equal',
               'value' => 10, //остаток на складе равен 10
            ),
         ),
      ),  
   )
);


© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх