Выбросить этот код и написать все заново. У Вас проблема с формированием массива $arsections перед вызовом GetIBlockElementListEx. Вообще непонятно, зачем такие сложности. Т.е. я понял, что для начала Вы проверяете, есть ли в выбранной секции подсекции. Но потом вообще страсти господни идут. Если Вам надо получить список производителей от корня до конца, список секций Вам вообще не нужен. Используйте самый простой вариант:
[CODE]
$rsItems = CIBlockElement::GetList(array(),array('IBLOCK_ID' => $block_id,'!PROPERTY_PRODUCER' =>false),)
array('PROPERTY_PRODUCER'),false,array('PROPERTY_PRODUCER'));
while ($arItem = $rsItems->GetNext(true,false))
{
echo '<pre>'; var_export($arItem); echo '</pre>'; // тут уже свою обработку ставьте
}
[/CODE]