Меню

Csalebasket update не работает

Не обновляется корзина методом CSaleBasket::Update на 1c bitrix?

Добрый день!
Сайт сделан на 1c bitrix и сталкнулся с такой проблемой, что когда в корзине есть товар и у него количество 1, я хочу методом CSaleBasket::Update обновить количество данного товара, но ничего не происходит.
То есть, я использую:

Но ничего не происходит, товар не обновляется, я даже проверял через php отладчик в админке битрикса, тоже не срабатывает
Может кто знает что это может быть?

  • Вопрос задан более трёх лет назад
  • 2211 просмотров

— Для обновления кол-ва товара нужно передавать не id товара, а id записи корзины.

см. пример из документации:

Уточните пожалуйста. Обновление идёт по Ajax

Вот функция которая его выполняет:

function productUpdateInBasket($PRODUCT_ID=0,$QUANTITY=0) <
//// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$a = CSaleBasket::GetList(// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$arOrder = array(),
$arFilter = array(«PRODUCT_ID»=>$PRODUCT_ID),
$arGroupBy = false,
$arNavStartParams = false,
$arSelectFields = array()
);
if (count($a->arResult)) $idProductInBasket = $a->arResult[0][«ID»];
$arFields_new = array(«QUANTITY»=>$QUANTITY);
return CSaleBasket::Update($idProductInBasket, $arFields_new);
>
return false;
>

Иногда переставали обновляться некоторые товары, то есть вообще всё работает. Но иногда у какого нибудь товара добавленного из каталога в корзине перестаёт обновляться количество через ajax на указанную функцию.

Причём перестаёт обновляться как это видно в стандартном компоненте так и в шапке информация в которой запрашивается через

CSaleBasket::GetList(//Выполняем запрос
array(«NAME» => «ASC»,»ID» => «ASC»),
array(«FUSER_ID» => CSaleBasket::GetBasketUserID(), «LID» => SITE_ID, «ORDER_ID» => «NULL»),
false,
false,
array(«ID»,»MODULE»,»PRODUCT_ID»,»QUANTITY»,»CAN_BUY»,»PRICE»));

Ситуация исправляется если нажимать удалить товар и заново его добавить.
Причём кнопку удалить нужно нажать 2-3 раза и только после этого товар удаляется.

Читайте также:  Не работают значки клавиатуры

Для удаления используется

function productDeleteFromBasket($PRODUCT_ID=0) <
//// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$a = CSaleBasket::GetList(// Выполняем запрос в корзину узнаём есть ли у неё элемент с Ид_товара
$arOrder = array(),
$arFilter = array(«PRODUCT_ID»=>$PRODUCT_ID),
$arGroupBy = false,
$arNavStartParams = false,
$arSelectFields = array()
);
if (count($a->arResult)) $idProductInBasket = $a->arResult[0][«ID»];
$arFields_new = array(«QUANTITY»=>0);
return CSaleBasket::Update($idProductInBasket, $arFields_new);
>
return false;
>

Источник

Adblock
detector