Главная » API Битрикс » CIBlock: GetList, Add, Update, Delete в Битрикс

CIBlock: GetList, Add, Update, Delete в Битрикс

Методы класса CIBlock в Битрикс: создание, обновление, получение списка и удаление инфоблока как контейнера

CIBlock — класс для работы с самими инфоблоками из кода: их созданием, изменением настроек и удалением. Не путайте с CIBlockElement, который работает с элементами внутри инфоблока, — здесь речь о самом контейнере.

Получение списка инфоблоков

<?php

$result = CIBlock::GetList(
    ['SORT' => 'ASC'],
    ['TYPE' => 'catalog', 'ACTIVE' => 'Y']
);

while ($iblock = $result->Fetch()) {
    echo $iblock['ID'] . ' — ' . $iblock['NAME'] . PHP_EOL;
}

Первый параметр — сортировка, второй — фильтр. Частые условия фильтра: TYPE (код типа инфоблока), ACTIVE, SITE_ID для многосайтовой конфигурации.

Получение одного инфоблока по ID

<?php

$iblock = CIBlock::GetArrayByID(5);

echo $iblock['NAME'];
echo $iblock['CODE'];

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

Нужна помощь с Битрикс?





    Создание инфоблока

    <?php
    
    $ib = new CIBlock;
    
    $fields = [
        'ACTIVE'          => 'Y',
        'NAME'            => 'Портфолио',
        'CODE'            => 'portfolio',
        'IBLOCK_TYPE_ID'  => 'content',
        'SITE_ID'         => ['s1'],
        'SORT'            => 100,
        'GROUP_ID'        => ['2' => 'R'], // права доступа для группы
    ];
    
    $id = $ib->Add($fields);
    
    if ($id) {
        echo 'Создан инфоблок с ID ' . $id;
    } else {
        echo 'Ошибка: ' . $ib->LAST_ERROR;
    }

    Обратите внимание на GROUP_ID — права доступа задаются сразу при создании массивом вида «идентификатор группы» → «уровень доступа». Без этого параметра инфоблок создастся без прав ни для кого, кроме администратора, и не будет виден на публичной части.

    Обновление настроек

    <?php
    
    $ib = new CIBlock;
    
    $ib->Update(5, [
        'NAME' => 'Портфолио проектов',
        'SORT' => 50,
    ]);

    Метод Update принимает только те поля, которые нужно изменить, — остальные настройки инфоблока остаются прежними.

    Удаление

    <?php
    
    CIBlock::Delete(5);

    Удаление инфоблока удаляет и все его элементы, разделы и свойства — операция необратимая. Перед вызовом в production-коде разумно предусмотреть подтверждение и резервную копию, а не вызывать метод напрямую по условию.

    Работа со свойствами инфоблока из кода

    Сам класс CIBlock свойствами не занимается — для этого используется отдельный класс CIBlockProperty. Здесь важно различать уровни: CIBlock — настройки контейнера, CIBlockProperty — список характеристик, доступных элементам, а CIBlockElement — сами элементы с их конкретными значениями.

    Практический пример: создание инфоблока при установке модуля

    Частый сценарий — модуль или решение при первой установке проверяет, существует ли нужный инфоблок, и создаёт его, если нет:

    <?php
    
    $existing = CIBlock::GetList([], ['CODE' => 'reviews', 'TYPE' => 'content'])->Fetch();
    
    if (!$existing) {
        $ib = new CIBlock;
        $id = $ib->Add([
            'ACTIVE'         => 'Y',
            'NAME'           => 'Отзывы',
            'CODE'           => 'reviews',
            'IBLOCK_TYPE_ID' => 'content',
            'SITE_ID'        => ['s1'],
            'GROUP_ID'       => ['2' => 'R'],
        ]);
    }

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

    Частые ошибки

    • Не заданы права доступа при создании. Инфоблок не выводится на сайте, хотя создан без ошибок.
    • Символьный код не задан или не уникален. Затрудняет обращение к инфоблоку из компонентов, где принято использовать код, а не числовой ID.
    • Удаление без проверки условия. Из-за ошибки в логике можно удалить не тот инфоблок безвозвратно.
    • Путаница между CIBlock и CIBlockElement. Первый работает с самим контейнером, второй — с содержимым внутри него.

    Итог

    CIBlock отвечает за сам инфоблок как сущность: создание, изменение настроек, удаление и получение списка. Из четырёх основных методов — GetList, GetArrayByID, Add, Update, Delete — на практике важнее всего не забывать про GROUP_ID при создании: без прав доступа новый инфоблок останется невидимым для посетителей сайта.

    Нужна помощь с Битрикс?

    Исправим ошибку, доработаем сайт, ускорим Битрикс или поможем разобраться с проблемой.

    Услуги
    База знаний