• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/catalogprovider.php
  • Класс: BitrixCatalogProductCatalogProvider
  • Вызов: CatalogProvider::loadCurrentProductStores
static function loadCurrentProductStores(array $list): array
	{
		MainTypeCollection::normalizeArrayValuesByInt($list, true);
		if (empty($list))
		{
			return [];
		}

		$result = [];
		foreach (array_chunk($list, 500) as $pageIds)
		{
			$iterator = CatalogStoreProductTable::getList([
				'select' => [
					'ID',
					'STORE_ID',
					'PRODUCT_ID',
					'AMOUNT',
					'QUANTITY_RESERVED',
				],
				'filter' => [
					'@PRODUCT_ID' => $pageIds,
					'=STORE.ACTIVE' => 'Y',
				],
				'order' => [
					'PRODUCT_ID' => 'ASC',
					'STORE_ID' => 'ASC',
				]
			]);
			while ($row = $iterator->fetch())
			{
				$row['ID'] = (int)$row['ID'];
				$row['PRODUCT_ID'] = (int)$row['PRODUCT_ID'];
				$row['STORE_ID'] = (int)$row['STORE_ID'];
				$row['AMOUNT'] = (float)$row['AMOUNT'];
				$row['QUANTITY_RESERVED'] = (float)$row['QUANTITY_RESERVED'];

				$productId = $row['PRODUCT_ID'];
				$storeId = $row['STORE_ID'];
				if (!isset($result[$productId]))
				{
					$result[$productId] = [];
				}
				$result[$productId][$storeId] = $row;
			}
			unset($productId, $storeId);
			unset($row, $iterator);
		}
		unset($pageIds);

		return $result;
	}