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

		$catalog = CCatalogSku::GetInfoByIBlock($iblockId);
		if (empty($catalog))
			return null;

		if (!self::isEnabledFeatures())
			return self::getBasketPropertyByTypes($catalog, $parameters);

		$filter = null;
		switch ($catalog['CATALOG_TYPE'])
		{
			case CCatalogSku::TYPE_CATALOG:
			case CCatalogSku::TYPE_PRODUCT:
			case CCatalogSku::TYPE_FULL:
				$filter = [
					[
						'LOGIC' => 'OR',
						[
							'=PROPERTY.MULTIPLE' => 'Y',
							'@PROPERTY.PROPERTY_TYPE' => [
								IblockPropertyTable::TYPE_ELEMENT,
								IblockPropertyTable::TYPE_SECTION,
								IblockPropertyTable::TYPE_LIST,
								IblockPropertyTable::TYPE_NUMBER,
								IblockPropertyTable::TYPE_STRING
							]
						],
						[
							'=PROPERTY.MULTIPLE' => 'N',
							'@PROPERTY.PROPERTY_TYPE' => [
								IblockPropertyTable::TYPE_ELEMENT,
								IblockPropertyTable::TYPE_LIST
							]
						]
					]
				];
				break;
			case CCatalogSku::TYPE_OFFERS:
				$filter = [
					'!=PROPERTY.PROPERTY_TYPE' => IblockPropertyTable::TYPE_FILE,
					'!=PROPERTY.ID' => $catalog['SKU_PROPERTY_ID']
				];
				break;
		}
		unset($catalog);

		if ($filter === null)
			return null;

		$filter['=MODULE_ID'] = 'catalog';
		$filter['=FEATURE_ID'] = self::FEATURE_ID_BASKET_PROPERTY;

		return self::getFilteredPropertyCodes($iblockId, $filter, $parameters);
	}