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

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