- Модуль: main
- Путь к файлу: ~/bitrix/modules/main/lib/filter/entityufdataprovider.php
- Класс: BitrixMainFilterEntityUFDataProvider
- Вызов: EntityUFDataProvider::prepareFields
public function prepareFields()
{
$result = array();
foreach($this->getUserFields() as $fieldName => $userField)
{
if (
$userField['SHOW_FILTER'] === 'N'
|| $userField['USER_TYPE']['BASE_TYPE'] === 'file'
)
{
continue;
}
$typeID = $userField['USER_TYPE']['USER_TYPE_ID'];
//$isMultiple = isset($userField['MULTIPLE']) && $userField['MULTIPLE'] === 'Y';
$fieldLabel = $userField['LIST_FILTER_LABEL'] ?? '';
if($fieldLabel === '')
{
if(isset($userField['LIST_COLUMN_LABEL']))
{
$fieldLabel = $userField['LIST_COLUMN_LABEL'];
}
elseif(isset($userField['EDIT_FORM_LABEL']))
{
$fieldLabel = $userField['EDIT_FORM_LABEL'];
}
}
if ($fieldLabel == '')
{
$fieldLabel = $fieldName;
}
if($typeID === 'employee')
{
$result[$fieldName] = $this->createField(
$fieldName,
[
'type' => 'entity_selector',
'name' => $fieldLabel,
'partial' => true,
]
);
}
elseif($typeID === 'string' || $typeID === 'url' || $typeID === 'address' || $typeID === 'money')
{
$result[$fieldName] = $this->createField(
$fieldName,
[
'type' => 'text',
'name' => $fieldLabel,
'data' => [
'additionalFilter' => [
'isEmpty',
'hasAnyValue',
],
],
]
);
continue;
}
elseif($typeID === 'integer' || $typeID === 'double')
{
$result[$fieldName] = $this->createField(
$fieldName,
[
'type' => 'number',
'name' => $fieldLabel,
'data' => [
'additionalFilter' => [
'isEmpty',
'hasAnyValue',
],
],
]
);
continue;
}
elseif($typeID === 'boolean')
{
$result[$fieldName] = $this->createField(
$fieldName,
array(
'type' => 'checkbox',
'name' => $fieldLabel,
'data' => array('valueType' => 'numeric')
)
);
}
elseif($typeID === 'datetime' || $typeID === 'date')
{
$result[$fieldName] = $this->createField(
$fieldName,
[
'type' => 'date',
'name' => $fieldLabel,
'data' =>
[
'time' => $typeID === 'datetime',
'additionalFilter' => [
'isEmpty',
'hasAnyValue',
],
],
]
);
}
elseif(
($typeID === 'enumeration' || $typeID === 'crm_status')
&& isset($userField['SETTINGS']['DISPLAY'])
&& $userField['SETTINGS']['DISPLAY'] === EnumType::DISPLAY_DIALOG
)
{
$result[$fieldName] = $this->createField(
$fieldName,
[
'type' => 'entity_selector',
'name' => $fieldLabel,
'partial' => true,
]
);
}
elseif(
$typeID === 'enumeration'
|| $typeID === 'crm_status'
|| $typeID === 'iblock_element'
|| $typeID === 'iblock_section'
)
{
$result[$fieldName] = $this->createField(
$fieldName,
[
'type' => 'list',
'name' => $fieldLabel,
'partial' => true,
]
);
}
elseif($typeID === 'crm')
{
$result[$fieldName] = $this->createField(
$fieldName,
array(
'type' => 'dest_selector',
'name' => $fieldLabel,
'partial' => true
)
);
}
else
{
$result[$fieldName] = $this->createField(
$fieldName,
array(
'type' => 'custom',
'name' => $fieldLabel,
'data' => array('value' => '')
)
);
}
}
return $result;
}