• Модуль: catalog
  • Путь к файлу: ~/bitrix/modules/catalog/lib/product/propertycatalogfeature.php
  • Класс: BitrixCatalogProductPropertyCatalogFeature
  • Вызов: PropertyCatalogFeature::getBasketPropertyByTypes
static function getBasketPropertyByTypes(array $catalog, array $parameters = []): ?array
	{
		$result = [];

		$getCode = (isset($parameters['CODE']) && $parameters['CODE'] == 'Y');
		$filter = [];
		switch ($catalog['CATALOG_TYPE'])
		{
			case CCatalogSku::TYPE_CATALOG:
				$filter = [
					'=IBLOCK_ID' => $catalog['IBLOCK_ID'],
					[
						'LOGIC' => 'OR',
						[
							'=MULTIPLE' => 'Y',
							'@PROPERTY_TYPE' => [
								IblockPropertyTable::TYPE_ELEMENT,
								IblockPropertyTable::TYPE_SECTION,
								IblockPropertyTable::TYPE_LIST,
								IblockPropertyTable::TYPE_NUMBER,
								IblockPropertyTable::TYPE_STRING
							]
						],
						[
							'=MULTIPLE' => 'N',
							'@PROPERTY_TYPE' => [
								IblockPropertyTable::TYPE_ELEMENT,
								IblockPropertyTable::TYPE_LIST
							]
						]
					]
				];
				break;
			case CCatalogSku::TYPE_PRODUCT:
			case CCatalogSku::TYPE_FULL:
				$filter = [
					'=IBLOCK_ID' => $catalog['PRODUCT_IBLOCK_ID'],
					[
						'LOGIC' => 'OR',
						[
							'=MULTIPLE' => 'Y',
							'@PROPERTY_TYPE' => [
								IblockPropertyTable::TYPE_ELEMENT,
								IblockPropertyTable::TYPE_SECTION,
								IblockPropertyTable::TYPE_LIST,
								IblockPropertyTable::TYPE_NUMBER,
								IblockPropertyTable::TYPE_STRING
							]
						],
						[
							'=MULTIPLE' => 'N',
							'@PROPERTY_TYPE' => [
								IblockPropertyTable::TYPE_ELEMENT,
								IblockPropertyTable::TYPE_LIST
							]
						]
					]
				];
				break;
			case CCatalogSku::TYPE_OFFERS:
				$filter = [
					'=IBLOCK_ID' => $catalog['IBLOCK_ID'],
					'!=PROPERTY_TYPE' => IblockPropertyTable::TYPE_FILE,
					'!=ID' => $catalog['SKU_PROPERTY_ID']
				];
				break;
		}
		$filter['=ACTIVE'] = 'Y';

		$iterator = IblockPropertyTable::getList([
			'select' => ['ID', 'CODE', 'SORT'],
			'filter' => $filter,
			'order' => ['SORT' => 'ASC', 'ID' => 'ASC']
		]);
		while ($row = $iterator->fetch())
			$result[(int)$row['ID']] = self::getPropertyCode($row, $getCode);
		unset($row, $iterator);
		unset($filter, $getCode);

		return (!empty($result) ? array_values($result) : null);
	}