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

CIBlockElement::Delete в Битрикс — удаление элемента инфоблока

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

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

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

Чтобы удалить элемент инфоблока, необходимо передать его ID в метод CIBlockElement::Delete(). В случае успешного удаления метод вернет true.

<?php

if (CIBlockElement::Delete(123)) {
    echo "Элемент удален";
} else {
    echo "Ошибка удаления";
}

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

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

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

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

Синтаксис

bool CIBlockElement::Delete(
    int $ID
);

Параметры

Параметр Тип Описание
$ID int ID удаляемого элемента инфоблока.

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

Удаление элемента по ID

<?php

$elementId = 123;

if (CIBlockElement::Delete($elementId)) {
    echo "Элемент успешно удален";
} else {
    echo "Ошибка удаления";
}

Удаление нескольких элементов

<?php

$elements = [101, 102, 103];

foreach ($elements as $elementId) {
    CIBlockElement::Delete($elementId);
}

Удаление элементов по фильтру

<?php

$res = CIBlockElement::GetList(
    [],
    [
        "IBLOCK_ID" => 5,
        "ACTIVE" => "N"
    ]
);

while ($item = $res->Fetch()) {
    CIBlockElement::Delete($item["ID"]);
}

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

<?php

$elementId = 123;

$res = CIBlockElement::GetByID($elementId);

if ($res->Fetch()) {
    CIBlockElement::Delete($elementId);
}

Что происходит при удалении

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

Удаление несуществующего элемента

CIBlockElement::Delete(999999);

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


Удаление без проверки прав доступа

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


Случайное массовое удаление

while ($item = $res->Fetch()) {
    CIBlockElement::Delete($item["ID"]);
}

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


Ожидание возможности восстановления

Метод Delete удаляет элемент окончательно. Если необходимо временно скрыть данные, лучше использовать деактивацию через поле ACTIVE = N.

$el->Update(
    $ID,
    [
        "ACTIVE" => "N"
    ]
);

Аналог на D7

В ORM D7 удаление выполняется через метод delete() соответствующего класса сущности.

<?php

use Bitrix\Iblock\Elements\ElementNewsTable;

$result = ElementNewsTable::delete(123);

if (!$result->isSuccess()) {
    print_r($result->getErrorMessages());
}

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

FAQ

Что возвращает CIBlockElement::Delete?

Метод возвращает true при успешном удалении и false при возникновении ошибки.

Удаляются ли свойства элемента?

Да. Вместе с элементом удаляются все связанные значения свойств.

Удаляются ли изображения?

Да, если файл больше не используется другими объектами системы.

Можно ли восстановить элемент после удаления?

Нет. Метод Delete удаляет данные окончательно. Для возможности восстановления рекомендуется использовать резервные копии или деактивацию элементов.

Как удалить все элементы инфоблока?

<?php

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

while ($item = $res->Fetch()) {
    CIBlockElement::Delete($item["ID"]);
}

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

Используйте обновление поля активности:

<?php

$el = new CIBlockElement();

$el->Update(
    123,
    [
        "ACTIVE" => "N"
    ]
);

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

База знаний