• Модуль: sale
  • Путь к файлу: ~/bitrix/modules/sale/lib/basketbase.php
  • Класс: BitrixSaleBasketBase
  • Вызов: BasketBase::loadFromDb
protected function loadFromDb(array $filter)
{
	$select = [
		"ID", "LID", "MODULE", "PRODUCT_ID", "QUANTITY", "WEIGHT",
		"DELAY", "CAN_BUY", "PRICE", "CUSTOM_PRICE", "BASE_PRICE",
		'PRODUCT_PRICE_ID', 'PRICE_TYPE_ID', "CURRENCY", 'BARCODE_MULTI',
		"RESERVED", "RESERVE_QUANTITY",	"NAME", "CATALOG_XML_ID",
		"VAT_RATE", "NOTES", "DISCOUNT_PRICE","PRODUCT_PROVIDER_CLASS",
		"CALLBACK_FUNC", "ORDER_CALLBACK_FUNC", "PAY_CALLBACK_FUNC",
		"CANCEL_CALLBACK_FUNC", "DIMENSIONS", "TYPE", "SET_PARENT_ID",
		"DETAIL_PAGE_URL", "FUSER_ID", 'MEASURE_CODE', 'MEASURE_NAME',
		'ORDER_ID', 'DATE_INSERT', 'DATE_UPDATE', 'PRODUCT_XML_ID',
		'SUBSCRIBE', 'RECOMMENDATION', 'VAT_INCLUDED', 'SORT',
		'DATE_REFRESH', 'DISCOUNT_NAME', 'DISCOUNT_VALUE', 'DISCOUNT_COUPON',
		'XML_ID', 'MARKING_CODE_GROUP'
	];

	$itemList = [];
	$first = true;

	$res = static::getList([
		"select" => $select,
		"filter" => $filter,
		"order" => ['SORT' => 'ASC', 'ID' => 'ASC'],
	]);
	while ($item = $res->fetch())
	{
		if ($first)
		{
			$this->setSiteId($item['LID']);
			$this->setFUserId($item['FUSER_ID']);
			$first = false;
		}

		$itemList[$item['ID']] = $item;
	}

	foreach ($itemList as $id => $item)
	{
		if ($item['SET_PARENT_ID'] > 0)
		{
			$itemList[$item['SET_PARENT_ID']]['ITEMS'][$id] = &$itemList[$id];
		}
	}

	$result = [];
	foreach ($itemList as $id => $item)
	{
		if ($item['SET_PARENT_ID'] == 0)
		{
			$result[$id] = $item;
		}
	}

	$this->loadFromArray($result);

	return $this;
}