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