Примерно так:
[CODE]
$res=[];
$dbEl = \CIBlockElement::GetList(array('sort' => 'asc'), array('IBLOCK_ID'=>14,), false, false, Array('ID','NAME','CODE','IBLOCK_SECTION_ID'));
while ($obEl = $dbEl->Fetch())
{
$res[$obEl['ID']]['ID']=$obEl['ID'];
$res[$obEl['ID']]['NAME']=$obEl['NAME'];
$res[$obEl['ID']]['CODE']=$obEl['CODE'];
$res[$obEl['ID']]['SECTION_ID']=$obEl['IBLOCK_SECTION_ID'];
$res[$obEl['ID']]['GROUP']=[];
$db_old_groups = \CIBlockElement::GetElementGroups($obEl['ID'], true);
while($ar_group = $db_old_groups->Fetch()){
$navChain = \CIBlockSection::GetNavChain($ar_group["IBLOCK_ID"], $ar_group["ID"]);
while ($arNav=$navChain->GetNext()){
$res[$obEl['ID']]['GROUP'][$ar_group["ID"]][]=$arNav['ID'];
}
}
}
echo "<pre>";print_r($res);echo "</pre>";
[/CODE]
только учтите что если элементов очень много, то может не хватить памяти или времени выполнения
[CODE]
$res=[];
$dbEl = \CIBlockElement::GetList(array('sort' => 'asc'), array('IBLOCK_ID'=>14,), false, false, Array('ID','NAME','CODE','IBLOCK_SECTION_ID'));
while ($obEl = $dbEl->Fetch())
{
$res[$obEl['ID']]['ID']=$obEl['ID'];
$res[$obEl['ID']]['NAME']=$obEl['NAME'];
$res[$obEl['ID']]['CODE']=$obEl['CODE'];
$res[$obEl['ID']]['SECTION_ID']=$obEl['IBLOCK_SECTION_ID'];
$res[$obEl['ID']]['GROUP']=[];
$db_old_groups = \CIBlockElement::GetElementGroups($obEl['ID'], true);
while($ar_group = $db_old_groups->Fetch()){
$navChain = \CIBlockSection::GetNavChain($ar_group["IBLOCK_ID"], $ar_group["ID"]);
while ($arNav=$navChain->GetNext()){
$res[$obEl['ID']]['GROUP'][$ar_group["ID"]][]=$arNav['ID'];
}
}
}
echo "<pre>";print_r($res);echo "</pre>";
[/CODE]
только учтите что если элементов очень много, то может не хватить памяти или времени выполнения