bool CIBlockElement::Update(
int ID,
array arFields,
bool bWorkFlow = false,
bool bUpdateSearch = true,
bool bResizePictures = false
);
Метод изменяет параметры элемента с кодом ID. Перед изменением элемента вызываются обработчики события OnStartIBlockElementUpdate из которых можно изменить значения полей или отменить изменение элемента вернув сообщение об ошибке. После изменения элемента вызывается само событие OnAfterIBlockElementUpdate.
Если изменяется свойство типа файл, то необходимо сформировать массив.
Параметры функции
| Параметр | Описание |
|---|---|
| ID | ID изменяемой записи. |
| arFields | Массив вида Array("поле"=>"значение", ...), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле "PROPERTY_VALUES" - массив со всеми значениями свойств элемента в виде массива Array("код свойства"=>"значение свойства"). Где
"код свойства" - числовой или мнемонический код свойства, "значение свойства" - одиночное значение, либо массив значений (если свойство множественное). Если массив PROPERTY_VALUES задан, то он должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет отсутствовать одно из свойств, то все его значения для данного элемента будут удалены. Это справедливо для всех типов свойств кроме типа файл. Файлы надо удалять через массив с параметром "del"=>"Y". Дополнительно для сохранения значения свойств см: CIBlockElement::SetPropertyValues(), CIBlockElement::SetPropertyValueCode(). Примечание: Нельзя изменить изначения полей ID и IBLOCK_ID. |
| bWorkFlow | Изменение в режиме документооборота. Если true и модуль документооборота установлен, то данное изменение будет учтено в журнале изменений элемента. Не обязательный параметр, по умолчанию изменение в режиме документооборота отключено.
Примечание: в режиме документооборота можно передавать значения не всех свойств в PROPERTY_VALUES, а только необходимых. |
| bUpdateSearch | Индексировать элемент для поиска. Для повышения производительности можно отключать этот параметр во время серии изменений элементов, а после их окончания переиндексировать поиск. Не обязательный параметр, по умолчанию элемент после изменения будет автоматически проиндексирован в поиске. |
| bResizePictures | Использовать настройки инфоблока для обработки изображений. По умоляанию настройки не применяются. Если этот параметр имеет значение true, то к полям PREVIEW_PICTURE и DETAIL_PICTURE будут применены правила генерации и масштабирования в соответствии с настройками информационного блока. |
Возвращаемое значение
Метод возвращает true если изменение прошло успешно, при возникновении ошибки метод вернет false, а в свойстве LAST_ERROR объекта будет содержаться текст ошибки.См. также
Примеры использования
<?
$el = new CIBlockElement;
$PROP = array();
$PROP[12] = "Белый"; // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38; // свойству с кодом 3 присваиваем значение 38
$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION" => false, // элемент лежит в корне раздела
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Элемент",
"ACTIVE" => "Y", // активен
"PREVIEW_TEXT" => "текст для списка элементов",
"DETAIL_TEXT" => "текст для детального просмотра",
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
);
$PRODUCT_ID = 2; // изменяем элемент с кодом (ID) 2
$res = $el->Update($PRODUCT_ID, $arLoadProductArray);
?>
Менять параметр IBLOCK ID нельзя.
Пользовательские комментарии
Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
|
|
|
Прошу учесть, что в примере нет кода задания нового значения дополнительного свойства, если оно является:
1.1. Для типа HTML/TEXT, при вставке HTML-кода и автоматическом подключении HTML-редактора. $PROP[tables] = array("VALUE" => array("TYPE" =>"HTML","TEXT" => $matches[0])); 1.2. Для типа HTML/TEXT, при вставке plain text. $PROP[tables] = array("VALUE" => array("TYPE" =>"TEXT","TEXT" => $matches[0])); Со ссылки 2. $PROP = array( ["POSTS"] => array("19","20"), // привязка к элементу, множественное ["LANGUAGES"] => array(array("VALUE"=>"Английский","DESCRIPTION"]=>"базовые знания"), array("VALUE"=>"Немецкий","DESCRIPTION"]=>"базовые знания")), // строка с описанием, множественное |
|
| ||
|
Включение HTML режима для detail_text и preview_text:
| ||
|
| ||||||
|
Рассмотрим задачу удаления одного из значений множественного свойства элемента инфоблока
При этом для удаления достаточно исключить из массива $PROP пару ключ, значение удаляемого свойства. Данное решение является оптимальным в ситуации, когда необходимо сохранить
id значения свойства прежним. Также вариантом решения задачи может стать использования вызова
в четвёртый параметр функции передавать false, а в третий передавать массив "код св-ва"=>"значение". При этом все значения будут удалены кроме тех, которые указанны в массиве, переданный в третий параметр. Документация по данной функции предложена на странице | ||||||

