Главная » API Битрикс » CIBlockSection » CIBlockSection::Delete в Битрикс — удаление разделов инфоблока

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

Метод CIBlockSection::Delete() используется для удаления раздела инфоблока по его идентификатору. Функция входит в старое API Битрикс и применяется для удаления категорий, разделов каталога и других структурных элементов инфоблоков.

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

Для удаления раздела используйте следующий код:

<?php

$sectionId = 15;

if (CIBlockSection::Delete($sectionId))
{
    echo 'Раздел удалён';
}
else
{
    echo 'Ошибка удаления';
}

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

Метод удаляет раздел инфоблока вместе со всеми связанными служебными данными. Во время выполнения Битрикс обновляет структуру дерева разделов, очищает необходимые кэши и вызывает системные события удаления.

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

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





    Синтаксис

    <?php
    
    bool CIBlockSection::Delete(
        int $ID
    );
    

    Параметры

    Параметр Тип Описание
    ID int Идентификатор раздела инфоблока.

    Возвращаемое значение

    • true — раздел успешно удалён.
    • false — при удалении возникла ошибка.

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

    Удаление раздела по ID

    <?php
    
    $sectionId = 25;
    
    $result = CIBlockSection::Delete($sectionId);
    
    if ($result)
    {
        echo 'Раздел успешно удалён';
    }
    

    Проверка существования перед удалением

    <?php
    
    $sectionId = 25;
    
    $arSection = CIBlockSection::GetByID($sectionId)->Fetch();
    
    if ($arSection)
    {
        CIBlockSection::Delete($sectionId);
    }
    

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

    <?php
    
    $res = CIBlockSection::GetList(
        [],
        [
            'IBLOCK_ID' => 7,
            '=CODE' => 'old-section'
        ]
    );
    
    if ($section = $res->Fetch())
    {
        CIBlockSection::Delete($section['ID']);
    }
    

    Массовое удаление разделов

    <?php
    
    $sectionIds = [10, 11, 12, 13];
    
    foreach ($sectionIds as $id)
    {
        CIBlockSection::Delete($id);
    }
    

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

    Удаление несуществующего раздела

    <?php
    
    CIBlockSection::Delete(999999);
    

    Если раздел не существует, метод вернёт false.

    Передача пустого идентификатора

    <?php
    
    CIBlockSection::Delete(0);
    

    Необходимо передавать корректный числовой идентификатор раздела.

    Отсутствие модуля iblock

    <?php
    
    if (!CModule::IncludeModule('iblock'))
    {
        die('Модуль инфоблоков не подключен');
    }
    

    Перед использованием API инфоблоков необходимо подключить модуль iblock.

    Недостаточные права доступа

    Пользователь или процесс выполнения скрипта должны обладать правами на изменение инфоблока.

    Удаление без проверки содержимого

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

    Аналог на D7

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

    <?php
    
    use Bitrix\Iblock\SectionTable;
    
    $result = SectionTable::delete(25);
    
    if ($result->isSuccess())
    {
        echo 'Раздел удалён';
    }
    else
    {
        echo implode('<br>', $result->getErrorMessages());
    }
    

    Для новых проектов рекомендуется использовать D7 API, поскольку он обеспечивает более удобную работу через ORM и поддерживает современную архитектуру Битрикс.

    FAQ

    Удаляются ли элементы внутри раздела?

    Зависит от структуры инфоблока и бизнес-логики проекта. Перед удалением рекомендуется проверить содержимое раздела.

    Можно ли удалить корневой раздел?

    Да, если позволяют права доступа и отсутствуют ограничения со стороны системы.

    Нужно ли очищать кэш вручную?

    Обычно нет. Битрикс автоматически очищает необходимые кэши после удаления.

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

    Напрямую нет. Сначала необходимо получить ID раздела через CIBlockSection::GetList(), после чего выполнить удаление.

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

    Для новых разработок рекомендуется использовать D7 ORM, однако CIBlockSection::Delete остаётся полностью рабочим и активно применяется в существующих проектах.


    CIBlockSection::Delete() — стандартный метод старого API Битрикс для удаления разделов инфоблоков. Он прост в использовании, автоматически выполняет необходимые системные операции и подходит как для административных скриптов, так и для интеграционных решений.

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

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

    Услуги
    Инструменты
    База знаний