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