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