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

Update

bool CPrice::Update(
 int ID, 
 array arFields,
 boolean $boolRecalc = false,
);

Метод изменяет параметры ценового предложения (цены) для товара с кодом ID на значения из массива arFields. Нестатический метод.

Важно! С версии 16.0.3 модуля Торговый каталог при передаче ключа PRICE настоятельно рекомендуется передавать также ключ CURRENCY. Это позволит исключить дополнительный запрос к базе внутри метода.

Метод работоспособен, но устарел. Вместо него рекомендуется использовать \Bitrix\Catalog\Model\Price::update.

Параметры вызова

ПараметрОписание С версии
ID Код ценового предложения.
arFields Ассоциативный массив новых параметров ценового предложения, ключами в котором являются названия полей предложения, а значениями - новые значения.
Допустимые ключи:
  • PRODUCT_ID - код товара или торгового предложения (ID элемента инфоблока);
  • EXTRA_ID - код наценки;
  • CATALOG_GROUP_ID - код типа цены;
  • PRICE - цена;
  • CURRENCY - валюта цены
  • QUANTITY_FROM - количество товара, начиная с приобретения которого действует эта цена.
  • QUANTITY_TO - количество товара, при приобретении которого заканчивает действие эта цена.

    Примечание: если необходимо, чтобы значения параметров QUANTITY_FROM и QUANTITY_TO не были заданы, необходимо указать у них в качестве значения false либо не задавать поля QUANTITY_FROM и QUANTITY_TO в Update вообще.

Если установлен код наценки, то появляется возможность автоматически пересчитывать эту цену при изменении базовой цены или процента наценки.
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-2019, «1С-Битрикс», 2019
Наверх