• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/classes/general/iblockelement.php
  • Класс: CAllIBlockElement
  • Вызов: CAllIBlockElement::GetPropertyValues
static function GetPropertyValues($IBLOCK_ID, $arElementFilter, $extMode = false, $propertyFilter = array())
{
	global $DB;
	$IBLOCK_ID = (int)$IBLOCK_ID;
	$VERSION = CIBlockElement::GetIBVersion($IBLOCK_ID);

	$propertyID = array();
	if (isset($propertyFilter['ID']))
	{
		$propertyID = (is_array($propertyFilter['ID']) ? $propertyFilter['ID'] : array($propertyFilter['ID']));
		MainTypeCollection::normalizeArrayValuesByInt($propertyID);
	}

	$arElementFilter["IBLOCK_ID"] = $IBLOCK_ID;

	$element = new CIBlockElement;
	$element->strField = "ID";
	$element->prepareSql(array("ID"), $arElementFilter, false, false);

	if ($VERSION == 2)
		$strSql = "
			SELECT
				BEP.*
			FROM
				".$element->sFrom."
				INNER JOIN b_iblock_element_prop_s".$IBLOCK_ID." BEP ON BEP.IBLOCK_ELEMENT_ID = BE.ID
			WHERE 1=1 ".$element->sWhere."
			ORDER BY
				BEP.IBLOCK_ELEMENT_ID
		";
	else
		$strSql = "
			SELECT
				BE.ID IBLOCK_ELEMENT_ID
				,BEP.IBLOCK_PROPERTY_ID
				,BEP.VALUE
				,BEP.VALUE_NUM
				".($extMode ?
					",BEP.ID PROPERTY_VALUE_ID
					,BEP.DESCRIPTION
					" :
					""
				)."
			FROM
				".$element->sFrom."
				LEFT JOIN b_iblock_element_property BEP ON BEP.IBLOCK_ELEMENT_ID = BE.ID ".
			"WHERE 1=1 ".$element->sWhere.(!empty($propertyID) ? " AND BEP.IBLOCK_PROPERTY_ID IN (".implode(', ', $propertyID).")" : "")."
			ORDER BY
				BEP.IBLOCK_ELEMENT_ID, BEP.IBLOCK_PROPERTY_ID, BEP.ID
		";
	$rs = new CIBlockPropertyResult($DB->Query($strSql));
	$rs->setIBlock($IBLOCK_ID, $propertyID);
	$rs->setMode($extMode);

	return $rs;
}