• Модуль: lists
  • Путь к файлу: ~/bitrix/modules/lists/lib/entity/element.php
  • Класс: BitrixListsEntityElement
  • Вызов: Element::getElements
private function getElements($navData)
{
	$elements = [];

	$fields = $this->listObject->getFields();

	$elementSelect = ["ID", "IBLOCK_ID", "NAME", "IBLOCK_SECTION_ID", "CREATED_BY", "BP_PUBLISHED", "CODE"];
	$propertyFields = [];
	$ignoreSortFields = ["S:Money", "PREVIEW_TEXT", "DETAIL_TEXT", "S:ECrm", "S:map_yandex", "PREVIEW_PICTURE",
		"DETAIL_PICTURE", "S:DiskFile", "IBLOCK_SECTION_ID", "BIZPROC", "COMMENTS"];

	$availableFieldsIdForSort = ["ID"];
	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";

		if (!($field["MULTIPLE"] == "Y" || in_array($field["TYPE"], $ignoreSortFields)))
		{
			$availableFieldsIdForSort[] = $fieldId;
		}
	}

	$order = $this->getOrder($availableFieldsIdForSort);

	$filter = [
		"=IBLOCK_TYPE" => $this->params["IBLOCK_TYPE_ID"],
		"IBLOCK_ID" => $this->iblockId,
		"ID" => $this->params["ELEMENT_ID"] ? $this->params["ELEMENT_ID"] : "",
		"=CODE" => $this->params["ELEMENT_CODE"] ? $this->params["ELEMENT_CODE"] : "",
		"SHOW_NEW" => (!empty($this->params["CAN_FULL_EDIT"]) && $this->params["CAN_FULL_EDIT"] == "Y" ? "Y" : "N"),
		"CHECK_PERMISSIONS" => "Y"
	];
	$filter = $this->getInputFilter($filter);
	$queryObject = CIBlockElement::getList($order, $filter, false, $navData, $elementSelect);
	while ($result = $queryObject->fetch())
	{
		$elements[$result["ID"]] = $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"];
				$elements[$result["ID"]]["PROPERTY_".$propertyId][
					$property["PROPERTY_VALUE_ID"]] = $property["VALUE"];
			}
		}
	}

	return array($elements, $queryObject);
}