• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/entity/element.php
  • Класс: BitrixListsEntityElement
  • Вызов: Element::getElementData
private function getElementData()
{
	$elementSelect = ["ID", "IBLOCK_ID", "NAME", "IBLOCK_SECTION_ID", "CREATED_BY", "BP_PUBLISHED", "CODE"];
	$elementFields = [];
	$elementProperty = [];

	$fields = $this->listObject->getFields();
	$propertyFields = [];
	foreach ($fields as $fieldId => $field)
	{
		if ($this->listObject->is_field($fieldId))
			$elementSelect[] = $fieldId;
		else
			$propertyFields[] = $fieldId;

		if ($fieldId == "CREATED_BY")
			$elementSelect[] = "CREATED_USER_NAME";
		if ($fieldId == "MODIFIED_BY")
			$elementSelect[] = "USER_NAME";
	}

	$filter = [
		"IBLOCK_TYPE" => $this->params["IBLOCK_TYPE_ID"],
		"IBLOCK_ID" => $this->iblockId,
		"ID" => $this->elementId,
		"CHECK_PERMISSIONS" => "N"
	];
	$queryObject = CIBlockElement::getList([], $filter, false, false, $elementSelect);
	if ($result = $queryObject->fetch())
	{
		$elementFields = $result;

		if (!empty($propertyFields))
		{
			$queryProperty = CIBlockElement::getProperty(
				$this->iblockId,
				$result["ID"], "SORT", "ASC",
				array("ACTIVE"=>"Y", "EMPTY"=>"N")
			);
			while ($property = $queryProperty->fetch())
			{
				$propertyId = $property["ID"];
				if (!array_key_exists($propertyId, $elementProperty))
				{
					$elementProperty[$propertyId] = $property;
					unset($elementProperty[$propertyId]["DESCRIPTION"]);
					unset($elementProperty[$propertyId]["VALUE_ENUM_ID"]);
					unset($elementProperty[$propertyId]["VALUE_ENUM"]);
					unset($elementProperty[$propertyId]["VALUE_XML_ID"]);
					$elementProperty[$propertyId]["FULL_VALUES"] = [];
					$elementProperty[$propertyId]["VALUES_LIST"] = [];
				}
				$elementProperty[$propertyId]["FULL_VALUES"][$property["PROPERTY_VALUE_ID"]] = [
					"VALUE" => $property["VALUE"],
					"DESCRIPTION" => $property["DESCRIPTION"],
				];
				$elementProperty[$propertyId]["VALUES_LIST"][$property["PROPERTY_VALUE_ID"]] = $property["VALUE"];
			}
		}
	}

	return [$elementSelect, $elementFields, $elementProperty];
}