• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/basketitem.php
  • Класс: BitrixSaleControllerBasketItem
  • Вызов: BasketItem::updateAction
public function updateAction(BitrixSaleBasketItem $basketItem, array $fields)
{
	$data = [];

	$fields['ID'] = $basketItem->getBasketCode();
	$fields['ORDER_ID'] = $basketItem->getCollection()->getOrderId();

	$data['ORDER']['ID'] = $fields['ORDER_ID'];
	$data['ORDER']['BASKET_ITEMS'] = [$fields];

	$builder = $this->getBuilder(
		new SettingsContainer([
			'deleteBasketItemsIfNotExists' => false
		])
	);

	$builder->buildEntityBasket($data);

	if($builder->getErrorsContainer()->getErrorCollection()->count()>0)
	{
		$this->addErrors($builder->getErrorsContainer()->getErrors());
		return null;
	}

	$order = $builder->getOrder();

	$r = $order->save();
	if(!$r->isSuccess())
	{
		$this->addErrors($r->getErrors());
		return null;
	}

	/** @var BitrixSaleBasketItem $entity */
	$entity = $order->getBasket()->getItemById($basketItem->getId());
	return new Page('BASKET_ITEM', $this->get($entity), 1);
}