- Модуль: 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;
}