| Код |
|---|
"UF_TASKS_F5": {
"ID": "653",
"ENTITY_ID": "TASKS_TASK",
"FIELD_NAME": "UF_TASKS_F5",
"USER_TYPE_ID": "enumeration",
"XML_ID": "",
"SORT": "100",
"MULTIPLE": "N",
"MANDATORY": "N",
"SHOW_FILTER": "E",
"SHOW_IN_LIST": "Y",
"EDIT_IN_LIST": "Y",
"IS_SEARCHABLE": "N",
"SETTINGS": {
"DISPLAY": "UI",
"LIST_HEIGHT": 5,
"CAPTION_NO_VALUE": "",
"SHOW_NO_VALUE": "Y"
},
"USER_TYPE": {
"USER_TYPE_ID": "enumeration",
"CLASS_NAME": "Bitrix\\Main\\UserField\\Types\\EnumType",
"EDIT_CALLBACK": [
"Bitrix\\Main\\UserField\\Types\\EnumType",
"renderEdit"
],
"VIEW_CALLBACK": [
"Bitrix\\Main\\UserField\\Types\\EnumType",
"renderView"
],
"USE_FIELD_COMPONENT": true,
"DESCRIPTION": "\u0421\u043f\u0438\u0441\u043e\u043a",
"BASE_TYPE": "enum"
},
"VALUE": false
},
|
Или еще есть USER_TYPE с аналогичным названием.
Осталось только понять как сам фильтр сделать...
UPD Разобрался! Опубликую код ниже. Не ругайтесь за качество кода, я новичок)
| Код |
|---|
# Customizing Filter & List for UfCustomPriority
function getEnumFields() { // Получаем идентификаторы полей тип "Список" в задачах
global $USER_FIELD_MANAGER;
$arFields = $USER_FIELD_MANAGER->GetUserFields("TASKS_TASK"); // Получили объект с полями задач (все поля)
$result = [];
foreach($arFields as $value){
if($value['USER_TYPE_ID'] == "enumeration"){
$result[] = $value['FIELD_NAME'];
}
}
return $result;
}
$ufFieldId = getEnumFields();
$ufFieldsCount = count($ufFieldId);
for ($i = 0; $i < $ufFieldsCount; $i++) {
$ufFieldString = "'".$ufFieldId[$i]."'";
$ufCustomPriority = \W4a\Tasks\TaskPriority::GetUfEnum($ufFieldId[$i]);
$priorityItems = [];
$priorityItemIDs = [];
foreach ($ufCustomPriority as $val)
{
$priorityItems[$val['ID']] = $val['VALUE'];
$priorityItemIDs[] = $val['ID'];
}
// Изменяем фильтр
$arResult['FILTER'][$ufFieldId[$i]] = array(
'id' => $ufFieldId[$i],
'name' => $arResult['FILTER'][$ufFieldId[$i]]['name'],
'type' => 'list',
'items' => $priorityItems,
);
$arResultRows = [];
//file_put_contents($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/search-duplicate-company/log/customFilter.txt",print_r('Пользовательское поле - '. $ufFieldId[$i], true)."\n",FILE_APPEND);
foreach ($arResult['ROWS'] as $row)
{
$arResultRow = $row;
$rowColumns = $row['columns'];
//file_put_contents($_SERVER["DOCUMENT_ROOT"]."/local/php_interface/include/search-duplicate-company/log/customFilter.txt",print_r('rowColumns - '. $row['columns'], true)."\n",FILE_APPEND);
$priorityItemId = $rowColumns[$ufFieldId[$i]];
if(in_array($priorityItemId, $priorityItemIDs))
$rowColumns[$ufFieldId[$i]] = $priorityItems[$priorityItemId];
$arResultRow['columns'] = $rowColumns;
$arResultRows[] = $arResultRow;
}
// Изменяем вывод в Гриде
$arResult['ROWS'] = $arResultRows;
}
|