Изменение элемента в инфоблоке
Вносить изменения в элементы инфоблока можно с помощью четырех методов функций:
- Обновление полей и свойств элемента
CIBlockElement::Update
- Обновление одного свойства
CIBlockElement::SetPropertyValueCode
- Обновление одного или всех свойств
CIBlockElement::SetPropertyValues
- Обновление произвольного количества свойств элемента
CIBlockElement::SetPropertyValuesEx
В данном примере я работаю с таблицей b_iblock_element_property
которая содержит свойства элемента инфоблока и b_iblock_element
которая содержит сам элемент инфоблока.
<?
// это подключаем если код ниже будет исполняться в отдельном файле php
require($_SERVER["DOCUMENT_ROOT"] . "/bitrix/modules/main/include/prolog_before.php");
// подключаем нужный класс для работы с инфоблоком
CModule::IncludeModule('iblock');
// обязательно указываем класс
$el = new CIBlockElement;
// здесь у нас будут храниться свойства
$PROP = array();
// свойство типа HTML/текст, указываем ID свойста и текст который хотим записать
$PROP[409] = 'Полное название';
// свойство типа список, указываем ID свойста и ID значение свойста
$PROP[411] = ["VALUE" => 190];
// свойство типа список множественного выбора, указываем ID свойста и ID значение свойста
$PROP[412] = [191, 192, 193];
// свойство типа чекс бокс
$PROP[698] = ["VALUE" => 343];
// массив данных для изменения элемента
$arLoadProductArray = array(
// название элемента
"NAME" => "Название элемента",
// превью описание элемента
"PREVIEW_TEXT" => "Превью описание элемента",
// детальное описание элемента
"DETAIL_TEXT" => "Детальный текст",
// активен (Y), или не активен (N)
"ACTIVE" => "Y",
// символьный код
"CODE" => "test",
// обновляем у элемента свойства
"PROPERTY_VALUES" => $PROP,
// сортировка
"SORT" => 100,
// ссылка на детальную картинку
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/images.png")
);
// с помощью Add обновляем элемент
if ($newElement = $el->Update(id_элемента_инфоблока, $arLoadProductArray)) {
echo "Элемент обнавлен: " . $newElement;
} else {
echo "Error: " . $el->LAST_ERROR;
}