Обновление основныех элементов инфоблока 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.