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

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