[CODE]Как сделан компонент. Выбирается список разделов CIBlockSection::GetList с сортировкой 'LEFT_MARGIN' => 'ASC'. Далее в цикле для каждого раздела запрашивается список прикрепленных элементов [/CODE]
Если это всё вам нужно на одной странице, то можете попробовать выбрать одним запросом сначала все секции.
Потом вторым все элементы ИБ, находящиеся или в родительском или подчинённых узлах. Всё дерево получается.
Для каждого элемента там будет указан ID секции к которой он пренадлежит если он к одной секции привязан.
Потом обойдите этот рекордсет и соберите айдишники файлов и сделайте запрос к таблице файлов.
В шаблоне уже обходите к примеру массив с секциями и одновременно выбирайте на каждой итерации из массивов ИБ и Файлов нужные элементы.
Вы главное не увлекайтесь черезмерной оптимизайией, а то получится что вот эти 3 запроса и потом развешиване результатов по ресурсам вам обойдутся дороже кучи маленьких последовательных запросов.
Думаю тут завсегдатаи ещё всякого полезного насоветуют.
Если это всё вам нужно на одной странице, то можете попробовать выбрать одним запросом сначала все секции.
Потом вторым все элементы ИБ, находящиеся или в родительском или подчинённых узлах. Всё дерево получается.
Для каждого элемента там будет указан ID секции к которой он пренадлежит если он к одной секции привязан.
Потом обойдите этот рекордсет и соберите айдишники файлов и сделайте запрос к таблице файлов.
В шаблоне уже обходите к примеру массив с секциями и одновременно выбирайте на каждой итерации из массивов ИБ и Файлов нужные элементы.
Вы главное не увлекайтесь черезмерной оптимизайией, а то получится что вот эти 3 запроса и потом развешиване результатов по ресурсам вам обойдутся дороже кучи маленьких последовательных запросов.
Думаю тут завсегдатаи ещё всякого полезного насоветуют.