- Модуль: catalog
- Путь к файлу: ~/bitrix/modules/catalog/lib/product/sku.php
- Класс: BitrixCatalogProductSku
- Вызов: Sku::updateDeferredSkuList
static function updateDeferredSkuList()
{
if (!empty(self::$deferredUnknown))
{
$list = array_keys(self::$deferredUnknown);
sort($list);
foreach (array_chunk($list, 500) as $pageIds)
{
$iterator = CatalogProductTable::getList(array(
'select' => array('ID', 'TYPE'),
'filter' => array(
'@ID' => $pageIds,
'@TYPE' => array(CatalogProductTable::TYPE_SKU, CatalogProductTable::TYPE_OFFER)
)
));
while ($row = $iterator->fetch())
{
$row['ID'] = (int)$row['ID'];
if ($row['TYPE'] == CatalogProductTable::TYPE_SKU)
self::migrateCalculateData(self::$deferredUnknown, self::$deferredSku, $row['ID']);
else
self::migrateCalculateData(self::$deferredUnknown, self::$deferredOffers, $row['ID']);
}
}
unset($row, $iterator, $pageIds, $list);
self::$deferredUnknown = array();
}
if (!empty(self::$deferredOffers))
{
$productList = CCatalogSku::getProductList(array_keys(self::$deferredOffers));
if (!empty($productList))
{
foreach ($productList as $id => $row)
self::transferCalculationData(self::$deferredOffers, self::$deferredSku, $id, $row['ID'], $row['IBLOCK_ID']);
unset($id, $row);
}
unset($productList);
self::$deferredOffers = array();
}
}