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