SetPropertyValuesEx
Описание и параметры
CIBlockElement::SetPropertyValuesEx( int ELEMENT_ID, int IBLOCK_ID, array PROPERTY_VALUES, array FLAGS = array() );
Метод сохраняет значения всех свойств элемента информационного блока. В отличие от SetPropertyValues может не содержать полный набор значений. Значения свойств, неуказанных в массиве PROPERTY_VALUES, будут сохранены. Этот метод более экономен в количестве запросов к БД. Метод статический.
Метод возвращает Null.
Если необходимо сохранить пустое значение для множественного свойства, то используйте значение false, так как просто пустой массив не сохранится.
Параметры вызова
Параметр | Описание |
---|---|
ELEMENT_ID | Код элемента, значения свойств которого необходимо установить. |
IBLOCK_ID | Код информационного блока. Может быть не указан. В этом случае будет прочитан из базы данных по коду элемента.
|
PROPERTY_VALUES | Массив значений свойств, в котором коду свойства ставится в соответствие значение свойства.
Должен быть вида Array("код свойства1"=>"значения свойства1", ....), где "код свойства" - числовой или символьный код свойства, "значения свойства" - одно или массив всех значений свойства (множественное). Примечания:
|
FLAGS | Необязательный параметр предоставляет информацию для оптимизации выполнения. Может содержать следующие ключи:
|
Смотрите также
Примеры использования
Пример 1:
<? $ELEMENT_ID = 18; // код элемента $PROPERTY_CODE = "PROP1"; // код свойства $PROPERTY_VALUE = "Синий"; // значение свойства // Установим новое значение для данного свойства данного элемента CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, false, array($PROPERTY_CODE => $PROPERTY_VALUE)); ?>
Пример 2 (изменение немножественного свойства типа HTML/Text):
$el_id = 125; $iblock_id = 45; $prop[$prop_code] = array('VALUE'=>array('TYPE'=>'HTML', 'TEXT'=>$prop_value)); CIBlockElement::SetPropertyValuesEx($el_id, $iblock_id, $prop);
Пример 3:
<input name="MyFile1" type="file" /> <input name="MyFile2" type="file" /> function makeCurentFilesArray($InputFileCode) { unset($arFiles, $TMPFILE); $arFiles = array(); // Массив всех файлов в свойстве [] $TMPFILE = array(); // Временный массив для текщего файла if(is_array($_FILES[$InputFileCode])) { foreach($_FILES[$InputFileCode]['tmp_name'] as $key => $val) { if(file_exists($val)) { foreach($_FILES[$InputFileCode] as $namekey => $nameval) { $TMPFILE[$namekey] = $nameval[$key]; } $arFiles[] = array('VALUE' => $TMPFILE, 'DESCRIPTION' => $TMPFILE['name']); } } } return $arFiles; } if (!empty($_FILES['MyFile1'])) $PropFileArr['MyFile1'] = makeCurentFilesArray('MyFile1'); if (!empty($_FILES['MyFile2'])) $PropFileArr['MyFile2'] = makeCurentFilesArray('MyFile2'); CIBlockElement::SetPropertyValuesEx($Element_ID, $IBlock_ID, $PropFileArr); // Обновляем массив свойств типа файл
Сообщение не промодерировано, возможны ошибки и неточности.
|
||
Гениально! И как нам понять что операция (столь важная) выполнилась!? | ||
Андрей Сенин
|
||
$PROPERTY_VALUE = false; | ||
Ивайло Тихолов
|
||||
| ||||
Анастасия Слимак
|
||
Пример добавления свойства типа Список.
| ||
Иван Новиков
|
||
Метод не очищает кеш. Для очистки кеша следует вызвать:
| ||
Евгений Черешнев
|
||
Пример загрузки input[type="file"] multiple
| ||
Олег Постоев
|
При попытке обновить множественное свойство запрос будет проигнорирован, если в массиве те же элементы что и были. Даже, если они в другом порядке.
То есть сортировку/порядок значений в свойстве этим методом не изменить. Есть варианта решения разной степени кошмарности: 1. Добавить в массив значений пустышку, а вторым запросом без неё. 2. Добавить рандомный description. Вариант подойдет, если это поле не используется |
Адель Юсупов
|
||
При файсетном индексе необходимо вызвать после вызова CIBlockElement::SetPropertyValuesEx
| ||
karpulix
|
Свойство должно быть активным, иначе изменить его не получится.
Это конечно может кому-то показаться логичным, но не всегда явным. |
Александр Аваков
|
||
Стоит быть внимательным с регистром кодов свойств!
Хоть в битриксе и принято заводить свойства только в UPPERCASE, возможность создать свойство в camelCase тоже присутствует. Если мы используем метод GetList, то регистр будет игнорироваться. При работе с этим методом, регистр не игнорируется.
| ||
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.