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

add

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

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

Метод унаследован от \Bitrix\Catalog\Model\Entity. Класс Product дополняет базовый алгоритм внутренней проверкой полей товара и автоматическими действиями каталога.

Параметры

ПараметрОписание
$data Поля товара. Метод принимает плоский массив полей или структуру:
[
	"fields" => [
		"ID" => 123,
		"TYPE" => ProductTable::TYPE_PRODUCT,
		"QUANTITY" => 10
	],
	"external_fields" => [
		"IBLOCK_ID" => 2
	],
	"actions" => []
]
Плоский массив метод помещает в ключ fields. Ключи external_fields и actions в этом случае будут пустыми

Основные поля массива fields

ПолеОписание
IDИдентификатор существующего элемента инфоблока. Обязательное поле
TYPEТип товара. Если поле не передано, метод выбирает тип по настройкам каталога инфоблока
AVAILABLEДоступность товара: ProductTable::STATUS_YES или ProductTable::STATUS_NO. Если поле не передано, метод рассчитывает значение
QUANTITYКоличество товара, число или числовая строка. По умолчанию — 0
QUANTITY_RESERVEDЗарезервированное количество. Значение не может быть отрицательным
QUANTITY_TRACEНастройка количественного учета: STATUS_YES, STATUS_NO или значение по умолчанию STATUS_DEFAULT
CAN_BUY_ZEROНастройка покупки при нулевом остатке: STATUS_YES, STATUS_NO или STATUS_DEFAULT
SUBSCRIBEНастройка подписки на поступление: STATUS_YES, STATUS_NO или STATUS_DEFAULT
WEIGHTВес товара, число или числовая строка. По умолчанию — 0
MEASUREИдентификатор единицы измерения или null
WIDTHШирина товара, положительное число или null
LENGTHДлина товара, положительное число или null
HEIGHTВысота товара, положительное число или null
PURCHASING_PRICEЗакупочная цена. Если цена задана, передайте корректную валюту
PURCHASING_CURRENCYТрехсимвольный код валюты закупочной цены
VAT_IDИдентификатор ставки НДС или null
VAT_INCLUDEDПризнак включения НДС в цену: STATUS_YES или STATUS_NO
BARCODE_MULTIПризнак поддержки нескольких штрихкодов: STATUS_YES или STATUS_NO
BUNDLEПризнак комплекта: STATUS_YES или STATUS_NO
TMP_IDВременный идентификатор длиной до 40 символов или null

Поля массива external_fields

ПолеОписание
IBLOCK_IDИдентификатор инфоблока элемента. Если поле не передано, метод определяет инфоблок по ID. Инфоблок должен быть каталогом

Массив actions содержит внутренние флаги автоматических действий. Обычно его не заполняют вручную.

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

Метод возвращает объект \Bitrix\Main\ORM\Data\AddResult. Через объект можно проверить результат, получить ошибки и идентификатор добавленной записи.

Особенности

Для типов TYPE_EMPTY_SKU и TYPE_FREE_OFFER метод отключает доступность и обнуляет количество. Для типа TYPE_SERVICE метод отключает количественный учет и разрешает покупку при нулевом остатке.

Пример

Пример создает запись товара для заранее подготовленного элемента инфоблока. Элемент должен находиться в инфоблоке, который настроен как каталог, и не должен иметь записи в таблице товаров.

<?php

use Bitrix\Catalog\Model\Product;
use Bitrix\Catalog\ProductTable;
use Bitrix\Main\Loader;

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

// Идентификатор специально подготовленного элемента инфоблока
$elementId = 123;
// Идентификатор каталога, в котором находится элемент
$iblockId = 2;

try
{
	$result = Product::add([
		'fields' => [
			'ID' => $elementId,
			'TYPE' => ProductTable::TYPE_PRODUCT,
			'QUANTITY' => 10,
		],
		'external_fields' => [
			'IBLOCK_ID' => $iblockId,
		],
	]);

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

	echo 'Товар добавлен. Идентификатор: ' . (int)$result->getId();
}
catch (Throwable $exception)
{
	echo $exception->getMessage();
}


Была ли эта страница полезна?

Пользовательские комментарии

Помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.

Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.
© «Битрикс», 2001-2026, «1С-Битрикс», 2026
Наверх