Документация для разработчиков
Темная тема

delete

\Bitrix\Main\ORM\Data\DeleteResult public static
\Bitrix\Iblock\IblockTable::delete(
	mixed $primary
);

Удаляет запись инфоблока из таблицы b_iblock по первичному ключу. Статический метод. Унаследован от \Bitrix\Main\ORM\Data\DataManager.

Для удаления действующего инфоблока используйте \CIBlock::Delete. ORM-метод удаляет только запись из b_iblock и может оставить элементы, свойства, разделы, привязки и другие связанные данные.

Параметры

Параметр Описание
$primary Идентификатор инфоблока либо массив ['ID' => идентификатор]. Параметр обязателен

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

Объект \Bitrix\Main\ORM\Data\DeleteResult. Метод isSuccess() сообщает об успехе операции, getErrorMessages() возвращает сообщения об ошибках обработчиков ORM.

Метод не проверяет наличие инфоблока перед SQL-запросом и не возвращает число удаленных строк. Отсутствие записи само по себе не означает ошибку результата.

Особенности

Метод вызывает события ORM OnBeforeDelete, OnDelete и OnAfterDelete. Ошибки обработчиков OnBeforeDelete отменяют удаление. После SQL-запроса метод очищает кеш ORM, а IblockTable::onAfterDelete вызывает \CIBlock::CleanCache.

ORM-метод не удаляет элементы, разделы, свойства, привязки к сайтам, права и файлы. Для полного удаления инфоблока используйте \CIBlock::Delete.

Исключения

Ошибки настройки ORM, формата данных и выполнения SQL могут привести к исключению. Отмена операции обработчиком ORM возвращается в объекте результата. Проверяйте isSuccess() и обрабатывайте исключения отдельно.

Некорректный первичный ключ, например пустой массив или неизвестное имя ключа, вызывает \Bitrix\Main\ArgumentException.

Пример

Пример показывает \CIBlock::Delete: создает тестовый инфоблок через классический API и затем удаляет его вместе со связанными настройками. При ошибке выводит идентификатор созданного инфоблока.

<?php

use Bitrix\Iblock\TypeTable;
use Bitrix\Main\Loader;
use Bitrix\Main\SiteTable;

$iblockId = null;

try
{
	if (!Loader::includeModule('iblock'))
	{
		echo 'Не удалось подключить модуль iblock';
		return;
	}

	$type = TypeTable::getRow(['select' => ['ID'], 'order' => ['ID' => 'ASC']]);
	$site = SiteTable::getRow(['select' => ['LID'], 'order' => ['LID' => 'ASC']]);
	if ($type === null || $site === null)
	{
		echo 'Для примера нужны существующий тип инфоблоков и сайт';
		return;
	}

	$iblock = new \CIBlock();
	$apiCode = uniqid('DocsExample', false);
	$newId = $iblock->Add([
		'IBLOCK_TYPE_ID' => $type['ID'],
		'SITE_ID' => [$site['LID']],
		'NAME' => 'Тестовый инфоблок',
		'API_CODE' => $apiCode,
		'ACTIVE' => 'N',
	]);
	if (!$newId)
	{
		echo htmlspecialchars($iblock->LAST_ERROR, ENT_QUOTES, 'UTF-8');
		return;
	}

	$iblockId = (int)$newId;

	if (!\CIBlock::Delete($iblockId))
	{
		echo 'Не удалось удалить тестовый инфоблок: ' . $iblockId;
		return;
	}

	echo 'Удален тестовый инфоблок: ' . $iblockId;
}
catch (\Throwable $exception)
{
	echo 'Ошибка: ' . htmlspecialchars($exception->getMessage(), ENT_QUOTES, 'UTF-8');
}

Продолжить изучение



Была ли эта страница полезна?

Пользовательские комментарии

Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2026, «1С-Битрикс», 2026
Наверх