Update
Описание и параметры
bool CPrice::Update( int ID, array arFields, boolean $boolRecalc = false, );
Метод изменяет параметры ценового предложения (цены) для товара на значения из массива arFields. Нестатический метод.
Важно! С версии 16.0.3 модуля Торговый каталог при передаче ключа PRICE настоятельно рекомендуется передавать также ключ CURRENCY. Это позволит исключить дополнительный запрос к базе внутри метода.
Метод работоспособен, но устарел. Вместо него рекомендуется использовать \Bitrix\Catalog\Model\Price::update.
Параметры вызова
| Параметр | Описание | С версии |
|---|---|---|
| ID | Код ценового предложения. Код необходимо получать с помощью этого метода. | |
| arFields | Ассоциативный массив новых параметров ценового предложения, ключами в котором являются названия полей предложения, а значениями - новые значения.
Допустимые ключи:
| |
| boolRecalc | Пересчитать цены. Если передать true, то включается механизм пересчета цен.
Если обновляется базовая цена (в CATALOG_GROUP_ID задан тип цен, являющийся базовым), будут пересчитаны все остальные типы цен для товара, если у них задан код наценки. Если обновляется иная цена (не базовая), для нее задан код наценки и уже существует базовая - значения PRICE и CURRENCY буду пересчитаны. Необязательный параметр. По умолчанию - false. | 11.0.0 |
Возвращаемые значения
Возвращает ID обновляемой цены в случае успешного сохранения цены и false - в противном случае. Для получения детальной информации об ошибке следует вызвать $APPLICATION->GetException().
События
Метод работает с событиями OnBeforePriceUpdate и OnPriceUpdate.
Примечания:
- Если параметр $boolRecalc = true, все равно необходимо указывать цену и валюту (в том случае, когда тип цены - не базовый). Если существует базовая цена, значения цены и валюты будут изменены, если нет - код наценки будет изменен на ноль.
- В обработчиках события OnBeforePriceUpdate можно запретить или, наоборот, включить пересчет цены. За это отвечает ключ RECALC массива данных, передаваемых в обработчик.
Смотрите также
Примеры использования
<?
// Установим для товара с кодом 15 цену типа 2 в значение 29.95 USD
$PRODUCT_ID = 15;
$PRICE_TYPE_ID = 2;
$arFields = Array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID,
"PRICE" => 29.95,
"CURRENCY" => "USD",
"QUANTITY_FROM" => 1,
"QUANTITY_TO" => 10
);
$res = CPrice::GetList(
array(),
array(
"PRODUCT_ID" => $PRODUCT_ID,
"CATALOG_GROUP_ID" => $PRICE_TYPE_ID
)
);
if ($arr = $res->Fetch())
{
CPrice::Update($arr["ID"], $arFields);
}
else
{
CPrice::Add($arFields);
}
?>
© «Битрикс», 2001-2025, «1С-Битрикс», 2025