• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/sku.php
  • Класс: BitrixCatalogProductSku
  • Вызов: Sku::calculate
static function calculate()
{
	if (!self::allowedUpdateAvailable())
		return;

	static::disableUpdateAvailable();

	self::updateDeferredSkuList();

	if (!empty(self::$deferredSku))
	{
		self::clearStepData();

		self::$calculatePriceTypes = array_keys(self::$calculatePriceTypes);
		if (!empty(self::$calculatePriceTypes))
			sort(self::$calculatePriceTypes);

		self::loadProductIblocks();

		$list = array_keys(self::$deferredSku);
		sort($list);

		foreach (array_chunk($list, 100) as $pageIds)
		{
			self::loadProductData($pageIds);
			self::updateProductData($pageIds);
			self::updateElements($pageIds);
			self::updateProductFacetIndex($pageIds);
		}
		unset($pageIds, $list);

		self::clearStepData();

		self::$deferredSku = array();
	}

	self::$calculateAvailable = false;
	self::$calculatePriceTypes = array();

	static::enableUpdateAvailable();
}