public function prepareFieldData($fieldID): ?array
{
$result = null;
if (
in_array($fieldID, $this->getFieldNamesByType(static::TYPE_USER, static::DISPLAY_IN_FILTER))
&& $fieldID !== Item::FIELD_NAME_PRODUCTS.'.PRODUCT_ID'
&& $fieldID !== Item::FIELD_NAME_WEBFORM_ID
)
{
$factory = \Bitrix\Crm\Service\Container::getInstance()->getFactory($this->getEntityTypeId());
$referenceClass = ($factory ? $factory->getDataClass() : null);
$params = [
'fieldName' => $fieldID,
'entityTypeId' => $this->getEntityTypeId(),
'module' => 'crm',
'referenceClass' => $fieldID !== Item::FIELD_NAME_OBSERVERS ? $referenceClass : null,
];
if ($factory->isCountersEnabled() && $fieldID === Item::FIELD_NAME_ASSIGNED)
{
$params['isEnableAllUsers'] = true;
$params['isEnableOtherUsers'] = true;
}
if ($fieldID === 'ACTIVITY_RESPONSIBLE_IDS')
{
$params['referenceClass'] = null;
$params['isEnableAllUsers'] = true;
$params['isEnableOtherUsers'] = true;
}
return $this->getUserEntitySelectorParams(
EntitySelector::CONTEXT,
$params
);
}
if (in_array($fieldID, $this->getFieldNamesByType(static::TYPE_CRM_ENTITY, static::DISPLAY_IN_FILTER)))
{
$result = [
'params' => [
'apiVersion' => 3,
'context' => EntitySelector::CONTEXT,
'multiple' => 'N',
'contextCode' => 'CRM',
'useClientDatabase' => 'N',
'enableAll' => 'N',
'enableUsers' => 'N',
'enableSonetgroups' => 'N',
'enableDepartments' => 'N',
'allowEmailInvitation' => 'N',
'allowSearchEmailUsers' => 'N',
'departmentSelectDisable' => 'Y',
'isNumeric' => 'Y',
'enableCrm' => 'Y',
]
];
if ($fieldID === Item::FIELD_NAME_CONTACT_ID)
{
$result['params']['enableCrmContacts'] = 'Y';
$result['params']['prefix'] = UISelector\CrmContacts::PREFIX_FULL;
}
elseif ($fieldID === Item::FIELD_NAME_COMPANY_ID || $fieldID === Item::FIELD_NAME_MYCOMPANY_ID)
{
$result['params']['enableCrmCompanies'] = 'Y';
$result['params']['prefix'] = UISelector\CrmCompanies::PREFIX_FULL;
if ($fieldID === Item::FIELD_NAME_MYCOMPANY_ID)
{
$result['params']['onlyMyCompanies'] = 'Y';
}
}
elseif ($fieldID === Item::FIELD_NAME_PRODUCTS.'.PRODUCT_ID')
{
$result['params']['enableCrmProducts'] = 'Y';
$result['params']['prefix'] = UISelector\CrmProducts::PREFIX_FULL;
}
}
elseif (in_array($fieldID, $this->getFieldNamesByType(static::TYPE_ENTITY_SELECTOR, static::DISPLAY_IN_FILTER)))
{
$result = [
'params' => [
'multiple' => 'N',
'dialogOptions' => [
'height' => 200,
'context' => EntitySelector::CONTEXT,
'entities' => [],
],
],
];
if (
$fieldID === Item::FIELD_NAME_PRODUCTS.'.PRODUCT_ID'
&& Loader::includeModule('iblock')
&& Loader::includeModule('catalog')
)
{
$result['params']['dialogOptions']['context'] = 'catalog-products';
$result['params']['dialogOptions']['entities'] = [
[
'id' => 'product',
'options' => [
'iblockId' => \Bitrix\Crm\Product\Catalog::getDefaultId(),
'basePriceId' => \Bitrix\Crm\Product\Price::getBaseId(),
],
]
];
}
elseif ($fieldID === Item::FIELD_NAME_WEBFORM_ID)
{
$result['params'] = \Bitrix\Crm\WebForm\Helper::getEntitySelectorParams(
$this->factory->getEntityTypeId(),
Item::FIELD_NAME_WEBFORM_ID
)['params'];
}
}
elseif ($fieldID === Item::FIELD_NAME_CURRENCY_ID)
{
$result = [
'params' => ['multiple' => 'Y'],
'items' => Currency::getCurrencyList(),
];
}
elseif ($fieldID === Item::FIELD_NAME_STAGE_ID || $fieldID === Item::FIELD_NAME_PREVIOUS_STAGE_ID)
{
$result = [
'params' => ['multiple' => 'Y'],
'items' => [],
];
foreach($this->factory->getStages($this->settings->getCategoryId()) as $stage)
{
$result['items'][$stage->getStatusId()] = $stage->getName();
}
}
elseif ($fieldID === static::FIELD_STAGE_SEMANTIC)
{
$result = [
'params' => ['multiple' => 'Y'],
'items' => [
PhaseSemantics::PROCESS => Loc::getMessage('CRM_FILTER_ITEMDATAPROVIDER_STAGE_SEMANTIC_IN_WORK'),
PhaseSemantics::SUCCESS => Loc::getMessage('CRM_FILTER_ITEMDATAPROVIDER_STAGE_SEMANTIC_SUCCESS'),
PhaseSemantics::FAILURE => Loc::getMessage('CRM_FILTER_ITEMDATAPROVIDER_STAGE_SEMANTIC_FAIL'),
],
];
}
elseif (\Bitrix\Crm\Tracking\UI\Filter::hasField($fieldID))
{
$result = \Bitrix\Crm\Tracking\UI\Filter::getFieldData($fieldID);
}
elseif ($fieldID === Item::FIELD_NAME_SOURCE_ID)
{
$result = [
'params' => ['multiple' => 'Y'],
'items' => StatusTable::getStatusesList(StatusTable::ENTITY_ID_SOURCE),
];
}
elseif (ParentFieldManager::isParentFieldName($fieldID))
{
$result = Container::getInstance()->getParentFieldManager()->prepareParentFieldDataForFilterProvider(
$this->factory->getEntityTypeId(),
$fieldID
);
}
elseif($fieldID === 'ACTIVITY_COUNTER')
{
return EntityCounterType::getListFilterInfo(
['params' => ['multiple' => 'Y']],
['ENTITY_TYPE_ID' => \CCrmOwnerType::SmartInvoice]
);
}
return $result;
}