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

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

	$r = $this->addValidate($fields);
	if($r->isSuccess())
	{
		$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();

		$idx=0;
		$collection = $order->getBasket();
		/** @var BitrixSaleBasketItem $basketItem */
		foreach($collection as $basketItem)
		{
			if($basketItem->getId() <= 0)
			{
				$idx = $basketItem->getInternalIndex();
				break;
			}
		}

		$r = $order->save();
	}

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

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