Как в bitrix установить свойство типа список(enum) у инфоблока методами api?

Интернет магазин на битрикс. Есть товары и торговые предложения.
У инфоблока торговых предложений создано свойство "Размер" код "SIZE". Данное свойство является списком(не множественное).
Как методами API поменять значение свойства(или установить если ещё не установлено)?
Отдельно подвопрос:
Допустим у меня уже созданы элементы списка свойства SIZE, например 4 следующих: "100*100","100*150","150*150","150*200"
И предположим мне нужно у элемента инфоблока торговых предложений, предположим с кодом 100 установить значение свойства SIZE "300*400" которого ещё нет в списке. Как оптимальнее это делать?
  • Вопрос задан
  • 695 просмотров
Решения вопроса 1
nikolaevevge
@nikolaevevge Автор вопроса
В результате написал функцию которая принимает 3 параметра: 1) значение которое должно быть у списочного свойства, 2) Ид инфоблока, 3) код свойства - функция возвращает Ид существующего свойства, а если не найдёт - создает запись в свойстве и возвращает её Ид. При ошибке возвращается false

Код функции и примеры использования тут blog.ivru.net/?id=175

Непосредственно по заданному вопросу, создание товаров или торговых предложений с привязкой свойства типа список(enum) осуществляется следующим образом:

$el = new CIBlockElement;

$arLoadProductArray = array(
  "IBLOCK_ID"=>2, // IBLOCK торговых предложений
  "NAME"=>"Имя торгового предложения",
  "ACTIVE"=>"Y",
  "PROPERTY_VALUES"=>array(
    "CML2_LINK"=>$PRODUCT_ID, // Свойство типа "Привязка к товарам (SKU)", связываем торг. предложение с товаром
    "CML2_ARTICLE"=>"Артикул торгового предложения",
    "SIZE"=>$sizePropId,
    "CLOTH"=>$clothPropId
  )
);

$product_offer_id = $el->Add($arLoadProductArray);


В коде выше у меня свойства SIZE и CLOTH типа список(enum) в переменных $sizePropId и $clothPropId передаются идентификаторы необходимых значений свойств.

Для получения идентификатора по значению, я привёл ссылку на соответствующую функцию.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
alexyarik
@alexyarik
Битрикс разработчик
1) Обновить списочное свойство
CIBlockPropertyEnum::GetList - получаете ID значения свойства списка
CIBlockElement::SetPropertyValues - обновляете свойство элемента используя ID значения свойства списка
2) Добавить списочное свойство
Если ID значения свойства списка пустое, тогда:
$ibpenum = new CIBlockPropertyEnum;
if($PropID = $ibpenum->Add() 
{CIBlockElement::SetPropertyValues

Тут подробнее https://dev.1c-bitrix.ru/api_help/iblock/classes/c...
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы