//Получаем корневую секцию и вытаскиваем три примущества
//Функция рекурсивно просматриват все категории к которым принадлежит товар до самой корневой
//Если находит информацию об одном из свойств которые переданы в параметре в виде массива
//выводит текстовое содержимое в масиив результата для дальнейшей распечатки в шаблоне!
function getGroupsFree($id, $type_el = TRUE, $type_info) {
$text = [];
if($type_el){
$db_old_groups = CIBlockElement::GetElementGroups($id, true);
while($ar_group = $db_old_groups->Fetch()) {
//Запрашиваем есть ли поле привязки, если нет то идем дальше
$ar_id_infoblock = CIBlockSection::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>2, "ID"=>$ar_group['ID'], '!'.$type_info =>"" ), false, $type_info);
if($res = $ar_id_infoblock->Fetch()){
foreach ($type_info as $key => $value) {
if (isset($res[$value]) && !empty($res[$value])) {
$text[$value] = $res[$value];
}
}
if(empty($text)) {
$text = getGroupsFree($ar_group['IBLOCK_SECTION_ID'], FALSE, $type_info);
}
} else {
$text = getGroupsFree($ar_group['IBLOCK_SECTION_ID'], FALSE, $type_info);
}
}
} else {
//Запрашиваем ещё раз подгруппу
$ar_id_infoblock = CIBlockSection::GetList(array("SORT"=>"ASC"), array("IBLOCK_ID"=>2, "ID"=>$id, '!'.$type_info =>"" ), false, $type_info);
if($res = $ar_id_infoblock->Fetch()){
foreach ($type_info as $key => $value) {
if (isset($res[$value]) && !empty($res[$value])) {
$text[$value] = $res[$value];
}
}
if(empty($text)) {
$text = getGroupsFree($ar_group['IBLOCK_SECTION_ID'], FALSE, $type_info);
}
}
}
return $text;
}
$arResult['ADVANTAGES'] = getGroupsFree($arResult['ID'], TRUE, array('UF_ADVANTAGES_1', 'UF_ADVANTAGES_2', 'UF_ADVANTAGES_3'));