@Alexer05

CSaleBasket::Update не обновляет количество товаров, если значение меньше текущего, из-за чего это может быть?

Метод CSaleBasket::Update() не обновляет количество товаров, если заданное кол-во меньше текущего (возвращает false). Если указать больше, то запись обновляется. Если снова указать количество товаров меньше, как было, то запись не обновляется. Из-за чего это может быть, как можно задать любое количество товаров?
Использую код ниже:
// Работает, если кол-во больше текущего
CSaleBasket::Update($id, array('QUANTITY' => $quantity));


Также пытался использовать
// Работает, если кол-во больше изначального в заказе
$basketItem = $basket->getItemById($id);
$basketItem->setField('QUANTITY', $quantity);
$order->save();


Но он также не сохраняет количество товаров, если значение меньше текущего. Но если указать кол-во товаров больше, то он позволяет потом указать изначальное значение, но меньше указать нельзя.

Битрикс 16.5.5
  • Вопрос задан
  • 898 просмотров
Решения вопроса 1
winer
@winer
занимаюсь разработкой сайтов на 1c-bitrix
$updateResult = CSaleBasket::Update($id, array('QUANTITY' => $quantity));
if(!$updateResult){
    print_r($APPLICATION->LAST_ERROR);
}


$basketItem = $basket->getItemById($id);
$basketItem->setField('QUANTITY', $quantity);
$orderSaveResult = $order->save();
if(!$orderSaveResult->isSuccess()){
    var_dump($orderSaveResult->getErrors());
}


Если там ни чего не увидите посмотрите обработчики событий OnBeforeBasketUpdate и OnBeforeBasketUpdateAfterCheck.
foreach(GetModuleEvents("sale", "OnBeforeBasketUpdate", true) as $arEvent){
    var_dump($arEvent);
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы