• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/discount/discountmanager.php
  • Класс: BitrixCatalogDiscountDiscountManager
  • Вызов: DiscountManager::getProductIblocks
static function getProductIblocks(array $productList): array
{
	$result = [
		'iblockElement' => [],
		'iblockList' => [],
		'skuIblockList' => []
	];

	if (empty($productList))
		return $result;

	$elementIterator = IblockElementTable::getList([
		'select' => ['ID', 'IBLOCK_ID'],
		'filter' => ['@ID' => $productList]
	]);
	while ($element = $elementIterator->fetch())
	{
		$element['ID'] = (int)$element['ID'];
		$element['IBLOCK_ID'] = (int)$element['IBLOCK_ID'];
		if (!isset($result['iblockElement'][$element['IBLOCK_ID']]))
			$result['iblockElement'][$element['IBLOCK_ID']] = [];
		$result['iblockElement'][$element['IBLOCK_ID']][] = $element['ID'];
	}
	unset($element, $elementIterator);
	if (!empty($result['iblockElement']))
	{
		$result['iblockList'] = array_keys($result['iblockElement']);

		$skuIterator = CatalogCatalogIblockTable::getList([
			'select' => ['IBLOCK_ID', 'PRODUCT_IBLOCK_ID', 'SKU_PROPERTY_ID'],
			'filter' => ['@IBLOCK_ID' => $result['iblockList'], '!=PRODUCT_IBLOCK_ID' => 0]
		]);
		while ($sku = $skuIterator->fetch())
		{
			$sku['IBLOCK_ID'] = (int)$sku['IBLOCK_ID'];
			$sku['PRODUCT_IBLOCK_ID'] = (int)$sku['PRODUCT_IBLOCK_ID'];
			$sku['SKU_PROPERTY_ID'] = (int)$sku['SKU_PROPERTY_ID'];
			$result['skuIblockList'][$sku['IBLOCK_ID']] = $sku;
		}
		unset($sku, $skuIterator);
	}

	return $result;
}