Блог разработчика 1С-Битрикс

Нахождение ID раздела инфоблока с помощью метода CIBlockFindTools::GetSectionID

Метод CIBlockFindTools::GetSectionID в Bitrix используется для получения идентификатора раздела инфоблока по его коду. Этот метод полезен, когда вам нужно получить ID раздела, зная только его символьный код.

Как использовать CIBlockFindTools::GetSectionID для поиска ID раздела инфоблока

Описание метода

Метод GetSectionID принимает три параметра:

  1. $section_id - это идентификатор раздела инфоблока. Если этот параметр указан, метод вернет его значение, игнорируя другие параметры.
  2. $section_code - это символьный код раздела инфоблока. Если он указан, метод вернет идентификатор раздела, соответствующий этому символьному коду.
  3. $arFilter - это массив параметров, используемых для фильтрации разделов инфоблока. Этот массив должен содержать один или несколько ключей, которые соответствуют полям раздела инфоблока.

Метод возвращает идентификатор раздела, если раздел с указанным кодом существует, или false, если раздел не найден.

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

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


use Bitrix\Iblock\SectionTable;
use Bitrix\Main\Loader;
use Bitrix\Iblock;

Loader::includeModule("iblock");

// Идентификатор инфоблока
$iblockId = 1;

// Символьный код раздела
$sectionCode = 'my_section_code';

// Получение ID раздела
$sectionId = CIBlockFindTools::GetSectionID(false, $sectionCode, [$iblockId]);

if ($sectionId) {
    echo "ID раздела: " . $sectionId;
} else {
    echo "Раздел не найден.";
}
    

Пример 2: Использование в контексте работы с элементами инфоблока

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


use Bitrix\Iblock\ElementTable;
use Bitrix\Main\Loader;
use Bitrix\Iblock;

Loader::includeModule("iblock");

// Идентификатор инфоблока
$iblockId = 1;

// Символьный код раздела
$sectionCode = 'my_section_code';

// Получение ID раздела
$sectionId = CIBlockFindTools::GetSectionID(false, $sectionCode, $iblockId);

if ($sectionId) {
    // Получение элементов раздела
    $elements = Iblock\ElementTable::getList([
        'filter' => ['IBLOCK_ID' => $iblockId, 'IBLOCK_SECTION_ID' => $sectionId],
        'select' => ['ID', 'NAME']
    ])->fetchAll();

    foreach ($elements as $element) {
        echo "ID элемента: " . $element['ID'] . ", Название: " . $element['NAME'] . "<br>";
    }
} else {
    echo "Раздел не найден.";
}
    

Заключение

Метод CIBlockFindTools::GetSectionID удобен для работы с разделами инфоблоков, когда вам нужно получить ID раздела по его символьному коду. Это позволяет гибко управлять структурой инфоблоков и динамически работать с разделами, не привязываясь к жестко закодированным идентификаторам.

Теги: CIBlockFindTools::GetSectionID, поиск ID раздела, символьный код раздела, ID инфоблока, работа с инфоблоками, 1С-Битрикс, примеры CIBlockFindTools, разделы инфоблоков, символьные коды в Битрикс, GetSectionID примеры.


Валерий Макеев
09.09.2025 17:13
Этот код находит ID раздела с символьным кодом 'news' в инфоблоке 2 и выводит сообщение с ID, если раздел найден, или сообщает об отсутствии раздела.
Код
<?php
use Bitrix\Main\Loader;
use Bitrix\Iblock;

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/header.php");

Loader::includeModule("iblock");

// Получаем ID раздела инфоблока по символьному коду 'news' для инфоблока с ID 2
$sectionId = CIBlockFindTools::GetSectionID(false, 'news', ['IBLOCK_ID' => 2]);

if ($sectionId) {
    echo "Найден раздел с ID: " . $sectionId;
} else {
    echo "Раздел с кодом 'news' в инфоблоке 2 не найден.";
}

require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/footer.php");
?>

Стоимость услуг по разработке и сопровождению сайтов на 1C-Битрикс

Интернет-магазин на готовом решении

от 7 дней

от 40 000 рублей
запуск сайта в максимально короткие сроки

* указана минимальная стоимость. Стоимость выбранной лицензии «1С-Битрикс» оплачивается отдельно.

Участие в проекте

привлечение в проект на part-time основе

от 30 000 рублей / неделя

Возможно участие в проекте на ежедневной основе, как разработчика. Занятость - до 20 часов в неделю
Минимальный срок - одна неделя.

* сумма фиксированная

Аутсорсинг

готов помочь, если нет времени

договорная

Могу взять на себя работы по full-stack

* на основе готовой верстки