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

SetPropertyValues

CIBlockElement::SetPropertyValues(
 int ELEMENT_ID,
 int IBLOCK_ID,
 array PROPERTY_VALUES,
 string PROPERTY_CODE = false
);

Метод сохраняет значения всех свойств элемента информационного блока. Нестатический метод.

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

ПараметрОписание
ELEMENT_ID Код элемента, значения свойств которого необходимо установить.
IBLOCK_ID Код информационного блока.
PROPERTY_VALUES Массив значений свойств, в котором коду свойства ставится в соответствие значение свойства.
Если PROPERTY_CODE установлен, то должен содержать одно или массив всех значений свойства (множественное) для заданного элемента.
Если PROPERTY_CODE равен false, то PROPERTY_VALUES должен быть вида Array("код свойства1"=>"значения свойства1", ....), где "код свойства" - числовой или символьный код свойства, "значения свойства" - одно или массив всех значений свойства (множественное). При этом массив PROPERTY_VALUES должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет остутствовать одно из свойств, то все его значения для данного элемента будут удалены.
Это справедливо для всех типов свойств кроме типа файл. Файлы надо удалять через массив с параметром "del"=>"Y".
Если свойство типа файл множественное, то файл будет удален в случае присутствия параметра del, независимо от принимаемого им значения.

Примечания:
  • При обновлении нужно задать все свойства элемента, иначе те, которые не заданы, будут сброшены.
  • Если передаётся массив "свойство"=>"значение", то в качестве значения свойств типа "справочник" нужно указывать внешний код элемента справочника.

  • Для свойства типа Список следует передавать идентификатор значения свойства, а не значение.
PROPERTY_CODE Код изменяемого свойства. Если этот параметр отличен от false, то изменяется только свойство с таким кодом. Не обязательный параметр, по умолчанию равен false.

См. также

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

Пример 1:

<?
$ELEMENT_ID = 18; // код элемента
$PROPERTY_CODE = "PROP1"; // код свойства
$PROPERTY_VALUE = "Синий"; // значение свойства

// Установим новое значение для данного свойства данного элемента
$dbr = CIBlockElement::GetList(array(), array("=ID"=>$ELEMENT_ID), false, false, array("ID", "IBLOCK_ID"));
if ($dbr_arr = $dbr->Fetch())
{
$IBLOCK_ID = $dbr_arr["IBLOCK_ID"];
CIBlockElement::SetPropertyValues($ELEMENT_ID, $IBLOCK_ID, $PROPERTY_VALUE, $PROPERTY_CODE);
}
?>

Пример 2 (код вызова метода для свойства типа "Строка"):

$value="text";
CIBlockElement::SetPropertyValueCode("$ELEMENT_ID", "code", $value);

Пример 3 (код вызова метода для свойства типа "HTML/text"):

$value="text";
CIBlockElement::SetPropertyValueCode("$ELEMENT_ID", "code", array("VALUE"=>array("TEXT"=>$value, "TYPE"=>"html")));

Пример 4 (добавление описания к значению):

CIBlockElement::SetPropertyValues ( $PRODUCT_ID, $IBLOCK_ID, array("VALUE"=>$prop_value,"DESCRIPTION"=>$prop_description), $property_name ); 

Пример 5 (удаление свойства типа "Файл"):

CIBlockElement::SetPropertyValuesEx(ELEMENT_ID, IBLOCK_ID, array(PROPERTY_ID => Array ("VALUE" => array("del" => "Y")))); 

Пример 6:

Если требуется обновить всю карточку товара, включая свойства со значениями множественного типа (вместе с их описанием), то это можно сделать одним вызовом Update. Следует добавить описание (DESCRIPTION) к значениям (VALUE) свойств множественного типа, в PROPERTY_VALUES прописать числовой или символьный код свойства (множественного типа) и присвоить массив со значениями типа:

$arrFields = Array( 
   'PROPERTY_ID_OR_CODE' => Array( 
      Array( 
         "VALUE" => 'value1', 
         "DESCRIPTION" => 'desc for value1' 
      ), 
      Array( 
         "VALUE" => 'value2', 
         "DESCRIPTION" => 'desc for value2'  
      ) 
   )
);
© «Битрикс», 2001-2019, «1С-Битрикс», 2019
Наверх