• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/filter/contactdataprovider.php
  • Класс: Bitrix\Crm\Filter\ContactDataProvider
  • Вызов: ContactDataProvider::prepareFieldData
public function prepareFieldData($fieldID)
{
	if($fieldID === 'SOURCE_ID')
	{
		return array(
			'params' => array('multiple' => 'Y'),
			'items' => \CCrmStatus::GetStatusList('SOURCE')
		);
	}
	elseif($fieldID === 'TYPE_ID')
	{
		return array(
			'params' => array('multiple' => 'Y'),
			'items' => \CCrmStatus::GetStatusList('CONTACT_TYPE')
		);
	}
	elseif(in_array($fieldID, ['ASSIGNED_BY_ID', 'CREATED_BY_ID', 'MODIFY_BY_ID', 'ACTIVITY_RESPONSIBLE_IDS'], true))
	{
		$referenceClass = ($this->factory ? $this->factory->getDataClass() : null);
		if ($fieldID === 'ACTIVITY_RESPONSIBLE_IDS')
		{
			$referenceClass = null;
		}

		$isEnableAllUsers = in_array($fieldID, ['ASSIGNED_BY_ID', 'ACTIVITY_RESPONSIBLE_IDS'], true);
		$isEnableOtherUsers = in_array($fieldID, ['ASSIGNED_BY_ID', 'ACTIVITY_RESPONSIBLE_IDS'], true);

		return $this->getUserEntitySelectorParams(
			EntitySelector::CONTEXT,
			[
				'fieldName' => $fieldID,
				'referenceClass' => $referenceClass,
				'isEnableAllUsers' => $isEnableAllUsers,
				'isEnableOtherUsers' => $isEnableOtherUsers,
			]
		);
	}
	elseif($fieldID === 'COMMUNICATION_TYPE')
	{
		return array(
			'params' => array('multiple' => 'Y'),
			'items' => \CCrmFieldMulti::PrepareListItems(array(\CCrmFieldMulti::PHONE, \CCrmFieldMulti::EMAIL))
		);
	}
	elseif($fieldID === 'COMPANY_ID')
	{
		$companyCategoryId = $this->getCompanyCategoryId();

		return [
			'params' => [
				'multiple' => 'Y',
				'dialogOptions' => [
					'height' => 200,
					'context' => 'CRM_CONTACT_FILTER_COMPANY_ID',
					'entities' => [
						[
							'id' => 'company',
							'dynamicLoad' => true,
							'dynamicSearch' => true,
							'options' => [
								'categoryId' => $companyCategoryId ?: 0,
							],
						]
					],
					'dropdownMode' => false,
				],
			],
		];
	}
	elseif(Crm\Tracking\UI\Filter::hasField($fieldID))
	{
		return Crm\Tracking\UI\Filter::getFieldData($fieldID);
	}
	elseif($fieldID === 'WEBFORM_ID')
	{
		return Crm\WebForm\Helper::getEntitySelectorParams(\CCrmOwnerType::Contact);
	}
	elseif($fieldID === 'ORIGINATOR_ID')
	{
		return array(
			'items' => array('' => Loc::getMessage('CRM_CONTACT_FILTER_ALL'))
				+ \CCrmExternalSaleHelper::PrepareListItems()
		);
	}
	elseif($fieldID === 'ACTIVITY_COUNTER')
	{
		return EntityCounterType::getListFilterInfo(
			array('params' => array('multiple' => 'Y')),
			array('ENTITY_TYPE_ID' => \CCrmOwnerType::Contact)
		);
	}
	elseif (ParentFieldManager::isParentFieldName($fieldID))
	{
		return Container::getInstance()->getParentFieldManager()->prepareParentFieldDataForFilterProvider(
			\CCrmOwnerType::Contact,
			$fieldID
		);
	}

	return null;
}