• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockelement.php
  • Класс: CAllIBlockElement
  • Вызов: CAllIBlockElement::SubQuery
static function SubQuery($strField, $arFilter)
{
	if(mb_substr($strField, 0, 9) == "PROPERTY_")
	{
		if (!is_array($arFilter))
		{
			return null;
		}
		$iblockId = null;
		if (isset($arFilter['IBLOCK_ID']))
		{
			$iblockId = $arFilter['IBLOCK_ID'];
		}
		elseif (isset($arFilter['=IBLOCK_ID']))
		{
			$iblockId = $arFilter['=IBLOCK_ID'];
		}
		if ($iblockId === null)
		{
			return null;
		}

		$db_prop = CIBlockProperty::GetPropertyArray(
			mb_substr($strField, 9),
			CIBlock::_MergeIBArrays(
				$iblockId,
				$arFilter["IBLOCK_CODE"] ?? false,
				$arFilter["~IBLOCK_ID"] ?? false,
				$arFilter["~IBLOCK_CODE"] ?? false
			)
		);
		if ($db_prop && $db_prop["PROPERTY_TYPE"] === IblockPropertyTable::TYPE_ELEMENT)
		{
			$ob = new CIBlockElement;
			$ob->subQueryProp = $db_prop;
			$ob->strField = $strField;
			$ob->arFilter = $arFilter;
			return $ob;
		}
	}
	elseif($strField == "ID")
	{
		$ob = new CIBlockElement;
		$ob->strField = $strField;
		$ob->arFilter = $arFilter;
		return $ob;
	}

	return null;
}