• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/controller/basketproperties.php
  • Класс: BitrixSaleControllerBasketProperties
  • Вызов: BasketProperties::getPrimaryAutoWiredParameter
public function getPrimaryAutoWiredParameter()
{
	return new ExactParameter(
		SaleBasketPropertyItem::class,
		'basketProperty',
		function($className, $id) {
			$registry = SaleRegistry::getInstance(SaleRegistry::REGISTRY_TYPE_ORDER);

			/** @var BasketPropertyItem $basketPropertyClass */
			$basketPropertyClass = $registry->getBasketPropertyItemClassName();

			$b = $basketPropertyClass::getList([
				'select'=>['BASKET_ID'],
				'filter'=>['ID'=>$id]
			]);

			if($bRow = $b->fetch())
			{
				/** @var SaleBasket $basketClass */
				$basketClass = $registry->getBasketClassName();

				$r = $basketClass::getList([
					'select'=>['ORDER_ID'],
					'filter'=>['ID'=>$bRow['BASKET_ID']]
				]);

				if($row = $r->fetch())
				{
					/** @var SaleOrder $orderClass */
					$orderClass = $registry->getOrderClassName();

					$order = $orderClass::load($row['ORDER_ID']);
					$basket = $order->getBasket()->getItemByBasketCode($bRow['BASKET_ID']);
					if ($basket)
					{
						$property = $basket->getPropertyCollection()->getItemById($id);
						if ($property)
						{
							return $property;
						}
					}
				}
			}

			$this->addError(new Error('basket property is not exists', 200240400003));
			return null;
		}
	);
}