Add
Описание и параметры
mixed CPrice::Add( array arFields, boolean $boolRecalc = false );
Метод добавляет новое ценовое предложение (новую цену) для товара. Нестатический метод.
Метод работоспособен, но устарел. Вместо него рекомендуется использовать \Bitrix\Catalog\Model\Price::add
.
Параметры вызова
Параметр | Описание | С версии |
---|---|---|
arFields | Ассоциативный массив параметров ценового предложения. Допустимые параметры:
| |
boolRecalc | Пересчитать цены. Если передать true, то включается механизм пересчета цен.
Если добавляется базовая цена (в CATALOG_GROUP_ID задан тип цен, являющийся базовым), будут пересчитаны все остальные типы цен для товара, если у них задан код наценки. Если добавляется иная цена (не базовая), для нее задан код наценки и уже существует базовая - значения PRICE и CURRENCY буду пересчитаны. Необязательный параметр. По умолчанию - false. | 11.0.0 |
Возвращаемые значения
Возвращает идентификатор добавленной цены в случае успешного сохранения и false - в противном случае. Для получения детальной информации об ошибке следует вызвать $APPLICATION->GetException().
События
Метод работает с событиями OnBeforePriceAdd и OnPriceAdd.
Примечания:
- Если параметр $boolRecalc = true, все равно необходимо указывать цену и валюту (в том случае, когда тип цены - не базовый). Если существует базовая цена, значения цены и валюты будут изменены, если нет - код наценки будет изменен на ноль.
- В обработчиках события OnBeforePriceAdd можно запретить или, наоборот, включить пересчет цены. За это отвечает ключ 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); } ?>
Добавление цены с пересчетом (базовая существует)
$PRODUCT_ID = 15; $PRICE_TYPE_ID = 2; $arFields = array( "PRODUCT_ID" => $PRODUCT_ID, "CATALOG_GROUP_ID" => $PRICE_TYPE_ID, "PRICE" => 0, "CURRENCY" => "RUB", "EXTRA_ID" => 4, "QUANTITY_FROM" => 1, "QUANTITY_TO" => 10 ); $obPrice = new CPrice(); $obPrice->Add($arFields,true);
Величина и валюта цены будет расчитана исходя из наценки и базовой цены.
Сообщение не промодерировано, возможны ошибки и неточности.
|
Не рабочий этот код и пример, ни этот
CPrice::Add ни \Bitrix\Catalog\Model\Price::add работает только этот! $obPrice = new CPrice(); $obPrice->Add($arFields,true); |
cd rww
|
Если нужно изменить цены внутри события добавления элемента, следует обращаться к решению из этой статьи
|
Антон Долганин
|
Если вы вроде бы все делаете правильно, а цена не показывается в форме в админке, проверьте, существует ли товар для данного элемента (CCatalogProduct). Без него цены не будут показываться в форме.
|
© «Битрикс», 2001-2024, «1С-Битрикс», 2024
Пользовательские комментарии
Мы будем рады, если разработчики добавят свои комментарии по практическому использованию методов системы.Для этого нужно всего лишь авторизоваться на сайте
Но помните, что Пользовательские комментарии, несмотря на модерацию, не являются официальной документацией. Ответственность за их использование несет сам пользователь.
Также Пользовательские комментарии не являются местом для обсуждения функционала. По подобным вопросам обращайтесь на форумы.