1C-Битрикс: Управление сайтом

CIBlockElement::Add

int 
    
CIBlockElement::Add(

 array arFields,
 bool bWorkFlow = false,
 bool bUpdateSearch = true,
bool bResizePictures = false
);
Метод добавляет новый элемент информационного блока. Перед добавлением элемента вызываются обработчики события OnBeforeIBlockElementAdd, из которых можно изменить значения полей или отменить добавление элемента вернув сообщение об ошибке. После добавления элемента вызывается событие OnAfterIBlockElementAdd.

Параметры функции

ПараметрОписание
arFields Массив вида Array("поле"=>"значение", ...), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле "PROPERTY_VALUES" - массив со всеми значениями свойств элемента в виде массива Array("код свойства"=>"значение свойства"). Где "код свойства" - числовой или мнемонический код свойства, "значение свойства" - одиночное значение, либо массив значений если свойство множественное. Дополнительно для сохранения значения свойств см: CIBlockElement::SetPropertyValues(), CIBlockElement::SetPropertyValueCode()
bWorkFlow Вставка в режиме документооборота. Если true и модуль документооборота установлен, то данное добавление будет учтено в журнале изменения элемента. Не обязательный параметр, по умолчанию вставка в режиме документооборота отключена.
bUpdateSearch Индексировать элемент для поиска. Для повышения производительности можно отключать этот параметр во время серии добавлений элементов, а после вставки переиндексировать поиск. Не обязательный параметр, по умолчанию элемент после добавления будет проиндексирован в поиске.
bResizePicturesИспользовать настройки инфоблока для обработки изображений. По умоляанию настройки не применяются. Если этот параметр имеет значение true, то к полям PREVIEW_PICTURE и DETAIL_PICTURE будут применены правила генерации и масштабирования в соответствии с настройками информационного блока.

Возвращаемое значение

Метод возвращает код добавленного элемента инфоблока, если добавление прошло успешно. При возникновении ошибки метод вернет false, а в свойстве объекта LAST_ERROR будет содержаться текст ошибки.

См. также

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

<?
$el = new CIBlockElement;

$PROP = array();
$PROP[12] = "Белый"; // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38; // свойству с кодом 3 присваиваем значение 38

$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(), // элемент изменен текущим пользователем
"IBLOCK_SECTION_ID" => false, // элемент лежит в корне раздела
"IBLOCK_ID" => 18,
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Элемент",
"ACTIVE" => "Y", // активен
"PREVIEW_TEXT" => "текст для списка элементов",
"DETAIL_TEXT" => "текст для детального просмотра",
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
);

if($PRODUCT_ID = $el->Add($arLoadProductArray))
echo "New ID: ".$PRODUCT_ID;
else
echo "Error: ".$el->LAST_ERROR;
?>

Пользовательские комментарии

Пользовательские комментарии не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Добавлять комментарии могут только зарегистрированные пользователи. Сообщения для просмотра появляются после модерации.
0
Дмитрий
/************************************************************************************
ОПИСАНИЕ МАССИВА ДЛЯ СВОЙСТВА С ТИПОМ html/text
*************************************************************************************/

Код
$arrProp = Array();
$arrProp[ID или CODE][0] = Array("VALUE" => Array ("TEXT" => "значение", "TYPE" => "html или text"));
1
PetrW
Описание массива для свойства типа СПИСОК
Код
$arrProp = Array();
$arrProp[ID или CODE] = Array("VALUE" => $ENUM_ID );

, где $ENUM_ID - это ID-значения в списке, его можно получить при помощи: CIBlockPropertyEnum::GetList
0
Evgeniy Kobzar
Рассмотрим задачу добавления элемента с установкой ему пары для свойства "значение" => "описание"

Код
$el = new CIBlockElement;

$PROP = array();
$PROP[id_property] =  Array(
"n0" => Array(
"VALUE" => "value",
"DESCRIPTION" => "description")
);

$arLoadProductArray = Array(
  "IBLOCK_SECTION" => false,
  "IBLOCK_ID"      => iblock_id,
  "PROPERTY_VALUES"=> $PROP,
  "NAME"           => "Элемент",
  );

$PRODUCT_ID = id_element;
$res = $el->Update($PRODUCT_ID, $arLoadProductArray);
0
Evgeniy Kobzar
При добавлении нового значения/значений множественного свойство типа файл необходимо использовать ключи вида n0,n1,n2 ... nN .

Данный пример представлен для случая добавления одного нового значения в множественное свойство типа файл.
0
Дмитрий Яковенко
Для вставки свойства типа text/html используйте конструкцию вида:
Код
$PROP[ID или CODE свойства] = array('VALUE'=>array('TEXT'=>'нужный текст', 'TYPE'=>'text или html'));
0
Sergey Leshchenko
Пример использования, когда детальная картинка загружается непосредственно из формы.

Код
<?
$el = new CIBlockElement;
$PROP = array();
$PROP[12] = 'Белый';  // свойству с кодом 12 присваиваем значение "Белый"
$PROP[3] = 38; // свойству с кодом 3 присваиваем значение 38
$arLoadProductArray = Array(  
   'MODIFIED_BY' => $GLOBALS['USER']->GetID(), // элемент изменен текущим пользователем  
   'IBLOCK_SECTION_ID' => false, // элемент лежит в корне раздела  
   'IBLOCK_ID' => 18,
   'PROPERTY_VALUES' => $PROP,  
   'NAME' => 'Элемент',  
   'ACTIVE' => 'Y', // активен  
   'PREVIEW_TEXT' => 'текст для списка элементов',  
   'DETAIL_TEXT' => 'текст для детального просмотра',  
   'DETAIL_PICTURE' => $_FILES['DETAIL_PICTURE'] // картинка, загружаемая из файлового поля веб-формы с именем DETAIL_PICTURE
);

if($PRODUCT_ID = $el->Add($arLoadProductArray)) {
   echo 'New ID: '.$PRODUCT_ID;
} else {
   echo 'Error: '.$el->LAST_ERROR;
}
?>
0
vmpartner
Пример массива для вставки видео
Код
$PROP["561"] = Array (
    "n0" => Array(
        "VALUE" => Array (
            "PATH" => "/upload/single_2.flv",
            "WIDTH" => 400,
            "HEIGHT" => 300,
            "TITLE" => "Заголовок видео",
            "DURATION" => "00:30",
            "AUTHOR" => "Автор видео",
            "DATE" => "01.02.2011"
        )
    )
);
0
Кирилл Новожилов
Для указания типа html/text для полей PREVIEW_TEXT и DETAIL_TEXT используйте дополнительный параметр массива:
Код
"PREVIEW_TEXT_TYPE" => 'html или text'
"DETAIL_TEXT_TYPE" => 'html или text'
0
Иван Смирнов
Получить следующий ID для свойства типа "Счётчик" можно методом CIBlockSequence::GetNext() и указать его в методе CIBlockElement:Add(). 

Пример: 
Код
CModule::IncludeModule('iblock'); 
$IBLOCK_ID = 21; 
$PROPERTY_ID = 1223; 
$seq = new CIBlockSequence($IBLOCK_ID, $PROPERTY_ID); 
$el = new CIBlockElement; 
$ID = $el->Add(array( 
   "IBLOCK_ID" => $IBLOCK_ID, 
   "NAME" => "test element", 
   "PROPERTY_VALUES" => array($PROPERTY_ID => $seq->GetNext()) 
)); 
$rs = CIBlockElement::GetList(array(), array("ID" => $ID), false, false, array("ID", "PROPERTY_ABSTRACT_ID")); 
if($ar = $rs->GetNext()) 
   echo 'PRINT_R:<pre style="font:16px Courier">', print_r($ar, 1), '</pre>';
0
sakharov
Описание массива для свойства типа СПИСОК МНОЖЕСТВЕННОГО ВЫБОРА (чекбоксы или мультиселект)
Код
$arrProp = Array();
$arrProp[ID или CODE] = array(
  Array("VALUE" => $ENUM_ID1 ),
  Array("VALUE" => $ENUM_ID2 ),
  Array("VALUE" => $ENUM_ID3 ),
  Array("VALUE" => $ENUM_ID4 ),
);
 
 где $ENUM_ID1... - это ID-значения в списке, его можно получить при помощи: CIBlockPropertyEnum::GetList
© «Битрикс», 2001-2012, «1C-Битрикс», 2012