Главная страница / Блог / Получение разделов инфоблока с помощью CIBlockSection::GetList()
1С-Битрикс

Получение разделов инфоблока с помощью CIBlockSection::GetList()

29 июня 2026 7 минут чтения 3438 просмотров

Практически в каждом проекте на 1С-Битрикс возникает задача получить список разделов инфоблока: вывести меню каталога, построить дерево категорий, получить изображения разделов или просто сформировать навигацию. Для этого в классическом API используется метод CIBlockSection::GetList().

Несмотря на то что в новых версиях Битрикса появился D7 API, данный метод до сих пор активно применяется в реальных проектах и полностью подходит для большинства задач.

CIBlockSection::GetList(
    array $arOrder = ["SORT" => "ASC"],
    array $arFilter = [],
    bool $bIncCnt = false,
    array $arSelect = [],
    array $arNavStartParams = false
);

Пример использования

Допустим, необходимо вывести все разделы каталога товаров. Сначала узнаем ID нужного инфоблока в административной панели.

В качестве фильтра достаточно указать идентификатор инфоблока:

$arFilter = [
    'IBLOCK_ID' => 19
];

Далее определяем, какие поля нам понадобятся. Нет смысла выбирать всё подряд — лучше получать только необходимые данные.

$arSelect = [
    'ID',
    'NAME',
    'SECTION_PAGE_URL',
    'PICTURE'
];

После этого остается выполнить запрос и обработать результат.

$rsSections = CIBlockSection::GetList(
    ['SORT' => 'ASC'],
    $arFilter,
    false,
    $arSelect
);

while ($arSection = $rsSections->GetNext())
{
    echo '<pre>';
    print_r($arSection);
    echo '</pre>';
}

Получение данных

После выполнения метода можно получать данные несколькими способами.

GetNext()

Самый популярный вариант. Возвращает массив с уже обработанными значениями и автоматически приводит некоторые поля к удобному виду.

while ($arSection = $rsSections->GetNext())
{
    echo $arSection['NAME'];
}

Fetch()

Возвращает данные без дополнительной обработки. Используется немного реже, но иногда бывает полезен при работе с оригинальными значениями полей.

while ($arSection = $rsSections->Fetch())
{
    echo $arSection['NAME'];
}

Несколько полезных примеров

Получить только активные разделы

$arFilter = [
    'IBLOCK_ID' => 19,
    'ACTIVE' => 'Y'
];

Получить только корневые разделы

$arFilter = [
    'IBLOCK_ID' => 19,
    'SECTION_ID' => false
];

Получить подразделы определенного раздела

$arFilter = [
    'IBLOCK_ID' => 19,
    'SECTION_ID' => 15
];

Поиск раздела по символьному коду

$arFilter = [
    'IBLOCK_ID' => 19,
    '=CODE' => 'catalog'
];

Пользовательские поля разделов

Метод позволяет получать пользовательские поля (UF_*). Главное условие — в фильтре обязательно должен быть указан конкретный IBLOCK_ID.

$arSelect = [
    'ID',
    'NAME',
    'UF_ICON',
    'UF_COLOR'
];

Если необходимо использовать фильтрацию по пользовательским полям, они также указываются в массиве $arFilter.

Заключение

Несмотря на появление D7 API, CIBlockSection::GetList() остается одним из самых востребованных методов при разработке сайтов на 1С-Битрикс. Он прост в использовании, хорошо документирован и позволяет решать большинство задач по работе с разделами инфоблоков без лишнего кода.

Комментарии

Будем рады вашему мнению и вопросам по статье.