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

delete

\Bitrix\Main\ORM\Data\DeleteResult public static
\Bitrix\Catalog\Model\Entity::delete(
	$id
);

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

Параметры

ПараметрОписание
$idПервичный идентификатор удаляемой строки

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

Метод возвращает объект \Bitrix\Main\ORM\Data\DeleteResult. Объект содержит результат операции и ошибки.

Как работает метод

  1. Метод отправляет событие EVENT_ON_BEFORE_DELETE. Обработчики могут отменить операцию, добавив ошибку.
  2. Метод отправляет EVENT_ON_DELETE и при необходимости загружает кешируемые данные удаляемой строки.
  3. ORM-таблица дочерней модели удаляет строку.
  4. После успешного удаления кеш сохраняет найденные прежние значения с префиксом OLD_. Они доступны защищенной точке расширения runDeleteExternalActions().
  5. Метод отправляет EVENT_ON_AFTER_DELETE и после успешной операции запускает дополнительные действия дочерней модели.

Особенности

Дочерний класс может переопределить public-метод и использовать другой порядок удаления. Например, Product::delete() удаляет запись без событий модели Entity, но запускает обработчики ORM-таблицы и собственную очистку данных каталога.

Пример

Пример создает временную цену тестового товара и удаляет ее методом, унаследованным моделью Price.

<?php

use Bitrix\Catalog\Model\Price;
use Bitrix\Main\Loader;

if (!Loader::includeModule('catalog'))
{
	throw new RuntimeException('Не удалось подключить модуль catalog');
}

// Идентификатор тестового товара
$productId = 123;
// Идентификатор существующего типа цены
$priceTypeId = 1;
// Код существующей валюты
$currency = 'RUB';

$addResult = Price::add([
	'fields' => [
		'PRODUCT_ID' => $productId,
		'CATALOG_GROUP_ID' => $priceTypeId,
		'PRICE' => 1000,
		'CURRENCY' => $currency,
	],
]);

if (!$addResult->isSuccess())
{
	echo implode(PHP_EOL, $addResult->getErrorMessages());
	return;
}

$deleteResult = Price::delete((int)$addResult->getId());
if (!$deleteResult->isSuccess())
{
	echo implode(PHP_EOL, $deleteResult->getErrorMessages());
	return;
}

echo 'Тестовая цена удалена';


© «Битрикс», 2001-2026, «1С-Битрикс», 2026