delete
\Bitrix\Main\ORM\Data\DeleteResult public static \Bitrix\Catalog\Model\Entity::delete( $id );
Метод удаляет строку через дочернюю модель, отправляет события модели, сохраняет старые кешируемые значения и запускает дополнительные действия дочернего класса. Статический метод.
Параметры
| Параметр | Описание |
|---|---|
$id | Первичный идентификатор удаляемой строки |
Возвращаемое значение
Метод возвращает объект \Bitrix\Main\ORM\Data\DeleteResult. Объект содержит результат операции и ошибки.
Как работает метод
- Метод отправляет событие
EVENT_ON_BEFORE_DELETE. Обработчики могут отменить операцию, добавив ошибку. - Метод отправляет
EVENT_ON_DELETEи при необходимости загружает кешируемые данные удаляемой строки. - ORM-таблица дочерней модели удаляет строку.
- После успешного удаления кеш сохраняет найденные прежние значения с префиксом
OLD_. Они доступны защищенной точке расширенияrunDeleteExternalActions(). - Метод отправляет
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