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

add

\Bitrix\Main\ORM\Data\AddResult public static
\Bitrix\Catalog\Model\Entity::add(
	array $data
);

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

Состав полей, проверки и автоматические действия определяет конкретная модель. Например, Product проверяет параметры товара, а Price — значение цены, валюту и диапазон количества.

Параметры

ПараметрОписание
$data Плоский массив полей или полная структура:
[
	"fields" => [
		"FIELD_NAME" => "value"
	],
	"external_fields" => [],
	"actions" => []
]
Ключ fields содержит поля ORM-таблицы. external_fields передает дочерней модели дополнительные данные, которые не записываются напрямую. actions хранит внутренние флаги отложенных действий. Плоский массив метод автоматически помещает в fields

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

Метод возвращает объект \Bitrix\Main\ORM\Data\AddResult. Объект содержит идентификатор созданной строки и ошибки подготовки или записи.

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

  1. Метод нормализует входной массив и отправляет событие EVENT_ON_BEFORE_ADD. Обработчики могут изменить данные или добавить ошибки.
  2. Защищенная точка расширения prepareForAdd() дочернего класса проверяет и дополняет поля.
  3. Метод отправляет событие EVENT_ON_ADD и добавляет строку через ORM-таблицу дочерней модели.
  4. После успешной записи метод заполняет внутренний кеш и отправляет EVENT_ON_AFTER_ADD.
  5. Если массив actions не пуст, метод вызывает защищенную точку расширения runAddExternalActions() дочернего класса.

Пример

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

<?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;
}

$priceId = (int)$addResult->getId();
echo 'Цена создана: ' . $priceId . PHP_EOL;

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

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


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