• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/sku.php
  • Класс: BitrixCatalogProductSku
  • Вызов: Sku::updateProductData
static function updateProductData(array $listIds): void
{
	$separateMode = self::isSeparateSkuMode();
	if (self::$calculateAvailable)
	{
		$iblockData = false;
		$iblockId = null;
		foreach ($listIds as $id)
		{
			if (empty(self::$deferredSku[$id][self::ACTION_AVAILABLE]))
				continue;
			if (empty(self::$deferredSku[$id]['IBLOCK_ID']))
				continue;
			if (!isset(self::$skuAvailable[$id]))
				continue;

			if ($iblockId !== self::$deferredSku[$id]['IBLOCK_ID'])
			{
				$iblockId = self::$deferredSku[$id]['IBLOCK_ID'];
				$iblockData = CCatalogSku::GetInfoByIBlock(self::$deferredSku[$id]['IBLOCK_ID']);
			}
			if (empty($iblockData))
			{
				continue;
			}

			$fields = self::getDefaultParentSettings(
				self::$skuAvailable[$id],
				$iblockData['CATALOG_TYPE'] == CCatalogSku::TYPE_PRODUCT
			);
			if (empty($fields))
			{
				continue;
			}

			// for separate only
			if ($separateMode)
			{
				$fields = [
					'TYPE' => $fields['TYPE'],
				];
			}

			if (isset(self::$skuExist[$id]))
			{
				$result = CatalogModelProduct::update($id, $fields);
				unset(self::$skuExist[$id]);
			}
			else
			{
				$fields['ID'] = $id;
				$result = CatalogModelProduct::add($fields);
			}
		}
		unset($result, $id);
	}

	if (!$separateMode)
	{
		self::updateProductPrices($listIds);
	}
}