На странице Список пользователей в админке 1С Битрикс содержится ограниченное количество полей для фильтрации:
Добавить пользовательские поля в фильтр можно через настройки поля:
Чтобы добавить стандартные поля пользователя в фильтр нужно изменить страницу в админке. Копируем файл /bitrix/modules/main/admin/user_admin.php в удобное место, например, /bitrix/php_interface/include/user_admin.php.
Заменяем в новом файле строки (закомментированы исходные строки):
/* require_once(dirname(__FILE__)."/../include/prolog_admin_before.php"); */
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/include/prolog_admin_before.php");
//...
/* IncludeModuleLangFile(__FILE__); */
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/user_admin.php");
Открываем файл /bitrix/admin/user_admin.php и заменяем путь на наш:
<?
/* require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/user_admin.php"); */
require_once($_SERVER["DOCUMENT_ROOT"]."/bitrix/php_interface/include/user_admin.php");
?>
Проверяем. Страница в админке должна выглядеть также, как и до изменений. Для примера, добавим возможность фильтрации по дате регистрации и компании.
Добавляем новые поля в фильтр пользоваталей. Находим массив $arFilterFields (~61 строка), добавляем в него новые строки:
...
"find_register_1",
"find_register_2",
"find_work_company",
...
Примерно на 130 строке добавляем новые строки в массив $arFilter:
if(CheckFilter($arFilterFields))
{
$arFilter = Array(
"ID" => $find_id,
...
"DATE_REGISTER_1" => $find_register_1,
"DATE_REGISTER_2" => $find_register_2,
"WORK_COMPANY" => $find_work_company,
...
);
...
}
Добавляем новые поля на форму фильтрации. Примерно на 508 строке пополняем список возможных полей фильтрации:
$arFindFields = array(
GetMessage('MAIN_FLT_USER_ID'),
...
GetMessage('MAIN_FLT_REGISTER_DATE'),
...
GetMessage('MAIN_FLT_WORK_COMPANY'),
...
);
Порядок здесь очень важен и должен соответствовать порядку вывода полей на форму фильтрации, на которую мы добавляем свои поля:
...
<tr>
<td><?echo GetMessage("MAIN_F_REGISTER").":"?></td>
<td><?echo CalendarPeriod("find_register_1", htmlspecialcharsbx($find_register_1), "find_register_2", htmlspecialcharsbx($find_register_2), "find_form","Y")?></td>
</tr>
...
<tr>
<td><?echo GetMessage("MAIN_F_WORK_COMPANY")?></td>
<td><input type="text" name="find_work_company" value="<?echo htmlspecialcharsbx($find_work_company)?>" size="47"><?=ShowFilterLogicHelp()?></td>
</tr>
...
Как видим, здесь используется функция вывода сообщений, поэтому в начале файла, после подключения языкового файла добавляем недостающие сообщения:
IncludeModuleLangFile($_SERVER["DOCUMENT_ROOT"]."/bitrix/modules/main/admin/user_admin.php");
$MESS["MAIN_F_REGISTER"] = "Дата регистрации";
$MESS["MAIN_FLT_REGISTER_DATE"] = "Дата регистрации";
$MESS["MAIN_F_WORK_COMPANY"] = "Компания";
$MESS["MAIN_FLT_WORK_COMPANY"] = "Компания";
Готово, нужные фильтры можно включить кнопкой "+" в форме фильтрации.