В результате написал функцию которая принимает 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 передаются идентификаторы необходимых значений свойств.
Для получения идентификатора по значению, я привёл ссылку на соответствующую функцию.