тоже сталкивался с проблемой извлечения сложных свойств...
1. лучше чтобы ИБ был в отдельной таблице, как-то 2 дня бился не мог разобрать значение свойства, там было что-то непонятное - ни строка, ни массив, пока не перевёл в отдельную таблицу ИБ и массив стал массивом.
2. как обычно делаем CIBlockElement::GetList()
но потом разбираем не с помощью Fetch(), а посредством GetNextElement()
вот пример:
[CODE] $arOrder = Array("NAME"=>"ASC");
$arFilter = Array("IBLOCK_ID"=>$arParams["IBLOCK_GOODS"],"ACTIVE"=>"Y");
$arGroupBy = false;
$arNavStartParams = false;
$arSelectedFields = false;
$ItemsList = CIBlockElement::GetList($arOrder,$arFilter,$arGroupBy,$arNavStartParams,$arSelectedFields);
while($Items = $ItemsList->GetNextElement()) {
$arItems[] = Array(
"INGREDIENTS"=>$Items->GetProperty("INGREDIENTS"),
"SEC_SITE"=>$Items->GetProperty("SEC_SITE"),
"CML2_TRAITS"=>$Items->GetProperty("CML2_TRAITS"),
);
}[/CODE]