- Модуль: 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;
}