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

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
Наверх