• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/Service/Factory/Lead.php
  • Класс: Bitrix\Crm\Service\Factory\Lead
  • Вызов: Lead::getFieldsSettings
protected function getFieldsSettings(): array
{
	return [
		Item::FIELD_NAME_ID => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
		],
		Item::FIELD_NAME_TITLE => [
			'TYPE' => Field::TYPE_STRING,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue, \CCrmFieldInfoAttr::CanNotBeEmptied],
			'CLASS' => Field\Title::class,
		],
		Item::FIELD_NAME_HONORIFIC => [
			'TYPE' => Field::TYPE_CRM_STATUS,
			'CRM_STATUS_TYPE' => StatusTable::ENTITY_ID_HONORIFIC,
		],
		Item::FIELD_NAME_NAME => [
			'TYPE' => Field::TYPE_STRING,
		],
		Item::FIELD_NAME_SECOND_NAME => [
			'TYPE' => Field::TYPE_STRING,
		],
		Item::FIELD_NAME_LAST_NAME => [
			'TYPE' => Field::TYPE_STRING,
			// it's not a mistake that Field\LastName is not used here. Empty last name for lead is ok
		],
		Item::FIELD_NAME_FULL_NAME => [
			'TYPE' => Field::TYPE_STRING,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
				\CCrmFieldInfoAttr::AutoGenerated,
			],
			'CLASS' => Field\FullName::class,
		],
		Item::FIELD_NAME_BIRTHDATE => [
			'TYPE' => Field::TYPE_DATE,
		],
		Item::FIELD_NAME_BIRTHDAY_SORT => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
				\CCrmFieldInfoAttr::AutoGenerated,
			],
			'CLASS' => Field\BirthdaySort::class,
		],
		Item\Lead::FIELD_NAME_COMPANY_TITLE => [
			'TYPE' => Field::TYPE_STRING,
		],
		Item::FIELD_NAME_SOURCE_ID => [
			'TYPE' => Field::TYPE_CRM_STATUS,
			'CRM_STATUS_TYPE' => StatusTable::ENTITY_ID_SOURCE,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::HasDefaultValue],
		],
		Item::FIELD_NAME_SOURCE_DESCRIPTION => [
			'TYPE' => Field::TYPE_TEXT,
		],
		Item::FIELD_NAME_STAGE_ID => [
			'TYPE' => Field::TYPE_CRM_STATUS,
			'CRM_STATUS_TYPE' => $this->getStagesEntityId(),
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Progress],
			'CLASS' => Field\Stage::class,
		],
		Item\Lead::FIELD_NAME_STATUS_DESCRIPTION => [
			'TYPE' => Field::TYPE_TEXT,
		],
		Item::FIELD_NAME_STAGE_SEMANTIC_ID => [
			'TYPE' => Field::TYPE_STRING,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly],
			'CLASS' => Field\StageSemanticId::class,
		],
		Item::FIELD_NAME_POST => [
			'TYPE' => Field::TYPE_STRING,
		],
		Item::FIELD_NAME_CURRENCY_ID => [
			'TYPE' => Field::TYPE_CRM_CURRENCY,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::HasDefaultValue,
				\CCrmFieldInfoAttr::CanNotBeEmptied,
			],
			'CLASS' => Field\CurrencyId::class,
		],
		Item::FIELD_NAME_ACCOUNT_CURRENCY_ID => [
			'TYPE' => Field::TYPE_CRM_CURRENCY,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
				\CCrmFieldInfoAttr::HasDefaultValue,
			],
		],
		Item::FIELD_NAME_IS_MANUAL_OPPORTUNITY => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
		Item::FIELD_NAME_PRODUCTS => [
			'TYPE' => Field::TYPE_CRM_PRODUCT_ROW,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Multiple, \CCrmFieldInfoAttr::Hidden, \CCrmFieldInfoAttr::NotDisplayed],
		],
		Item::FIELD_NAME_OPPORTUNITY => [
			'TYPE' => Field::TYPE_DOUBLE,
			'CLASS' => Field\Opportunity::class,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
		Item::FIELD_NAME_OPPORTUNITY_ACCOUNT => [
			'TYPE' => Field::TYPE_DOUBLE,
			'ATTRIBUTES' => [
				\CCrmFieldInfoAttr::NotDisplayed,
				\CCrmFieldInfoAttr::Hidden,
				\CCrmFieldInfoAttr::ReadOnly,
			],
			'CLASS' => Field\OpportunityAccount::class,
		],
		Item::FIELD_NAME_OPENED => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Required],
			'CLASS' => Field\Opened::class,
		],
		Item::FIELD_NAME_COMMENTS => [
			'TYPE' => Field::TYPE_TEXT,
			'VALUE_TYPE' => Field::VALUE_TYPE_BB,
			'CLASS' => Field\Comments::class,
		],
		Item::FIELD_NAME_HAS_PHONE => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\HasPhone::class,
		],
		Item::FIELD_NAME_HAS_EMAIL => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\HasEmail::class,
		],
		Item::FIELD_NAME_HAS_IMOL => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\HasImol::class,
		],
		Item::FIELD_NAME_ASSIGNED => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::CanNotBeEmptied, \CCrmFieldInfoAttr::HasDefaultValue],
			'CLASS' => Field\Assigned::class,
		],
		Item::FIELD_NAME_CREATED_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\CreatedBy::class,
		],
		Item::FIELD_NAME_UPDATED_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\UpdatedBy::class,
		],
		Item::FIELD_NAME_MOVED_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\MovedBy::class,
		],
		Item::FIELD_NAME_LAST_ACTIVITY_BY => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
		],
		Item::FIELD_NAME_CREATED_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\CreatedTime::class,
		],
		Item::FIELD_NAME_UPDATED_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\UpdatedTime::class,
		],
		Item::FIELD_NAME_MOVED_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\MovedTime::class,
		],
		Item::FIELD_NAME_LAST_ACTIVITY_TIME => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::AutoGenerated],
			'CLASS' => Field\LastActivityTime::class,
		],
		Item::FIELD_NAME_COMPANY_ID => [
			'TYPE' => Field::TYPE_CRM_COMPANY,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
			'SETTINGS' => [
				'parentEntityTypeId' => \CCrmOwnerType::Company,
			],
		],
		Item::FIELD_NAME_CONTACT_ID => [
			'TYPE' => Field::TYPE_CRM_CONTACT,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Deprecated],
		],
		Item::FIELD_NAME_CONTACT_IDS => [
			'TYPE' => Field::TYPE_CRM_CONTACT,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple]
		],
		Item::FIELD_NAME_CONTACTS => [
			'TYPE' => Field::TYPE_CRM_CONTACT,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed, \CCrmFieldInfoAttr::Multiple]
		],
		Item::FIELD_NAME_IS_RETURN_CUSTOMER => [
			'TYPE' => Field::TYPE_BOOLEAN,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
			'CLASS' => Field\IsReturnCustomer::class,
			'SETTINGS' => [
				'isPrimarySource' => true,
			],
		],
		// it has similar logic to Item::FIELD_NAME_CLOSE_DATE, but they are not the same field.
		Item\Lead::FIELD_NAME_DATE_CLOSED => [
			'TYPE' => Field::TYPE_DATETIME,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::ReadOnly, \CCrmFieldInfoAttr::NotDisplayed],
			'CLASS' => Field\CloseDate::class,
			'SETTINGS' => [
				'isSetCurrentDateOnCompletionEnabled' => true,
			],
		],
		Item::FIELD_NAME_ORIGINATOR_ID => [
			'TYPE' => Field::TYPE_STRING,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
		Item::FIELD_NAME_ORIGIN_ID => [
			'TYPE' => Field::TYPE_STRING,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
		Item::FIELD_NAME_FACE_ID => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Hidden],
		],
		Item::FIELD_NAME_WEBFORM_ID => [
			'TYPE' => Field::TYPE_INTEGER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::NotDisplayed],
		],
		Item::FIELD_NAME_OBSERVERS => [
			'TYPE' => Field::TYPE_USER,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Multiple],
			'CLASS' => Field\Observers::class,
		],
		Item::FIELD_NAME_FM => [
			'TYPE' => Field::TYPE_CRM_MULTIFIELD,
			'ATTRIBUTES' => [\CCrmFieldInfoAttr::Multiple],
			'CLASS' => Field\Multifield::class,
		],
	];
}