• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/classes/general/restservice.php
  • Класс: \CCrmRestProxyBase
  • Вызов: CCrmRestProxyBase::getList
public function getList($order, $filter, $select, $start)
{
	$this->prepareListParams($order, $filter, $select);

	$navigation = CCrmRestService::getNavData($start);

	$enableMultiFields = false;
	$selectedFmTypeIDs = array();
	if(is_array($select) && !empty($select))
	{
		$supportedFmTypeIDs = $this->getSupportedMultiFieldTypeIDs();

		if(is_array($supportedFmTypeIDs) && !empty($supportedFmTypeIDs))
		{
			foreach($supportedFmTypeIDs as $fmTypeID)
			{
				if(in_array($fmTypeID, $select, true))
				{
					$selectedFmTypeIDs[] = $fmTypeID;
				}
			}
		}
		$enableMultiFields = !empty($selectedFmTypeIDs);
		if($enableMultiFields)
		{
			$identityFieldName = $this->getIdentityFieldName();
			if($identityFieldName === '')
			{
				throw new RestException('Could not find identity field name.');
			}

			if(!in_array($identityFieldName, $select, true))
			{
				$select[] = $identityFieldName;
			}
		}
	}

	$fieldsInfo = $this->getFieldsInfo();
	$this->internalizeFilterFields($filter, $fieldsInfo);
	$errors = array();
	$result = $this->innerGetList($order, $filter, $select, $navigation, $errors);

	if($result instanceOf CDBResult)
	{
		return $this->prepareListFromDbResult(
			$result,
			array('SELECTED_FM_TYPES' => $selectedFmTypeIDs)
		);
	}
	elseif(is_array($result))
	{
		return $this->prepareListFromArray(
			$result,
			array('SELECTED_FM_TYPES' => $selectedFmTypeIDs)
		);
	}

	if(empty($errors))
	{
		$errors[] = "Failed to get list. General error.";
	}

	throw new RestException(implode("\n", $errors));
}