Bitrix element update error

Метод изменяет параметры элемента с кодом ID. Перед изменением элемента вызываются обработчики события  OnStartIBlockElementUpdate из которых можно изменить значения полей или отменить изменение элемента вернув сообщение об ошибке. После изменения элемента вызывается само событие OnAfterIBlockElementUpdate. Нестатический метод.

Описание

bool 
 CIBlockElement::Update(
 int ID,
 array arFields,
 bool bWorkFlow = false,
 bool bUpdateSearch = true,
bool bResizePictures = false,
bool bCheckDiskQuota = true
);

Метод изменяет параметры элемента с кодом ID. Перед изменением элемента вызываются обработчики события  OnStartIBlockElementUpdate из которых можно изменить значения полей или отменить изменение элемента вернув сообщение об ошибке. После изменения элемента вызывается само событие OnAfterIBlockElementUpdate. Нестатический метод.

Если изменяется свойство типа файл, то необходимо сформировать массив.

Смотрите также

  • CIBlockElement::Add
  • OnBeforeIBlockElementUpdate
  • OnAfterIBlockElementUpdate

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

Параметр Описание С версии
ID ID изменяемой записи.
arFields Массив вида Array(«поле»=>»значение», …), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле «PROPERTY_VALUES» — массив со всеми значениями свойств элемента в виде массива Array(«код свойства»=>»значение свойства»). Где

«код свойства» — числовой или символьный код свойства,

«значение свойства» — одиночное значение, либо массив значений (если свойство множественное).

Если массив PROPERTY_VALUES задан, то он должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет отсутствовать одно из свойств, то все его значения для данного элемента будут удалены.

Это справедливо для всех типов свойств кроме типа файл. Файлы надо удалять через массив с параметром «del»=>»Y».

Если свойство типа список, то в PROPERTY_VALUES надо отдавать не название, а ID значения.

Дополнительно для сохранения значения свойств см: CIBlockElement::SetPropertyValues(), CIBlockElement::SetPropertyValueCode().

Примечание 1: нельзя изменить значения полей ID и IBLOCK_ID.

Примечание 2: чтобы при обновлении элемента поле TIMESTAMP_X не обновилось на текущее время, в arFields необходимо передать:

'TIMESTAMP_X' => FALSE, // или NULL

Примечание 3: Если нужно обновить элемент инфоблока, добавив его в несколько новых разделов, но не изменив «главный», т.е. чтобы URL элемента не изменился, то в вызове CIBlockElement::Update передайте два ключа: IBLOCK_SECTION_ID — ID основного раздела, IBLOCK_SECTION — массив ID всех разделов элемента, включая основной.

bWorkFlow Изменение в режиме документооборота. Если true и модуль документооборота установлен, то данное изменение будет учтено в журнале изменений элемента. Не обязательный параметр, по умолчанию изменение в режиме документооборота отключено.

Примечание: в режиме документооборота можно передавать значения не всех свойств в PROPERTY_VALUES, а только необходимых.

3.1.3
bUpdateSearch Индексировать элемент для поиска. Для повышения производительности можно отключать этот параметр во время серии изменений элементов, а после их окончания переиндексировать поиск. Не обязательный параметр, по умолчанию элемент после изменения будет автоматически проиндексирован в поиске. 3.2.1
bResizePictures Использовать настройки инфоблока для обработки изображений. По умолчанию настройки не применяются. Если этот параметр имеет значение true, то к полям PREVIEW_PICTURE и DETAIL_PICTURE будут применены правила генерации и масштабирования в соответствии с настройками информационного блока. 8.0.10
bCheckDiskQuota Проверять ограничение по месту занимаемому базой данных и файлами или нет (настройка главного модуля). Необязательный параметр. 11.0.14

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

Метод возвращает 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 нельзя.

Пример задания нового значения дополнительного свойства:

Для типа HTML/TEXT, при вставке HTML-кода и автоматическом подключении HTML-редактора:

$PROP[tables] = array("VALUE" => array("TYPE" =>"HTML","TEXT" => $matches[0])); 

Для типа HTML/TEXT, при вставке plain text:

$PROP[tables] = array("VALUE" => array("TYPE" =>"TEXT","TEXT" => $matches[0])); 

0

Александр Ризель
17.04.2021 03:36:25

Для того чтобы опубликовать последний черновик надо сделать так:

Код
$el = new CIBlockElement;
$el->Update(
   $ID, // айди элемента
   [ 'WF_STATUS_ID' => 1, 'ACTIVE' => 'Y' ],
   true
);

2

Дмитрий Грищенко
22.04.2020 07:43:06

Удаление PREVIEW_PICTURE

Код
$arFields['PREVIEW_PICTURE'] = ['del' => 'Y'];

10

Антон Царук
24.04.2017 14:16:36

Тонкий момент.
Если в init.php задан обработчик OnBeforeIBlockElementUpdate, в котором происходит манипуляция с массивом $arFields[PROPERTY_VALUES] (изменение его значений), а где-то в коде сайта вызывается функция CIBlockElement::Update без задания массива PROPERTY_VALUES, то результатом ее выполнения может стать очистка значений свойств элемента (так как в обработчик массив PROPERTY_VALUES не поступит, что, в общем-то, логично). Поэтому обязательно в OnBeforeIBlockElementUpdate проверяем, есть ли вообще что-то в массиве PROPERTY_VALUES:

Код
if(count($arFields[PROPERTY_VALUES]))...

2

Антон Царук
13.12.2016 16:45:57

Для установки дат DATE_ACTIVE_FROM и DATE_ACTIVE_TO используется формат сайта: d.m.Y. Передавать даты в формате БД — не получается…

16

Сергей Талызенков
18.04.2016 17:27:48

IBLOCK_SECTION_ID основной раздел элемента
IBLOCK_SECTION — массив разделов к которым привязан элемент

4

Роман Егоров
26.01.2016 14:49:10

ВНИМАНИЕ! Проблема актуальна на последней текущей версии 15.5.10.

Такая запись  не пройдет и будет ошибка Fatal error: Call to undefined method CBitrixComponent::CheckFields() in /bitrix/modules/iblock/classes/general/iblocksection.php on line …

Код
CIBlockElement::Update(int ID,int ID,  array arFields,  bool bWorkFlow = false,  bool bUpdateSearch = true, bool bResizePictures = false, bool bCheckDiskQuota = true)

Требуется обязательно использовать конструктор такого вида:

Код
$el = new CIBlockElement; 
$res = $el->Update($PRODUCT_ID, $arLoadProductArray);

5

Антон Царук
26.11.2015 11:12:12

Помимо «PROPERTY_VALUES» в массиве полей может быть еще и сверхсекретный массив с ключом «RIGHTS» — с его помощью можно настроить расширенный доступ к элементу инфоблока.
Например, передавая в качестве $arFields вот такой массив

Код
'RIGHTS'=>array("n0" => array("GROUP_CODE" => "U777", "DO_CLEAN" => "N", "TASK_ID" => 34)

можно установить доступ к элементу для определенного пользователя c ID=777. 34 — это ID права доступа «Изменение» в модуле «Инфоблоки» (ID от проекта к проекту может быть разное, надо смотреть в «Правах доступа» правильное значение)

3

Карпов Сергей
24.07.2015 12:51:16

Задача: изменить тип анонсного текста с текстового на html

Проблема: из документации не очевидно, что следует писать  «PREVIEW_TEXT_TYPE» =>»html» и «html» — маленькими буквами

Решение:

Код
$text= "пример текста <br> для html"; 
 
$el = new CIBlockElement;
$arLoadProductArray = Array(
   "MODIFIED_BY"    => $USER->GetID(), // элемент изменен текущим пользователем
      "PREVIEW_TEXT_TYPE" =>"html",
      "PREVIEW_TEXT_TEXT" => html_entity_decode($text), 
);
$res = $el->Update($id, $arLoadProductArray);
 

© «Битрикс», 2001-2023, «1С-Битрикс», 2023

Наверх

Содержание

  1. Update
  2. Описание
  3. Смотрите также
  4. Параметры вызова
  5. Возвращаемое значение
  6. Примеры использования
  7. Update
  8. Описание
  9. Смотрите также
  10. Параметры вызова
  11. Возвращаемое значение
  12. Примеры использования
  13. Update
  14. Parameters
  15. Returned value
  16. See Also
  17. Examples
  18. lists.element.update
  19. Описание
  20. Параметры
  21. Пример
  22. Пользовательские комментарии
  23. Update
  24. Описание и параметры
  25. Параметры вызова
  26. Возвращаемое значение
  27. Смотрите также
  28. Примеры использования
  29. Пользовательские комментарии

Update

Описание

Метод изменяет параметры элемента с кодом ID. Перед изменением элемента вызываются обработчики события OnStartIBlockElementUpdate из которых можно изменить значения полей или отменить изменение элемента вернув сообщение об ошибке. После изменения элемента вызывается само событие OnAfterIBlockElementUpdate. Нестатический метод.

Если изменяется свойство типа файл, то необходимо сформировать массив.

Смотрите также

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

Параметр Описание С версии
ID ID изменяемой записи.
arFields Массив вида Array(«поле»=>»значение», . ), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле «PROPERTY_VALUES» — массив со всеми значениями свойств элемента в виде массива Array(«код свойства»=>»значение свойства»). Где
«код свойства» — числовой или символьный код свойства,
«значение свойства» — одиночное значение, либо массив значений (если свойство множественное).

Если массив PROPERTY_VALUES задан, то он должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет отсутствовать одно из свойств, то все его значения для данного элемента будут удалены.

Это справедливо для всех типов свойств кроме типа файл. Файлы надо удалять через массив с параметром «del»=>»Y».
Если свойство типа список, то в PROPERTY_VALUES надо отдавать не название, а ID значения.
Дополнительно для сохранения значения свойств см: CIBlockElement::SetPropertyValues(), CIBlockElement::SetPropertyValueCode().

Примечание 3: Если нужно обновить элемент инфоблока, добавив его в несколько новых разделов, но не изменив «главный», т.е. чтобы URL элемента не изменился, то в вызове CIBlockElement::Update передайте два ключа: IBLOCK_SECTION_ID — ID основного раздела, IBLOCK_SECTION — массив ID всех разделов элемента, включая основной.

bWorkFlow Изменение в режиме документооборота. Если true и модуль документооборота установлен, то данное изменение будет учтено в журнале изменений элемента. Не обязательный параметр, по умолчанию изменение в режиме документооборота отключено. 3.1.3 bUpdateSearch Индексировать элемент для поиска. Для повышения производительности можно отключать этот параметр во время серии изменений элементов, а после их окончания переиндексировать поиск. Не обязательный параметр, по умолчанию элемент после изменения будет автоматически проиндексирован в поиске. 3.2.1 bResizePictures Использовать настройки инфоблока для обработки изображений. По умолчанию настройки не применяются. Если этот параметр имеет значение true, то к полям PREVIEW_PICTURE и DETAIL_PICTURE будут применены правила генерации и масштабирования в соответствии с настройками информационного блока. 8.0.10 bCheckDiskQuota Проверять ограничение по месту занимаемому базой данных и файлами или нет (настройка главного модуля). Необязательный параметр. 11.0.14

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

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

Менять параметр IBLOCK_ID нельзя.

Пример задания нового значения дополнительного свойства:

Для типа HTML/TEXT, при вставке HTML-кода и автоматическом подключении HTML-редактора: Для типа HTML/TEXT, при вставке plain text:

Источник

Update

Описание

Метод изменяет параметры элемента с кодом ID. Перед изменением элемента вызываются обработчики события OnStartIBlockElementUpdate из которых можно изменить значения полей или отменить изменение элемента вернув сообщение об ошибке. После изменения элемента вызывается само событие OnAfterIBlockElementUpdate. Нестатический метод.

Если изменяется свойство типа файл, то необходимо сформировать массив.

Смотрите также

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

Параметр Описание С версии
ID ID изменяемой записи.
arFields Массив вида Array(«поле»=>»значение», . ), содержащий значения полей элемента инфоблоков и дополнительно может содержать поле «PROPERTY_VALUES» — массив со всеми значениями свойств элемента в виде массива Array(«код свойства»=>»значение свойства»). Где
«код свойства» — числовой или символьный код свойства,
«значение свойства» — одиночное значение, либо массив значений (если свойство множественное).

Если массив PROPERTY_VALUES задан, то он должен содержать полный набор значений свойств для данного элемента, т.е. если в нем будет отсутствовать одно из свойств, то все его значения для данного элемента будут удалены.

Это справедливо для всех типов свойств кроме типа файл. Файлы надо удалять через массив с параметром «del»=>»Y».
Если свойство типа список, то в PROPERTY_VALUES надо отдавать не название, а ID значения.
Дополнительно для сохранения значения свойств см: CIBlockElement::SetPropertyValues(), CIBlockElement::SetPropertyValueCode().

Примечание 3: Если нужно обновить элемент инфоблока, добавив его в несколько новых разделов, но не изменив «главный», т.е. чтобы URL элемента не изменился, то в вызове CIBlockElement::Update передайте два ключа: IBLOCK_SECTION_ID — ID основного раздела, IBLOCK_SECTION — массив ID всех разделов элемента, включая основной.

bWorkFlow Изменение в режиме документооборота. Если true и модуль документооборота установлен, то данное изменение будет учтено в журнале изменений элемента. Не обязательный параметр, по умолчанию изменение в режиме документооборота отключено. 3.1.3 bUpdateSearch Индексировать элемент для поиска. Для повышения производительности можно отключать этот параметр во время серии изменений элементов, а после их окончания переиндексировать поиск. Не обязательный параметр, по умолчанию элемент после изменения будет автоматически проиндексирован в поиске. 3.2.1 bResizePictures Использовать настройки инфоблока для обработки изображений. По умолчанию настройки не применяются. Если этот параметр имеет значение true, то к полям PREVIEW_PICTURE и DETAIL_PICTURE будут применены правила генерации и масштабирования в соответствии с настройками информационного блока. 8.0.10 bCheckDiskQuota Проверять ограничение по месту занимаемому базой данных и файлами или нет (настройка главного модуля). Необязательный параметр. 11.0.14

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

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

Менять параметр IBLOCK_ID нельзя.

Пример задания нового значения дополнительного свойства:

Для типа HTML/TEXT, при вставке HTML-кода и автоматическом подключении HTML-редактора: Для типа HTML/TEXT, при вставке plain text:

Источник

Update

The method modifies parameters of element with ID. Before modifying an element, handlers of the event OnStartIBlockElementUpdate are called and which field values can be modified or an element modification rolled back by returning false. After element is modified, the event OnAfterIBlockElementUpdate itself is called. Non-static method.

When the fileproperty type is modified, you must generate an array.

Parameters

Parameter Description Available fr om version
ID Modified element ID.
arFields Array type: Array(«field»=>»value», . ), containing values of iblock element fields and can contain the field «PROPERTY_VALUES» additionally, represented by an array with all element property values: Array(«property code»=>»property value»). Where
«property code» — is the numeric or mnemonic property identifier,
«property value» — single value or an array of values for multiple-value properties.
Please note that the PROPERTY_VALUES array must contain a full set of properties and values; in case any currently existing property is missing from this array, all its values are removed from the element property set.
It applies to all property type, except when type is file. Files must be deleted via array with parameter «del»=>»Y».
When property type is list, pass to the PROPERTY_VALUES a value ID instead of the name.
Additionally, to save property values, see: CIBlockElement::SetPropertyValues(), CIBlockElement::[link=90663]SetPropertyValueCode().[/link]

bWorkFlow Modifying in the workflow mode. When returns true and workflow module is installed, any modified parameters are recorded in the element’s log. Optional parameter. Modifications in workflow mode are disabled by default. 3.1.3 bUpdateSearch Index an element for search. This parameter can be disabled during a series of element modifications to increase performance. When all modifications are complete, manually re-index the search. Optional parameter. By default, an element is automatically re-indexed in the search after its modified. 3.2.1 bResizePictures Use iblock settings to process images. The settings are not applied by default. When this parameter is true, the fields PREVIEW_PICTURE and DETAIL_PICTURE will use relies for generating and scaling in accordance with iblock settings. 8.0.10 bCheckDiskQuota Enables checking limits of disk space occupied by database and files (kernel setting). Optional parameter. 11.0.14

Returned value

See Also

Examples

The parameter IBLOCK_ID cannot be modified.

Example for setting a new value for additional property:

For the type HTML/TEXT, when inserting HTML code and automatic connection of HTML editor: For the type HTML/TEXT, when inserting plain text:

Источник

lists.element.update

Описание

Метод обновляет элемент списка. В случае успешного обновления элемента ответ true, иначе Exception.

Важно! Все поля элемента и их значения должны передаваться в запросе.

Чтобы загрузить файлы в поле типа Файл (Диск) необходимо:

  1. использовать rest api модуля disk: disk.folder.uploadfile и disk.storage.uploadfile. В ответе при загрузке этих файлов, вы будете получать «ID»: 290.
  2. Получить список ID загруженных файлов.
  3. Затем с помощью rest api модуля lists добавлять файлы в нужное поле. В случае если у поля уже есть прикрепленные файлы вам нужно получить предыдущие значения из lists.element.get и передать их вместе с новыми:

Значения в поле Файл (Диск) без префикса «n» это уже прикрепленные файлы (attachedId), а с префиксом это ваши новые файлы, уже загруженные предварительно в диск.

Параметры

Параметр Описание
Все поля элемента и их значения должны передаваться в запросе.
IBLOCK_TYPE_ID id типа инфоблока (обязательно):

  • lists — тип инфоблока списка
  • bitrix_processes — тип инфоблока процессов
  • lists_socnet — тип инфоблока списков групп
IBLOCK_CODE/IBLOCK_ID код или id инфоблока (обязательно)
ELEMENT_CODE/ELEMENT_ID код или id элемента (обязательно)
FIELDS массив полей и значений
SOCNET_GROUP_ID id группы (обязательно, если список создается для группы);

Пример

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

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

Update

Описание и параметры

Метод изменяет параметры информационного блока с кодом ID. Модифицировать поля, а также отменить изменение параметров можно добавив обработчик события OnBeforeIBlockUpdate. После успешного добавления инфоблока вызываются обработчики события OnAfterIBlockUpdate. Нестатический метод.

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

Параметр Описание
ID ID изменяемого информационного блока.
arFields Массив Array(«поле»=>»значение», . ). Содержит значения всех полей информационного блока.
Дополнительно в поле SITE_ID должен находиться массив идентификаторов сайтов, к которым привязан изменяемый информационный блок.
Кроме того, с помощью поля «GROUP_ID», значением которого должен быть массив соответствий кодов групп правам доступа, можно установить права для разных групп на доступ к информационному блоку(см. CIBlock::SetPermission()).
Если задано поле «FIELDS», то будут выполнены настройки полей инфоблока (см. CIBlock::SetFields).

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

Смотрите также

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

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

Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.

Для этого нужно всего лишь авторизоваться на сайте

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

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.

Источник

bool
CIBlockElement::Upd ate(
 int ID,
 array arFields,
 bool bWorkFlow = false,
 bool bUpdateSearch = true
);

The method modifies parameters of element with ID. Before modifying an element, handlers of the event OnStartIBlockElementUpdate are called and which field values can be modified or an element modification rolled back by returning false. After element is modified, the event OnAfterIBlockElementUpdate itself is called. Non-static method.

When the fileproperty type is modified, you must generate an array.

Parameters

Parameter Description Available fr om version
ID Modified element ID.
arFields Array type: Array(«field»=>»value», …), containing values of iblock element fields and can contain the field «PROPERTY_VALUES» additionally, represented by an array with all element property values: Array(«property code»=>»property value»). Where

«property code» — is the numeric or mnemonic property identifier,

«property value» — single value or an array of values for multiple-value properties.

Please note that the PROPERTY_VALUES array must contain a full set of properties and values; in case any currently existing property is missing from this array, all its values are removed from the element property set.
It applies to all property type, except when type is file. Files must be deleted via array with parameter «del»=>»Y».

When property type is list, pass to the PROPERTY_VALUES a value ID instead of the name.

Additionally, to save property values, see: CIBlockElement::SetPropertyValues(), CIBlockElement::[link=90663]SetPropertyValueCode().[/link]

Note 1: The values of ID and IBLOCK_ID fields cannot be modified.

Note 2:To avoid updating the TIMESTAMP_X field with the current time when updating an element, pass the following to arFields:

'TIMESTAMP_X' => FALSE, // or NULL

bWorkFlow Modifying in the workflow mode. When returns true and workflow module is installed, any modified parameters are recorded in the element’s log. Optional parameter. Modifications in workflow mode are disabled by default.

Note: when in workflow mode, not all property values can be passed in PROPERTY_VALUES: only required parameters are permitted.

3.1.3
bUpdateSearch Index an element for search. This parameter can be disabled during a series of element modifications to increase performance. When all modifications are complete, manually re-index the search. Optional parameter. By default, an element is automatically re-indexed in the search after its modified. 3.2.1
bResizePictures Use iblock settings to process images. The settings are not applied by default. When this parameter is true, the fields PREVIEW_PICTURE and DETAIL_PICTURE will use relies for generating and scaling in accordance with iblock settings. 8.0.10
bCheckDiskQuota Enables checking limits of disk space occupied by database and files (kernel setting). Optional parameter. 11.0.14

Returned value

The method returns true on success and false when error occurs and the object’s property LAST_ERROR will contain error description.

See Also

  • CIBlockElement::Add
  • OnBeforeIBlockElementUpdate
  • OnAfterIBlockElementUpdate

Examples

<?
$el = new CIBlockElement;

$PROP = array();
$PROP[12] = "White"; // property with code 12 assigned with value "White"
$PROP[3] = 38; // property with code 3 assigned with value 38

$arLoadProductArray = Array(
"MODIFIED_BY" => $USER->GetID(), // element is modified by the current user
"IBLOCK_SECTION" => false, // element is located in the section root
"PROPERTY_VALUES"=> $PROP,
"NAME" => "Element",
"ACTIVE" => "Y", // is active
"PREVIEW_TEXT" => "text for element list",
"DETAIL_TEXT" => "text for detail view",
"DETAIL_PICTURE" => CFile::MakeFileArray($_SERVER["DOCUMENT_ROOT"]."/image.gif")
);

$PRODUCT_ID = 2; // modify element with code (ID) 2
$res = $el->Update($PRODUCT_ID, $arLoadProductArray);
?>

The parameter IBLOCK_ID cannot be modified.

Example for setting a new value for additional property:

For the type HTML/TEXT, when inserting HTML code and automatic connection of HTML editor:

$PROP[tables] = array("VALUE" => array("TYPE" =>"HTML","TEXT" => $matches[0])); 

For the type HTML/TEXT, when inserting plain text:

$PROP[tables] = array("VALUE" => array("TYPE" =>"TEXT","TEXT" => $matches[0])); 

© «Bitrix24», 2001-2023

Up

Обновление основныех элементов инфоблока bitrix + настраиваемые поля происходит за 1 раз с помощью функции Update.

Если обновлять через update -слетают все настраиваемые поля, при условии, что PROPERTY_VALUES существует в нутри массива $arLoadProductArray. Если нет этого элемента- свойства не затрагиваются. НО! можно возможно обновлять такиве вещи как NAME и другие элементы инфоблока, не относящиеся к настраиваемым полям.
В официальной документации серьезное наебалово . //https://dev.1c-bitrix.ru/api_help/iblock/classes/ciblockelement/update.php

В ниже приведенном в коде есть
1) обновление селекта;
2) обновление текстового поля;
3) обновление картинrи;
4) обновление множественного поля с id;
5) обновление name;
6) несколько неработающих синтаксисом для данной функции bitrix.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

// обязательные для включения штуки

CModule::IncludeModule(‘iblock’);

$el = new CIBlockElement;

//массив для множественного свойства

$author_mass_id=array(

1, 10, 12

);

$arLoadProductArray = Array(

«NAME»=>‘aaaa1111’, // работает

«ACTIVE»=>«Y»,  // и это работает работает

«PREVIEW_PICTURE» => CFile::MakeFileArray($name_file), //файлы — заносится, но нужно предварительно что бы этот файл существовал.

«DETAIL_PICTURE» => CFile::MakeFileArray($name_file),

«PROPERTY_VALUES»=>array(

// рабочие элементы

«ATT_AUTHOR»=>$author_mass_id, // множественное свойство

«ATT_DESC»=>‘text text text’,  // текст

«ATT_BOOK_PRICE»=>‘77777777’, // численое значение

«ATT_TOP_10»=>’11’, // select  -значение id  внутри селекта(смотрим через через web-панель value options внутри элемента инфоблока)- Рабочий код

// примеры не работающие для Update

//»att_top_10_value»=>’Да’, //значение селекат — НЕ РАБОЧИЙ КОД!!!

//»property_att_prod_text» =>», //не рабочий код!!! добавки спереди property_ а так же в конце _value в разлчных комбинациях работать не будут.

),

  );   

$res = $el->Update(33, $arLoadProductArray);  // помещаем id+ massiv

Такая конструкция «ATT_DESC»=>false, — тоже не работает. По идее этот код должен игнорировать это свойство при перезаписи, но не работает.

Вот как id для селекта получаем.Смотрим фото. Например значение нет- это id 10.

Если нужно обновить отдельное свойство , то лучше воспользоваться SetPropertyValueCode.


//    CIBlockElement::Update()
//    /bitrix/modules/iblock/classes/mysql/iblockelement.php:824

    public function Update($ID, $arFields, $bWorkFlow=false, $bUpdateSearch=true, $bResizePictures=false, $bCheckDiskQuota=true)
    {
        global $DB;
        $ID = (int)$ID;

        $db_element = CIBlockElement::GetList(array(), array("ID"=>$ID, "SHOW_HISTORY"=>"Y"), false, false,
            array(
                "ID",
                "TIMESTAMP_X",
                "MODIFIED_BY",
                "DATE_CREATE",
                "CREATED_BY",
                "IBLOCK_ID",
                "IBLOCK_SECTION_ID",
                "ACTIVE",
                "ACTIVE_FROM",
                "ACTIVE_TO",
                "SORT",
                "NAME",
                "PREVIEW_PICTURE",
                "PREVIEW_TEXT",
                "PREVIEW_TEXT_TYPE",
                "DETAIL_PICTURE",
                "DETAIL_TEXT",
                "DETAIL_TEXT_TYPE",
                "WF_STATUS_ID",
                "WF_PARENT_ELEMENT_ID",
                "WF_NEW",
                "WF_COMMENTS",
                "IN_SECTIONS",
                "CODE",
                "TAGS",
                "XML_ID",
                "TMP_ID",
            )
        );
        if(!($ar_element = $db_element->Fetch()))
            return false;

        $arIBlock = CIBlock::GetArrayByID($ar_element["IBLOCK_ID"]);
        $bWorkFlow = $bWorkFlow && is_array($arIBlock) && ($arIBlock["WORKFLOW"] != "N") && $this->workflowIncluded;

        $ar_wf_element = $ar_element;

        self::$elementIblock[$ID] = $arIBlock["ID"];

        $LAST_ID = 0;
        if($bWorkFlow)
        {
            $LAST_ID = CIBlockElement::WF_GetLast($ID);
            if($LAST_ID!=$ID)
            {
                $db_element = CIBlockElement::GetByID($LAST_ID);
                if(!($ar_wf_element = $db_element->Fetch()))
                    return false;
            }

            $arFields["WF_PARENT_ELEMENT_ID"] = $ID;

            if(!isset($arFields["PROPERTY_VALUES"]) || !is_array($arFields["PROPERTY_VALUES"]))
                $arFields["PROPERTY_VALUES"] = array();

            $bFieldProps = array();
            foreach($arFields["PROPERTY_VALUES"] as $k=>$v)
                $bFieldProps[$k]=true;

            $arFieldProps = &$arFields['PROPERTY_VALUES'];
            $props = CIBlockElement::GetProperty($ar_element["IBLOCK_ID"], $ar_wf_element["ID"]);
            while($arProp = $props->Fetch())
            {
                $pr_val_id = $arProp['PROPERTY_VALUE_ID'];
                if($arProp['PROPERTY_TYPE']=='F' && $pr_val_id <> '')
                {
                    if($arProp["CODE"] <> '' && is_set($arFieldProps, $arProp["CODE"]))
                        $pr_id = $arProp["CODE"];
                    else
                        $pr_id = $arProp['ID'];

                    if(
                        array_key_exists($pr_id, $arFieldProps)
                        && array_key_exists($pr_val_id, $arFieldProps[$pr_id])
                        && is_array($arFieldProps[$pr_id][$pr_val_id])
                    )
                    {
                        $new_value = $arFieldProps[$pr_id][$pr_val_id];
                        if(
                            $new_value['name'] == ''
                            && $new_value['del'] != "Y"
                            && $new_value['VALUE']['name'] == ''
                            && $new_value['VALUE']['del'] != "Y"
                        )
                        {
                            if(
                                array_key_exists('DESCRIPTION', $new_value)
                                && ($new_value['DESCRIPTION'] != $arProp['DESCRIPTION'])
                            )
                            {
                                $p = Array("VALUE"=>CFile::MakeFileArray($arProp['VALUE']));
                                $p["DESCRIPTION"] = $new_value["DESCRIPTION"];
                                $p["MODULE_ID"] = "iblock";
                                $arFieldProps[$pr_id][$pr_val_id] = $p;
                            }
                            elseif($arProp['VALUE'] > 0)
                            {
                                $arFieldProps[$pr_id][$pr_val_id] = array("VALUE"=>$arProp['VALUE'],"DESCRIPTION"=>$arProp["DESCRIPTION"]);
                            }
                        }
                    }
                    else
                    {
                        $arFieldProps[$pr_id][$pr_val_id] = array("VALUE"=>$arProp['VALUE'],"DESCRIPTION"=>$arProp["DESCRIPTION"]);
                    }

                    continue;
                }

                if (
                    $pr_val_id == ''
                    || array_key_exists($arProp["ID"], $bFieldProps)
                    || (
                        $arProp["CODE"] <> ''
                        && array_key_exists($arProp["CODE"], $bFieldProps)
                    )
                )
                    continue;

                $arFieldProps[$arProp["ID"]][$pr_val_id] = array("VALUE"=>$arProp['VALUE'],"DESCRIPTION"=>$arProp["DESCRIPTION"]);
            }

            if($ar_wf_element["IN_SECTIONS"] == "Y")
            {
                $ar_wf_element["IBLOCK_SECTION"] = array();
                $rsSections = CIBlockElement::GetElementGroups($ar_element["ID"], true, array('ID', 'IBLOCK_ELEMENT_ID'));
                while($arSection = $rsSections->Fetch())
                    $ar_wf_element["IBLOCK_SECTION"][] = $arSection["ID"];
            }

            unset($ar_wf_element["DATE_ACTIVE_FROM"],
                $ar_wf_element["DATE_ACTIVE_TO"],
                $ar_wf_element["EXTERNAL_ID"],
                $ar_wf_element["TIMESTAMP_X"],
                $ar_wf_element["IBLOCK_SECTION_ID"],
                $ar_wf_element["ID"]
            );

            $arFields = $arFields + $ar_wf_element;
        }

        $arFields["WF"] = ($bWorkFlow?"Y":"N");

        $bBizProc = is_array($arIBlock) && ($arIBlock["BIZPROC"] == "Y") && $this->bizprocInstalled;
        if(array_key_exists("BP_PUBLISHED", $arFields))
        {
            if($bBizProc)
            {
                if($arFields["BP_PUBLISHED"] == "Y")
                {
                    $arFields["WF_STATUS_ID"] = 1;
                    $arFields["WF_NEW"] = false;
                }
                else
                {
                    $arFields["WF_STATUS_ID"] = 2;
                    $arFields["WF_NEW"] = "Y";
                    $arFields["BP_PUBLISHED"] = "N";
                }
            }
            else
            {
                $arFields["WF_NEW"] = false;
                unset($arFields["BP_PUBLISHED"]);
            }
        }
        else
        {
            $arFields["WF_NEW"] = false;
        }

        if (array_key_exists('NAME', $arFields) && $arFields['NAME'] === null)
        {
            unset($arFields['NAME']);
        }

        if (isset($arFields["ACTIVE"]) && $arFields["ACTIVE"] != "Y")
        {
            $arFields["ACTIVE"] = "N";
        }

        if (isset($arFields["PREVIEW_TEXT_TYPE"]) && $arFields["PREVIEW_TEXT_TYPE"] != "html")
        {
            $arFields["PREVIEW_TEXT_TYPE"] = "text";
        }

        if (isset($arFields["DETAIL_TEXT_TYPE"]) && $arFields["DETAIL_TEXT_TYPE"] != "html")
        {
            $arFields["DETAIL_TEXT_TYPE"] = "text";
        }

        $strWarning = "";
        if($bResizePictures)
        {
            $arDef = $arIBlock["FIELDS"]["PREVIEW_PICTURE"]["DEFAULT_VALUE"];

            if(
                $arDef["DELETE_WITH_DETAIL"] === "Y"
                && isset($arFields["DETAIL_PICTURE"])
                && is_array($arFields["DETAIL_PICTURE"])
                && $arFields["DETAIL_PICTURE"]["del"] === "Y"
            )
            {
                $arFields["PREVIEW_PICTURE"]["del"] = "Y";
            }

            if(
                $arDef["FROM_DETAIL"] === "Y"
                && (
                    !isset($arFields["PREVIEW_PICTURE"])
                    || (is_array($arFields["PREVIEW_PICTURE"]) && $arFields["PREVIEW_PICTURE"]["size"] <= 0)
                    || $arDef["UPDATE_WITH_DETAIL"] === "Y"
                )
                && isset($arFields["DETAIL_PICTURE"])
                && is_array($arFields["DETAIL_PICTURE"])
                && $arFields["DETAIL_PICTURE"]["size"] > 0
            )
            {
                if(
                    $arFields["PREVIEW_PICTURE"]["del"] !== "Y"
                    && $arDef["UPDATE_WITH_DETAIL"] !== "Y"
                )
                {
                    $rsElement = CIBlockElement::GetList(Array("ID" => "DESC"), Array("ID" => $ar_wf_element["ID"], "IBLOCK_ID" => $ar_wf_element["IBLOCK_ID"], "SHOW_HISTORY"=>"Y"), false, false, Array("ID", "PREVIEW_PICTURE"));
                    $arOldElement = $rsElement->Fetch();
                }
                else
                {
                    $arOldElement = false;
                }

                if(!$arOldElement || !$arOldElement["PREVIEW_PICTURE"])
                {
                    $arNewPreview = $arFields["DETAIL_PICTURE"];
                    $arNewPreview["COPY_FILE"] = "Y";
                    if (
                        isset($arFields["PREVIEW_PICTURE"])
                        && is_array($arFields["PREVIEW_PICTURE"])
                        && isset($arFields["PREVIEW_PICTURE"]["description"])
                    )
                    {
                        $arNewPreview["description"] = $arFields["PREVIEW_PICTURE"]["description"];
                    }

                    $arFields["PREVIEW_PICTURE"] = $arNewPreview;
                }
            }

            if(
                isset($arFields["PREVIEW_PICTURE"])
                && is_array($arFields["PREVIEW_PICTURE"])
                && $arFields["PREVIEW_PICTURE"]["size"] > 0
                && $arDef["SCALE"] === "Y"
            )
            {
                $arNewPicture = CIBlock::ResizePicture($arFields["PREVIEW_PICTURE"], $arDef);
                if(is_array($arNewPicture))
                {
                    $arNewPicture["description"] = $arFields["PREVIEW_PICTURE"]["description"];
                    $arFields["PREVIEW_PICTURE"] = $arNewPicture;
                }
                elseif($arDef["IGNORE_ERRORS"] !== "Y")
                {
                    unset($arFields["PREVIEW_PICTURE"]);
                    $strWarning .= GetMessage("IBLOCK_FIELD_PREVIEW_PICTURE").": ".$arNewPicture."<br>";
                }
            }

            if(
                isset($arFields["PREVIEW_PICTURE"])
                && is_array($arFields["PREVIEW_PICTURE"])
                && $arDef["USE_WATERMARK_FILE"] === "Y"
            )
            {
                if(
                    $arFields["PREVIEW_PICTURE"]["tmp_name"] <> ''
                    && (
                        $arFields["PREVIEW_PICTURE"]["tmp_name"] === $arFields["DETAIL_PICTURE"]["tmp_name"]
                        || ($arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["PREVIEW_PICTURE"]["copy"])
                    )
                )
                {
                    $tmp_name = CTempFile::GetFileName(basename($arFields["PREVIEW_PICTURE"]["tmp_name"]));
                    CheckDirPath($tmp_name);
                    copy($arFields["PREVIEW_PICTURE"]["tmp_name"], $tmp_name);
                    $arFields["PREVIEW_PICTURE"]["copy"] = true;
                    $arFields["PREVIEW_PICTURE"]["tmp_name"] = $tmp_name;
                }

                CIBlock::FilterPicture($arFields["PREVIEW_PICTURE"]["tmp_name"], array(
                    "name" => "watermark",
                    "position" => $arDef["WATERMARK_FILE_POSITION"],
                    "type" => "file",
                    "size" => "real",
                    "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100),
                    "file" => $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $arDef["WATERMARK_FILE"]),
                ));
            }

            if(
                isset($arFields["PREVIEW_PICTURE"])
                && is_array($arFields["PREVIEW_PICTURE"])
                && $arDef["USE_WATERMARK_TEXT"] === "Y"
            )
            {
                if(
                    $arFields["PREVIEW_PICTURE"]["tmp_name"] <> ''
                    && (
                        $arFields["PREVIEW_PICTURE"]["tmp_name"] === $arFields["DETAIL_PICTURE"]["tmp_name"]
                        || ($arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["PREVIEW_PICTURE"]["copy"])
                    )
                )
                {
                    $tmp_name = CTempFile::GetFileName(basename($arFields["PREVIEW_PICTURE"]["tmp_name"]));
                    CheckDirPath($tmp_name);
                    copy($arFields["PREVIEW_PICTURE"]["tmp_name"], $tmp_name);
                    $arFields["PREVIEW_PICTURE"]["copy"] = true;
                    $arFields["PREVIEW_PICTURE"]["tmp_name"] = $tmp_name;
                }

                CIBlock::FilterPicture($arFields["PREVIEW_PICTURE"]["tmp_name"], array(
                    "name" => "watermark",
                    "position" => $arDef["WATERMARK_TEXT_POSITION"],
                    "type" => "text",
                    "coefficient" => $arDef["WATERMARK_TEXT_SIZE"],
                    "text" => $arDef["WATERMARK_TEXT"],
                    "font" => $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]),
                    "color" => $arDef["WATERMARK_TEXT_COLOR"],
                ));
            }

            $arDef = $arIBlock["FIELDS"]["DETAIL_PICTURE"]["DEFAULT_VALUE"];

            if(
                isset($arFields["DETAIL_PICTURE"])
                && is_array($arFields["DETAIL_PICTURE"])
                && $arDef["SCALE"] === "Y"
            )
            {
                $arNewPicture = CIBlock::ResizePicture($arFields["DETAIL_PICTURE"], $arDef);
                if(is_array($arNewPicture))
                {
                    $arNewPicture["description"] = $arFields["DETAIL_PICTURE"]["description"];
                    $arFields["DETAIL_PICTURE"] = $arNewPicture;
                }
                elseif($arDef["IGNORE_ERRORS"] !== "Y")
                {
                    unset($arFields["DETAIL_PICTURE"]);
                    $strWarning .= GetMessage("IBLOCK_FIELD_DETAIL_PICTURE").": ".$arNewPicture."<br>";
                }
            }

            if(
                isset($arFields["DETAIL_PICTURE"])
                && is_array($arFields["DETAIL_PICTURE"])
                && $arDef["USE_WATERMARK_FILE"] === "Y"
            )
            {
                if(
                    $arFields["DETAIL_PICTURE"]["tmp_name"] <> ''
                    && (
                        $arFields["DETAIL_PICTURE"]["tmp_name"] === $arFields["PREVIEW_PICTURE"]["tmp_name"]
                        || ($arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["DETAIL_PICTURE"]["copy"])
                    )
                )
                {
                    $tmp_name = CTempFile::GetFileName(basename($arFields["DETAIL_PICTURE"]["tmp_name"]));
                    CheckDirPath($tmp_name);
                    copy($arFields["DETAIL_PICTURE"]["tmp_name"], $tmp_name);
                    $arFields["DETAIL_PICTURE"]["copy"] = true;
                    $arFields["DETAIL_PICTURE"]["tmp_name"] = $tmp_name;
                }

                CIBlock::FilterPicture($arFields["DETAIL_PICTURE"]["tmp_name"], array(
                    "name" => "watermark",
                    "position" => $arDef["WATERMARK_FILE_POSITION"],
                    "type" => "file",
                    "size" => "real",
                    "alpha_level" => 100 - min(max($arDef["WATERMARK_FILE_ALPHA"], 0), 100),
                    "file" => $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $arDef["WATERMARK_FILE"]),
                ));
            }

            if(
                isset($arFields["DETAIL_PICTURE"])
                && is_array($arFields["DETAIL_PICTURE"])
                && $arDef["USE_WATERMARK_TEXT"] === "Y"
            )
            {
                if(
                    $arFields["DETAIL_PICTURE"]["tmp_name"] <> ''
                    && (
                        $arFields["DETAIL_PICTURE"]["tmp_name"] === $arFields["PREVIEW_PICTURE"]["tmp_name"]
                        || ($arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y" && !$arFields["DETAIL_PICTURE"]["copy"])
                    )
                )
                {
                    $tmp_name = CTempFile::GetFileName(basename($arFields["DETAIL_PICTURE"]["tmp_name"]));
                    CheckDirPath($tmp_name);
                    copy($arFields["DETAIL_PICTURE"]["tmp_name"], $tmp_name);
                    $arFields["DETAIL_PICTURE"]["copy"] = true;
                    $arFields["DETAIL_PICTURE"]["tmp_name"] = $tmp_name;
                }

                CIBlock::FilterPicture($arFields["DETAIL_PICTURE"]["tmp_name"], array(
                    "name" => "watermark",
                    "position" => $arDef["WATERMARK_TEXT_POSITION"],
                    "type" => "text",
                    "coefficient" => $arDef["WATERMARK_TEXT_SIZE"],
                    "text" => $arDef["WATERMARK_TEXT"],
                    "font" => $_SERVER["DOCUMENT_ROOT"].Rel2Abs("/", $arDef["WATERMARK_TEXT_FONT"]),
                    "color" => $arDef["WATERMARK_TEXT_COLOR"],
                ));
            }
        }

        $ipropTemplates = new BitrixIblockInheritedPropertyElementTemplates($ar_element["IBLOCK_ID"], $ar_element["ID"]);
        if(isset($arFields["PREVIEW_PICTURE"]) && is_array($arFields["PREVIEW_PICTURE"]))
        {
            if(
                $arFields["PREVIEW_PICTURE"]["name"] == ''
                && $arFields["PREVIEW_PICTURE"]["del"] == ''
                && !is_set($arFields["PREVIEW_PICTURE"], "description")
            )
            {
                unset($arFields["PREVIEW_PICTURE"]);
            }
            else
            {
                $arFields["PREVIEW_PICTURE"]["MODULE_ID"] = "iblock";
                $arFields["PREVIEW_PICTURE"]["old_file"] = $ar_wf_element["PREVIEW_PICTURE"];
                $arFields["PREVIEW_PICTURE"]["name"] = BitrixIblockTemplateHelper::makeFileName(
                    $ipropTemplates
                    ,"ELEMENT_PREVIEW_PICTURE_FILE_NAME"
                    ,array_merge($ar_element, $arFields)
                    ,$arFields["PREVIEW_PICTURE"]
                );
            }
        }

        if(isset($arFields["DETAIL_PICTURE"]) && is_array($arFields["DETAIL_PICTURE"]))
        {
            if(
                $arFields["DETAIL_PICTURE"]["name"] == ''
                && $arFields["DETAIL_PICTURE"]["del"] == ''
                && !is_set($arFields["DETAIL_PICTURE"], "description")
            )
            {
                unset($arFields["DETAIL_PICTURE"]);
            }
            else
            {
                $arFields["DETAIL_PICTURE"]["MODULE_ID"] = "iblock";
                $arFields["DETAIL_PICTURE"]["old_file"] = $ar_wf_element["DETAIL_PICTURE"];
                $arFields["DETAIL_PICTURE"]["name"] = BitrixIblockTemplateHelper::makeFileName(
                    $ipropTemplates
                    ,"ELEMENT_DETAIL_PICTURE_FILE_NAME"
                    ,array_merge($ar_element, $arFields)
                    ,$arFields["DETAIL_PICTURE"]
                );
            }
        }

        if(is_set($arFields, "DATE_ACTIVE_FROM"))
            $arFields["ACTIVE_FROM"] = $arFields["DATE_ACTIVE_FROM"];
        if(is_set($arFields, "DATE_ACTIVE_TO"))
            $arFields["ACTIVE_TO"] = $arFields["DATE_ACTIVE_TO"];
        if(is_set($arFields, "EXTERNAL_ID"))
            $arFields["XML_ID"] = $arFields["EXTERNAL_ID"];

        if (isset($arFields['NAME']) && is_array($arFields['NAME']))
        {
            unset($arFields['NAME']);
        }

        $existFields = array(
            'NAME' => isset($arFields['NAME']),
            'PREVIEW_TEXT' => array_key_exists('PREVIEW_TEXT', $arFields),
            'DETAIL_TEXT' => array_key_exists('DETAIL_TEXT', $arFields)
        );
        $searchableFields = [
            'NAME' => $existFields['NAME'] ? $arFields["NAME"] : $ar_wf_element["NAME"],
            'PREVIEW_TEXT' => $existFields['PREVIEW_TEXT'] ? $arFields["PREVIEW_TEXT"]: $ar_wf_element["PREVIEW_TEXT"],
            'PREVIEW_TEXT_TYPE' => $arFields["PREVIEW_TEXT_TYPE"] ?? $ar_wf_element["PREVIEW_TEXT_TYPE"],
            'DETAIL_TEXT' => $existFields['DETAIL_TEXT'] ? $arFields["DETAIL_TEXT"]: $ar_wf_element["DETAIL_TEXT"],
            'DETAIL_TEXT_TYPE' => $arFields["DETAIL_TEXT_TYPE"] ?? $ar_wf_element["DETAIL_TEXT_TYPE"],
        ];

        if ($this->searchIncluded)
        {
            $arFields["SEARCHABLE_CONTENT"] = ToUpper(
                $searchableFields['NAME']."rn".
                ($searchableFields['PREVIEW_TEXT_TYPE'] == "html" ? HTMLToTxt($searchableFields['PREVIEW_TEXT']) : $searchableFields['PREVIEW_TEXT'])."rn".
                ($searchableFields['DETAIL_TEXT_TYPE'] == "html" ? HTMLToTxt($searchableFields['DETAIL_TEXT']) : $searchableFields['DETAIL_TEXT'])
            );
        }

        if(array_key_exists("IBLOCK_SECTION_ID", $arFields))
        {
            if (!array_key_exists("IBLOCK_SECTION", $arFields))
            {
                $arFields["IBLOCK_SECTION"] = array($arFields["IBLOCK_SECTION_ID"]);
            }
            elseif (is_array($arFields["IBLOCK_SECTION"]) && !in_array($arFields["IBLOCK_SECTION_ID"], $arFields["IBLOCK_SECTION"]))
            {
                unset($arFields["IBLOCK_SECTION_ID"]);

            }
        }

        $arFields["IBLOCK_ID"] = $ar_element["IBLOCK_ID"];

        if(!$this->CheckFields($arFields, $ID, $bCheckDiskQuota) || $strWarning != '')
        {
            $this->LAST_ERROR .= $strWarning;
            $Result = false;
            $arFields["RESULT_MESSAGE"] = &$this->LAST_ERROR;
        }
        else
        {
            unset($arFields["ID"]);

            if(array_key_exists("PREVIEW_PICTURE", $arFields))
            {
                $SAVED_PREVIEW_PICTURE = $arFields["PREVIEW_PICTURE"];
            }
            else
            {
                $SAVED_PREVIEW_PICTURE = false;
            }

            if(array_key_exists("DETAIL_PICTURE", $arFields))
            {
                $SAVED_DETAIL_PICTURE = $arFields["DETAIL_PICTURE"];
            }
            else
            {
                $SAVED_DETAIL_PICTURE = false;
            }

            // edit was done in workflow mode
            if($bWorkFlow)
            {
                $arFields["WF_PARENT_ELEMENT_ID"] = $ID;

                if(array_key_exists("PREVIEW_PICTURE", $arFields))
                {
                    if(is_array($arFields["PREVIEW_PICTURE"]))
                    {
                        if(
                            $arFields["PREVIEW_PICTURE"]["name"] == ''
                            && $arFields["PREVIEW_PICTURE"]["del"] == ''
                        )
                        {
                            if(array_key_exists("description", $arFields["PREVIEW_PICTURE"]))
                            {
                                $arFile = CFile::GetFileArray($ar_wf_element["PREVIEW_PICTURE"]);
                                if($arFields["PREVIEW_PICTURE"]["description"] != $arFile["DESCRIPTION"])
                                {//Description updated, so it's new file
                                    $arNewFile = CFile::MakeFileArray($ar_wf_element["PREVIEW_PICTURE"]);
                                    $arNewFile["description"] = $arFields["PREVIEW_PICTURE"]["description"];
                                    $arNewFile["MODULE_ID"] = "iblock";
                                    $arFields["PREVIEW_PICTURE"] = $arNewFile;
                                }
                                else
                                {
                                    $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"];
                                }
                            }
                            else
                            {
                                //File was not changed at all
                                $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"];
                            }
                        }
                        else
                        {
                            unset($arFields["PREVIEW_PICTURE"]["old_file"]);
                        }
                    }
                }
                else
                {
                    $arFields["PREVIEW_PICTURE"] = $ar_wf_element["PREVIEW_PICTURE"];
                }

                if(array_key_exists("DETAIL_PICTURE", $arFields))
                {
                    if(is_array($arFields["DETAIL_PICTURE"]))
                    {
                        if(
                            $arFields["DETAIL_PICTURE"]["name"] == ''
                            && $arFields["DETAIL_PICTURE"]["del"] == ''
                        )
                        {
                            if(array_key_exists("description", $arFields["DETAIL_PICTURE"]))
                            {
                                $arFile = CFile::GetFileArray($ar_wf_element["DETAIL_PICTURE"]);
                                if($arFields["DETAIL_PICTURE"]["description"] != $arFile["DESCRIPTION"])
                                {//Description updated, so it's new file
                                    $arNewFile = CFile::MakeFileArray($ar_wf_element["DETAIL_PICTURE"]);
                                    $arNewFile["description"] = $arFields["DETAIL_PICTURE"]["description"];
                                    $arNewFile["MODULE_ID"] = "iblock";
                                    $arFields["DETAIL_PICTURE"] = $arNewFile;
                                }
                                else
                                {
                                    $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"];
                                }
                            }
                            else
                            {
                                //File was not changed at all
                                $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"];
                            }
                        }
                        else
                        {
                            unset($arFields["DETAIL_PICTURE"]["old_file"]);
                        }
                    }
                }
                else
                {
                    $arFields["DETAIL_PICTURE"] = $ar_wf_element["DETAIL_PICTURE"];
                }

                $NID = $this->Add($arFields);
                if($NID>0)
                {
                    if($arFields["WF_STATUS_ID"]==1)
                    {
                        $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_NEW=null WHERE ID=".$ID);
                        $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_NEW=null WHERE WF_PARENT_ELEMENT_ID=".$ID);
                        $ar_wf_element["WF_NEW"] = false;
                    }

                    if($this->bWF_SetMove)
                        CIBlockElement::WF_SetMove($NID, $LAST_ID);

                    if($ar_element["WF_STATUS_ID"] != 1
                        && $ar_wf_element["WF_STATUS_ID"] != $arFields["WF_STATUS_ID"]
                        && $arFields["WF_STATUS_ID"] != 1
                        )
                    {
                        $DB->Query("UPDATE b_iblock_element SET TIMESTAMP_X=TIMESTAMP_X, WF_STATUS_ID=".(int)$arFields["WF_STATUS_ID"]." WHERE ID=".$ID);
                    }
                }

                //element was not published, so keep original
                if(
                    (is_set($arFields, "WF_STATUS_ID") && $arFields["WF_STATUS_ID"]!=1 && $ar_element["WF_STATUS_ID"]==1)
                    || (!is_set($arFields, "WF_STATUS_ID") && $ar_wf_element["WF_STATUS_ID"]!=1)
                )
                {
                    CIBlockElement::WF_CleanUpHistoryCopies($ID);
                    return true;
                }

                $arFields['WF_PARENT_ELEMENT_ID'] = false;

                $rs = $DB->Query("SELECT PREVIEW_PICTURE, DETAIL_PICTURE from b_iblock_element WHERE ID = ".(int)$NID);
                $ar_new_element = $rs->Fetch();
            }
            else
            {
                $ar_new_element = false;
            }

            if($ar_new_element)
            {
                if(!intval($ar_new_element["PREVIEW_PICTURE"]))
                    $arFields["PREVIEW_PICTURE"] = false;
                else
                    $arFields["PREVIEW_PICTURE"] = $ar_new_element["PREVIEW_PICTURE"];

                if(!intval($ar_new_element["DETAIL_PICTURE"]))
                    $arFields["DETAIL_PICTURE"] = false;
                else
                    $arFields["DETAIL_PICTURE"] = $ar_new_element["DETAIL_PICTURE"];

                if(is_array($arFields["PROPERTY_VALUES"]) && !empty($arFields["PROPERTY_VALUES"]))
                {
                    $i = 0;
                    $db_prop = CIBlockProperty::GetList(array(), array(
                        "IBLOCK_ID" => $arFields["IBLOCK_ID"],
                        "CHECK_PERMISSIONS" => "N",
                        "PROPERTY_TYPE" => "F",
                    ));
                    while($arProp = $db_prop->Fetch())
                    {
                        $i++;
                        unset($arFields["PROPERTY_VALUES"][$arProp["CODE"]]);
                        unset($arFields["PROPERTY_VALUES"][$arProp["ID"]]);
                        $arFields["PROPERTY_VALUES"][$arProp["ID"]] = array();
                    }

                    if($i > 0)
                    {
                        //Delete previous files
                        $props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $ID, "sort", "asc", array("PROPERTY_TYPE" => "F", "EMPTY" => "N"));
                        while($arProp = $props->Fetch())
                        {
                            $arFields["PROPERTY_VALUES"][$arProp["ID"]][$arProp['PROPERTY_VALUE_ID']] = array(
                                "VALUE" => array(
                                    "del" => "Y",
                                ),
                                "DESCRIPTION" => false,
                            );
                        }
                        //Add copy from history
                        $arDup = array();//This is cure for files duplication bug (just save element one more time)
                        $props = CIBlockElement::GetProperty($arFields["IBLOCK_ID"], $NID, "sort", "asc", array("PROPERTY_TYPE" => "F", "EMPTY" => "N"));
                        while($arProp = $props->Fetch())
                        {
                            if(!array_key_exists($arProp["VALUE"], $arDup))//This is cure for files duplication bug
                            {
                                $arFields["PROPERTY_VALUES"][$arProp["ID"]][$arProp['PROPERTY_VALUE_ID']] = array(
                                    "VALUE" => $arProp["VALUE"],
                                    "DESCRIPTION" => $arProp["DESCRIPTION"],
                                );
                                $arDup[$arProp["VALUE"]] = true;//This is cure for files duplication bug
                            }
                        }
                    }
                }
            }
            else
            {
                if(array_key_exists("PREVIEW_PICTURE", $arFields))
                    CFile::SaveForDB($arFields, "PREVIEW_PICTURE", "iblock");
                if(array_key_exists("DETAIL_PICTURE", $arFields))
                    CFile::SaveForDB($arFields, "DETAIL_PICTURE", "iblock");
            }

            $newFields = $arFields;
            $newFields["ID"] = $ID;
            $IBLOCK_SECTION_ID = $arFields["IBLOCK_SECTION_ID"];
            unset($arFields["IBLOCK_ID"], $arFields["WF_NEW"], $arFields["IBLOCK_SECTION_ID"]);

            $bTimeStampNA = false;
            if(is_set($arFields, "TIMESTAMP_X") && ($arFields["TIMESTAMP_X"] === NULL || $arFields["TIMESTAMP_X"]===false))
            {
                $bTimeStampNA = true;
                unset($arFields["TIMESTAMP_X"]);
                unset($newFields["TIMESTAMP_X"]);
            }

            foreach (GetModuleEvents("iblock", "OnIBlockElementUpdate", true) as $arEvent)
                ExecuteModuleEventEx($arEvent, array($newFields, $ar_wf_element));
            unset($newFields);

            $strUpdate = $DB->PrepareUpdate("b_iblock_element", $arFields, "iblock");

            if(!empty($strUpdate))
                $strUpdate .= ", ";

            $strSql = "UPDATE b_iblock_element SET ".$strUpdate.($bTimeStampNA?"TIMESTAMP_X=TIMESTAMP_X":"TIMESTAMP_X=now()")." WHERE ID=".$ID;
            $DB->Query($strSql, false, "FILE: ".__FILE__."<br> LINE: ".__LINE__);

            $existFields['PROPERTY_VALUES'] = (
                isset($arFields["PROPERTY_VALUES"])
                && is_array($arFields["PROPERTY_VALUES"])
                && !empty($arFields["PROPERTY_VALUES"])
            );

            if ($existFields['PROPERTY_VALUES'])
            {
                CIBlockElement::SetPropertyValues($ID, $ar_element["IBLOCK_ID"], $arFields["PROPERTY_VALUES"]);
            }

            if (!$this->searchIncluded)
            {
                if (
                    $existFields['NAME']
                    || $existFields['PREVIEW_TEXT']
                    || $existFields['DETAIL_TEXT']
                    || $existFields['PROPERTY_VALUES']
                )
                {
                    $elementFields = $arFields;
                    if (!$existFields['NAME'])
                    {
                        $elementFields['NAME'] = $searchableFields['NAME'];
                    }
                    if (!$existFields['PREVIEW_TEXT'])
                    {
                        $elementFields['PREVIEW_TEXT'] = $searchableFields['PREVIEW_TEXT'];
                        if (!isset($elementFields['PREVIEW_TEXT_TYPE']))
                        {
                            $elementFields['PREVIEW_TEXT_TYPE'] = $searchableFields['PREVIEW_TEXT_TYPE'];
                        }
                    }
                    if (!$existFields['DETAIL_TEXT'])
                    {
                        $elementFields['DETAIL_TEXT'] = $searchableFields['DETAIL_TEXT'];
                        if (!isset($elementFields['DETAIL_TEXT_TYPE']))
                        {
                            $elementFields['DETAIL_TEXT_TYPE'] = $searchableFields['DETAIL_TEXT_TYPE'];
                        }
                    }
                    $arFields['SEARCHABLE_CONTENT'] = $this->getSearchableContent($ID, $elementFields, $arIBlock);
                    unset($elementFields);
                    $updateFields = array(
                        'SEARCHABLE_CONTENT' => $arFields['SEARCHABLE_CONTENT']
                    );
                    $updateQuery = $DB->PrepareUpdate("b_iblock_element", $updateFields, "iblock");
                    if ($updateQuery != "")
                    {
                        $updateQuery .= ', TIMESTAMP_X = TIMESTAMP_X';
                        $DB->Query("UPDATE b_iblock_element SET ".$updateQuery." WHERE ID = ".$ID);
                    }
                    unset($updateFields);
                }
            }

            if(is_set($arFields, "IBLOCK_SECTION"))
                CIBlockElement::SetElementSection($ID, $arFields["IBLOCK_SECTION"], false, $arIBlock["RIGHTS_MODE"] === "E"? $arIBlock["ID"]: 0, $IBLOCK_SECTION_ID);

            if($arIBlock["RIGHTS_MODE"] === "E")
            {
                $obElementRights = new CIBlockElementRights($arIBlock["ID"], $ID);
                if(array_key_exists("RIGHTS", $arFields) && is_array($arFields["RIGHTS"]))
                    $obElementRights->SetRights($arFields["RIGHTS"]);
            }

            if (array_key_exists("IPROPERTY_TEMPLATES", $arFields))
            {
                $ipropTemplates = new BitrixIblockInheritedPropertyElementTemplates($arIBlock["ID"], $ID);
                $ipropTemplates->set($arFields["IPROPERTY_TEMPLATES"]);
            }

            if ($bUpdateSearch)
            {
                if ($this->searchIncluded)
                {
                    CIBlockElement::UpdateSearch($ID, true);
                }
            }

            BitrixIblockPropertyIndexManager::updateElementIndex($arIBlock["ID"], $ID);

            if($bWorkFlow)
            {
                CIBlockElement::WF_CleanUpHistoryCopies($ID);
            }

            //Restore saved values
            if($SAVED_PREVIEW_PICTURE !== false)
            {
                $arFields["PREVIEW_PICTURE_ID"] = $arFields["PREVIEW_PICTURE"];
                $arFields["PREVIEW_PICTURE"] = $SAVED_PREVIEW_PICTURE;
            }
            else
            {
                unset($arFields["PREVIEW_PICTURE"]);
            }

            if($SAVED_DETAIL_PICTURE !== false)
            {
                $arFields["DETAIL_PICTURE_ID"] = $arFields["DETAIL_PICTURE"];
                $arFields["DETAIL_PICTURE"] = $SAVED_DETAIL_PICTURE;
            }
            else
            {
                unset($arFields["DETAIL_PICTURE"]);
            }

            if($arIBlock["FIELDS"]["LOG_ELEMENT_EDIT"]["IS_REQUIRED"] == "Y")
            {
                //$USER_ID = is_object($USER)? intval($USER->GetID()) : 0;
                $arEvents = GetModuleEvents("main", "OnBeforeEventLog", true);
                if(empty($arEvents) || ExecuteModuleEventEx($arEvents[0], array($this->userId))===false) //$USER_ID
                {
                    $rsElement = CIBlockElement::GetList(
                        array(),
                        array("=ID" => $ID, "CHECK_PERMISSIONS" => "N", "SHOW_NEW" => "Y"),
                        false, false,
                        array("ID", "NAME", "LIST_PAGE_URL", "CODE")
                    );
                    $arElement = $rsElement->GetNext();
                    $res = array(
                        "ID" => $ID,
                        "CODE" => $arElement["CODE"],
                        "NAME" => $arElement["NAME"],
                        "ELEMENT_NAME" => $arIBlock["ELEMENT_NAME"],
                        "USER_ID" => $this->userId, // $USER_ID
                        "IBLOCK_PAGE_URL" => $arElement["LIST_PAGE_URL"],
                    );
                    CEventLog::Log(
                        "IBLOCK",
                        "IBLOCK_ELEMENT_EDIT",
                        "iblock",
                        $arIBlock["ID"],
                        serialize($res)
                    );
                }
            }
            $Result = true;

            /************* QUOTA *************/
            $_SESSION["SESS_RECOUNT_DB"] = "Y";
            /************* QUOTA *************/
        }

        $arFields["ID"] = $ID;
        $arFields["IBLOCK_ID"] = $ar_element["IBLOCK_ID"];
        $arFields["RESULT"] = &$Result;

        if(
            isset($arFields["PREVIEW_PICTURE"])
            && is_array($arFields["PREVIEW_PICTURE"])
            && $arFields["PREVIEW_PICTURE"]["COPY_FILE"] == "Y"
            && $arFields["PREVIEW_PICTURE"]["copy"]
        )
        {
            @unlink($arFields["PREVIEW_PICTURE"]["tmp_name"]);
            @rmdir(dirname($arFields["PREVIEW_PICTURE"]["tmp_name"]));
        }

        if(
            isset($arFields["DETAIL_PICTURE"])
            && is_array($arFields["DETAIL_PICTURE"])
            && $arFields["DETAIL_PICTURE"]["COPY_FILE"] == "Y"
            && $arFields["DETAIL_PICTURE"]["copy"]
        )
        {
            @unlink($arFields["DETAIL_PICTURE"]["tmp_name"]);
            @rmdir(dirname($arFields["DETAIL_PICTURE"]["tmp_name"]));
        }

        foreach (GetModuleEvents("iblock", "OnAfterIBlockElementUpdate", true) as $arEvent)
            ExecuteModuleEventEx($arEvent, array(&$arFields));

        CIBlock::clearIblockTagCache($arIBlock['ID']);

        return $Result;
    }

‘;

Returns a list of available fields for filtering and a list of custom handlers.

336 {

337 $availableFields = array(«ID», «ACTIVE», «NAME», «TAGS», «XML_ID», «EXTERNAL_ID», «PREVIEW_TEXT»,

338 «PREVIEW_TEXT_TYPE», «PREVIEW_PICTURE», «DETAIL_TEXT», «DETAIL_TEXT_TYPE», «DETAIL_PICTURE»,

339 «CHECK_PERMISSIONS», «PERMISSIONS_BY», «CATALOG_TYPE», «MIN_PERMISSION», «SEARCHABLE_CONTENT»,

340 «SORT», «TIMESTAMP_X», «DATE_MODIFY_FROM», «DATE_MODIFY_TO», «MODIFIED_USER_ID», «MODIFIED_BY»,

341 «DATE_CREATE», «CREATED_USER_ID», «CREATED_BY», «DATE_ACTIVE_FROM», «DATE_ACTIVE_TO», «ACTIVE_DATE»,

342 «ACTIVE_FROM», «ACTIVE_TO», «SECTION_ID»);

343

344 $listCustomFields = [];

345

346 $fields = $this->listObject->getFields();

347

348 foreach ($fields as $field)

349 {

350 if ($field[«CODE»] <> »)

351 {

352 $availableFields[] = «PROPERTY_».$field[«CODE»];

353 }

354

355 if ($this->isFieldDateType($field[«TYPE»]))

356 {

357 $callback = $field[«PROPERTY_USER_TYPE»][«ConvertToDB»];

358 $listCustomFields[$field[«FIELD_ID»]] = function ($value) use ($callback) {

359 $regexDetectsIso8601 = ‘/^([+-]?d{4}(?!d{2}b))’

360 . ‘((-?)((0[1-9]|1[0-2])(3([12]d|0[1-9]|3[01]))?’

361 . ‘|W([0-4]d|5[0-2])(-?[1-7])?|(00[1-9]|0[1-9]d’

362 . ‘|[12]d{2}|3([0-5]d|6[1-6])))([Ts]((([01]d|2[0-3])’

363 . ‘((:?)[0-5]d)?|24:?00)([.,]d+(?!:))?)?(17[0-5]d’

364 . ‘([.,]d+)?)?([zZ]|([+-])([01]d|2[0-3]):?([0-5]d)?)?)?)?$/’;

365 if (preg_match($regexDetectsIso8601, $value) === 1)

366 {

367 return CRestUtil::unConvertDateTime($value);

368 }

369 elseif (is_callable($callback))

370 {

371 return call_user_func_array($callback, [[], [«VALUE» => $value]]);

372 }

373 else

374 {

375 return $value;

376 }

377 };

378 }

379 }

380

381 $availableFields = array_merge($availableFields, array_keys($fields));

382

383 return array($availableFields, $listCustomFields);

384 }

Элементы

08.09.2013

Здесь приведены примеры использования основных функций класса
CIBlockElement.
Примеры бессмысленны, служат как образец для вставки в код. Скопируй и удали лишнее.
А также, даны ссылки на подробное описание в документации битрикса.

Подключаем функции модуля iblock

 
CModule::IncludeModule('iblock');

Получение элементов, функция GetList


$arResult['ITEMS'] = array();
$arFilter = array(		
    'ACTIVE' => 'Y',
    'SECTION_ACTIVE' => 'Y',
    'SECTION_GLOBAL_ACTIVE' => 'Y',
    'IBLOCK_ID' => $arParams['IBLOCK_ID'],
    'SECTION_ID' => $arParams['SECTION_ID'],
    'INCLUDE_SUBSECTIONS' => 'Y',
);
$arSelect = array('IBLOCK_ID','ID','NAME','DETAIL_PAGE_URL','PREVIEW_TEXT','DATE_ACTIVE_FROM');
$arOrder = array('SORT'=>'ASC','DATE_ACTIVE_FROM' => 'DESC');
$arGroupBy = array('ID'); //default = false
$arNavStartParams = array(//default = false
    'nTopCount' => 10,
    'iNumPage' => $arParams['PAGE'],
    'nPageSize' => $arParams['COUNT_ON_PAGE'], 
    'nElementID' => $arResult['ELEMENT']['ID'], 
);
$rsElement = CIBlockElement::GetList($arOrder, $arFilter, $arGroupBy, $arNavStartParams, $arSelect);
while($obElement = $rsElement->GetNextElement()){
        $arItem = $obElement->GetFields();
        $arItem['PROP'] = $obElement->GetProperties(); //Получение свойств
        $arResult['ITEMS'][] = $arItem;		
}
$arResult['NAV_STRING'] = $rsElement->GetPageNavString('');

Функция GetList в документации битрикса

Модификаторы фильтров $arFilter:
Число,
Дата,
Маска,
Строка

Фильтр со сложной логикой:

Вложенность фильтров теоретически не ограничена.


$arFilter = array(
    "IBLOCK_ID" => $IBLOCK_ID,
    array(
        "LOGIC" => "OR",//"AND" по умолчанию
        array("PROPERTY_RADIUS" => 50, "=PROPERTY_CONDITION" => "Y"),
        array(">=PROPERTY_RADIUS" => 50, "!=PROPERTY_CONDITION" => "Y"),
    ),
);

Фильтр с подзапросом:

К полю ID применим подзапрос:

CIBlockElement::SubQuery(string strField, array arFilter), где
strField — Название поля, по которому будет осуществляться фильтрация. (ID | PROPERTY_#PROPERTY_CODE# — привязка к элементам);
arFilter — Фильтр, аналогичный фильтру основному запросу;
Функция SubQuery в документации битрикса


$arFilter = array(
      "ID" => CIBlockElement::SubQuery("PROPERTY_AUTHOR", array(
        "IBLOCK_ID" => $BOOK_IBLOCK,
        ">=PROPERTY_PRINT_DATE" => "2000-01-01 00:00:00",
      )),
);

Функция GetPageNavString($navigationTitle, $templateName = «», $showAlways=false);

Функция возвращает html блок с постраничкой, где

$navigationTitle — заголовок;
$templateName — шаблон комнонента system.pagenavigation;
$showAlways — выводить всегда(Y|N);

Поля элементов инфоблока

ID PREVIEW_PICTURE MODIFIED_BY
CODE PREVIEW_TEXT USER_NAME
XML_ID PREVIEW_TEXT_TYPE LANG_DIR
NAME DETAIL_PICTURE LIST_PAGE_URL
IBLOCK_ID DETAIL_TEXT DETAIL_PAGE_URL
IBLOCK_SECTION_ID DETAIL_TEXT_TYPE SHOW_COUNTER
IBLOCK_CODE SEARCHABLE_CONTENT SHOW_COUNTER_START
ACTIVE DATE_CREATE WF_COMMENTS
DATE_ACTIVE_FROM CREATED_BY WF_STATUS_ID
DATE_ACTIVE_TO CREATED_USER_NAME LOCK_STATUS
SORT TIMESTAMP_X TAGS

Добавление / обновление элементов


$el = new CIBlockElement;

$PROP = array();
$PROP['AUTHOR'] = "Михаил"; 
$PROP['LINK'] = 38;      

$arLoadProductArray = Array(
  'IBLOCK_ID'      => 18,
  'PROPERTY_VALUES'=> $PROP,//Должны быть указаны ВСЕ свойства, не указаные БУДУТ ЗАТЕРТЫ.
  'NAME'           => 'Элемент',
  'ACTIVE'         => 'Y',     
  'DATE_ACTIVE_FROM'    => ConvertTimeStamp($linuxTimeStamp,'FULL'),       
  'PREVIEW_TEXT'   => 'текст для списка элементов',
  'PREVIEW_TEXT_TYPE'   => 'html', 
  'DETAIL_PICTURE' => CFile::MakeFileArray($_SERVER['DOCUMENT_ROOT'].'/image.gif'),
  );

if ($PRODUCT_ID) { //Обновим элемент
    if (!$res = $el->Update($PRODUCT_ID, $arLoadProductArray)){
        echo "Error: ".$el->LAST_ERROR;
    }
} else { //Добавим элемент
    if (!$PRODUCT_ID = $el->Add($arLoadProductArray)){
        echo "Error: ".$el->LAST_ERROR;
    }
}

Функция Add в документации битрикса,
Функция Update в документации битрикса,

Обновление свойств элемента

Неуказанные свойства НЕ будут затерты


$ELEMENT_ID = 18;  // код элемента
$PROP = array();
$PROP['AUTHOR'] = "Михаил"; 
$PROP['LINK'] = 38;  
CIBlockElement::SetPropertyValuesEx($ELEMENT_ID, $IBLOCK_ID, $PROP);

Функция SetPropertyValuesEx в документации битрикса

Понравилась статья? Поделить с друзьями:
  • Bitrix catalog 404 ошибка
  • Bitrix 410 error processing file
  • Bitmos oxy 6000 o2 error
  • Bitmap manager error file could not be found 3ds max
  • Bitlocker driver ошибка 24620 windows 10