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

add

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

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

Параметры

ПараметрОписание
$data Плоский массив полей цены или структура с ключами fields, external_fields и actions.
[
	"fields" => [
		"PRODUCT_ID" => 123,
		"CATALOG_GROUP_ID" => 1,
		"PRICE" => 1000,
		"CURRENCY" => "RUB"
	],
	"actions" => []
]
Обычно внутренний массив actions не заполняют вручную

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

ПолеОписание
PRODUCT_IDИдентификатор существующего товара. Обязательное поле
CATALOG_GROUP_IDИдентификатор существующего типа цены. Обязательное поле
PRICEНеотрицательное значение цены. Обязательное поле, если цена не рассчитывается по наценке
CURRENCYТрехсимвольный код существующей валюты. Обязательное поле
EXTRA_IDИдентификатор наценки или null. Для базового типа цены метод всегда устанавливает null
QUANTITY_FROMНижняя граница количества, положительное целое число или null
QUANTITY_TOВерхняя граница количества, положительное целое число или null. Значение не должно быть меньше нижней границы
TMP_IDВременный идентификатор длиной до 40 символов или null
PRICE_SCALEЦена в базовой валюте. Если поле не передано, метод рассчитывает значение

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

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

Особенности

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

Пример

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

<?php

use Bitrix\Catalog\Model\Price;
use Bitrix\Main\Loader;

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

// Идентификатор тестового товара
$productId = 123;
// Идентификатор типа цены, доступного для тестового товара
$priceTypeId = 1;
// Код существующей валюты
$currency = 'RUB';

try
{
	$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 'Временная цена удалена';
}
catch (Throwable $exception)
{
	echo $exception->getMessage();
}


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