• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Display/Field.php
  • Класс: Bitrix\Crm\Service\Display\Field
  • Вызов: Field::createFromBaseField
static function createFromBaseField(string $id, array $baseFieldInfo): Field
{
	$displayParams = [];

	$type = $baseFieldInfo['TYPE'] ?? 'string';
	$settings = $baseFieldInfo['SETTINGS'] ?? [];

	// @todo maybe move it to a children classes?
	switch ($type)
	{
		case 'crm_entity':
			$parentEntityTypeId = (int)($settings['parentEntityTypeId'] ?? 0);
			if ($parentEntityTypeId > 0)
			{
				$type = 'crm';
				$displayParams = [
					CCrmOwnerType::ResolveName($parentEntityTypeId) => 'Y',
				];
			}
			break;
		case 'crm':
			$crmFieldsMap = [
				'LEAD_ID' => [CCrmOwnerType::LeadName => 'Y'],
				'DEAL_ID' => [CCrmOwnerType::DealName => 'Y'],
				'CONTACT_ID' => [CCrmOwnerType::ContactName => 'Y'],
				'COMPANY_ID' => [CCrmOwnerType::CompanyName => 'Y'],
				'QUOTE_ID' => [CCrmOwnerType::QuoteName => 'Y'],
				'INVOICE_ID' => [CCrmOwnerType::InvoiceName => 'Y'],
			];
			$displayParams = $crmFieldsMap[$id] ?? [];
			break;
		case 'crm_lead':
			$displayParams = [CCrmOwnerType::LeadName => 'Y'];
			$type = 'crm';
			break;
		case 'crm_deal':
			$displayParams = [CCrmOwnerType::DealName => 'Y'];
			$type = 'crm';
			break;
		case 'crm_contact':
			$displayParams = [CCrmOwnerType::ContactName => 'Y'];
			$type = 'crm';
			break;
		case 'crm_company':
			$displayParams = [CCrmOwnerType::CompanyName => 'Y'];
			$type = 'crm';
			break;
		case 'crm_quote':
			$displayParams = [CCrmOwnerType::QuoteName => 'Y'];
			$type = 'crm';
			break;
		case 'crm_invoice':
			$displayParams = [CCrmOwnerType::InvoiceName => 'Y'];
			$type = 'crm';
			break;
		case 'crm_status':
			$displayParams = [
				'ENTITY_TYPE' => $baseFieldInfo['CRM_STATUS_TYPE'],
			];
			break;

		case 'char':
			$type = 'boolean';
			break;
	}
	if (isset($baseFieldInfo['VALUE_TYPE']))
	{
		$displayParams['VALUE_TYPE'] = $baseFieldInfo['VALUE_TYPE'];
	}
	$field =
		(self::getInstance($type, $id))
			->addDisplayParams($displayParams)
	;

	if (isset($baseFieldInfo['TITLE']))
	{
		$field->setTitle($baseFieldInfo['TITLE']);
	}

	return $field;
}