Bitrix Help
Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors
Главная » API Битрикс » CIBlockSection » CIBlockSection::GetList в Битрикс — получение разделов инфоблока

CIBlockSection::GetList в Битрикс — получение разделов инфоблока

Обновлено: 2026 • Раздел: CIBlockSection


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

Краткий ответ

Для получения разделов инфоблока необходимо вызвать метод CIBlockSection::GetList(), указав параметры сортировки и фильтрации.

<?php

$res = CIBlockSection::GetList(
    ["SORT" => "ASC"],
    ["IBLOCK_ID" => 5]
);

while ($section = $res->Fetch()) {
    echo $section["NAME"]."<br>";
}

Описание функции

Метод выполняет выборку разделов инфоблока из базы данных и возвращает объект результата, который можно обрабатывать через методы Fetch(), GetNext() или GetNextElement().

CIBlockSection::GetList поддерживает фильтрацию по инфоблоку, активности, родительскому разделу, глубине вложенности, символьному коду и другим параметрам.

Метод широко используется при построении меню каталога, хлебных крошек, дерева категорий и страниц разделов интернет-магазинов.

Синтаксис

CIBlockResult CIBlockSection::GetList(
    array $arOrder = [],
    array $arFilter = [],
    bool $bIncCnt = false,
    array $arSelect = []
);

Параметры

Параметр Тип Описание
$arOrder array Массив сортировки результата.
$arFilter array Фильтр разделов.
$bIncCnt bool Подсчет количества элементов в разделе.
$arSelect array Список выбираемых полей.

Популярные поля фильтра

Поле Описание
IBLOCK_ID ID инфоблока.
ACTIVE Активность раздела.
ID ID раздела.
SECTION_ID ID родительского раздела.
CODE Символьный код раздела.
DEPTH_LEVEL Уровень вложенности.
GLOBAL_ACTIVE Активность с учетом родительских разделов.

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

Получение всех разделов инфоблока

<?php

$res = CIBlockSection::GetList(
    ["LEFT_MARGIN" => "ASC"],
    [
        "IBLOCK_ID" => 5,
        "ACTIVE" => "Y"
    ]
);

while ($section = $res->Fetch()) {
    echo $section["NAME"]."<br>";
}

Получение дочерних разделов

<?php

$res = CIBlockSection::GetList(
    ["SORT" => "ASC"],
    [
        "IBLOCK_ID" => 5,
        "SECTION_ID" => 10
    ]
);

while ($section = $res->Fetch()) {
    print_r($section);
}

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

<?php

$res = CIBlockSection::GetList(
    [],
    [
        "IBLOCK_ID" => 5,
        "CODE" => "notebooks"
    ]
);

$section = $res->Fetch();

echo $section["ID"];

Получение количества элементов в разделе

<?php

$res = CIBlockSection::GetList(
    [],
    [
        "IBLOCK_ID" => 5
    ],
    true
);

while ($section = $res->Fetch()) {
    echo $section["NAME"];
    echo " (".$section["ELEMENT_CNT"].")";
}

Выборка только нужных полей

<?php

$res = CIBlockSection::GetList(
    [],
    [
        "IBLOCK_ID" => 5
    ],
    false,
    [
        "ID",
        "NAME",
        "CODE"
    ]
);

Типичные ошибки

Не указан IBLOCK_ID

CIBlockSection::GetList(
    [],
    []
);

Без фильтра по инфоблоку запрос может вернуть большое количество ненужных данных.


Использование SORT вместо LEFT_MARGIN для дерева

["SORT" => "ASC"]

Для корректного построения дерева разделов рекомендуется использовать сортировку по LEFT_MARGIN.


Ожидание количества элементов без bIncCnt

$section["ELEMENT_CNT"]

Поле ELEMENT_CNT будет доступно только при передаче третьего параметра true.


Использование Fetch вместо GetNext

Метод Fetch возвращает данные без HTML-обработки и дополнительных преобразований.

$section = $res->GetNext();

Для вывода данных в шаблонах чаще используется GetNext.

Аналог на D7

В новых проектах рекомендуется использовать ORM D7.

<?php

use Bitrix\Iblock\SectionTable;

$result = SectionTable::getList([
    'select' => [
        'ID',
        'NAME',
        'CODE'
    ],
    'filter' => [
        '=IBLOCK_ID' => 5,
        '=ACTIVE' => 'Y'
    ],
    'order' => [
        'LEFT_MARGIN' => 'ASC'
    ]
]);

while ($section = $result->fetch()) {
    print_r($section);
}

ORM обеспечивает более удобную работу с выборками и соответствует современным стандартам разработки на Битрикс.

FAQ

Что возвращает CIBlockSection::GetList?

Метод возвращает объект выборки CIBlockResult.

Как получить раздел по символьному коду?

[
    "IBLOCK_ID" => 5,
    "CODE" => "catalog"
]

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

[
    "ACTIVE" => "Y"
]

Как узнать количество элементов в разделе?

Передайте третий параметр метода со значением true и используйте поле ELEMENT_CNT.

Как получить дерево разделов?

Используйте сортировку по полю LEFT_MARGIN.

[
    "LEFT_MARGIN" => "ASC"
]

Что использовать в новых проектах?

Для новых разработок рекомендуется использовать Bitrix\Iblock\SectionTable и ORM D7. Метод CIBlockSection::GetList остается актуальным для поддержки существующих проектов и готовых решений на 1С-Битрикс.

Услуги


База знаний