• Модуль: iblock
  • Путь к файлу: ~/bitrix/modules/iblock/lib/propertyindex/element.php
  • Класс: BitrixIblockPropertyIndexElement
  • Вызов: Element::loadElementProperties
protected function loadElementProperties(int $iblockId, array $elementFilter)
{
	if (!isset(self::$filterPropertyID[$iblockId]))
	{
		self::$filterPropertyID[$iblockId] = [];
		$properties = BitrixIblockSectionPropertyTable::getList(array(
			"select" => array("PROPERTY_ID"),
			"filter" => array(
				"=IBLOCK_ID" => array($this->iblockId, $this->skuIblockId),
				"=SMART_FILTER" => "Y",
			),
		));
		while ($property = $properties->fetch())
		{
			self::$filterPropertyID[$iblockId][$property['PROPERTY_ID']] = $property['PROPERTY_ID'];
		}
		unset($property);
		unset($properties);

		self::$filterPropertyID[$iblockId] = array_values(self::$filterPropertyID[$iblockId]);
		sort(self::$filterPropertyID[$iblockId]);
	}

	$elementList = CIBlockElement::getPropertyValues(
		$iblockId,
		$elementFilter,
		false,
		array('ID' => self::$filterPropertyID[$iblockId])
	);

	while ($element = $elementList->fetch())
	{
		foreach ($element as $propertyId => $value)
		{
			if ($value !== false)
			{
				if (!isset($this->elementPropertyValues[$propertyId]))
					$this->elementPropertyValues[$propertyId] = array();

				if (is_array($value))
					$this->elementPropertyValues[$propertyId] = array_merge($this->elementPropertyValues[$propertyId], $value);
				else
					$this->elementPropertyValues[$propertyId][] = $value;
			}
		}
	}
}