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-2024, «1С-Битрикс», 2024