Фильтры
Фильтр используется для ограничения набора записей, отображаемых в списке (например, в связанном списке или справочнике). Фильтр задает определенные условия, которым записи должны соответствовать, чтобы оказаться в списке. Фильтры можно настроить с помощью конструктора условий.
Например, вам нужно отфильтровать пользователей, которые живут в Москве.
Вы можете добавить фильтр со всеми условиями в избранное в меню навигации. Д ля этого перетащите навигационную цепочку во вкладку Избранное.
Инструменты фильтра
Фильтры состоят из следующих инструментов:
- Конструктор условий (и навигационная цепочка как неотъемлемая его часть).
- Поиск и сортировка:
- Поле ввода в верхней части каждой колонки используется для поиска.
- Нажмите на название колонки, чтобы сортировать результаты поиска.
- Исключить совпадения/Показать совпадения (эти пункты находятся в контекстном меню. Чтобы открыть его, нажмите правой кнопкой мыши по ячейке списка).
Все эти компоненты формируют строку условий, которая отправляется в качестве GET-параметра в запросе. А возвращается и отображается отфильтрованный список записей.
Разница между конструктором условий в списках и обычным конструктором условий заключается в том, что в списках отображается навигационная цепочка.
Навигационная цепочка позволяет визуально оценить фильтр. Кроме того, она позволяет быстро редактировать фильтр путем перехода к заданному условию.
Сортировка позволяет добавлять свои условия (по возрастанию или по убыванию) в одно или несколько полей списка.
Как работают фильтры
Например, вам нужно найти зарегистрированные запросы Ивана Иванова с приоритетом Средний и Низкий и отсортированные по приоритету.
Для этого создайте следующий фильтр для списка Запросы (itsm_request):
После этого строку условий можно найти в GET-параметрах. Браузер добавляет %3D
, %5E
, %E
для кодирования специальных символов.
/list/task?condition=(state%3D-2%5Epriority<3%5Eassigned_user%3D160114171110151)%5EORDERBYDESCpriority
Элемент | Описание |
---|---|
state%3D-2 | Статус равно Зарегистрировано |
priority<3 | Выборка будет содержать записи со значением меньше 3 в поле Приоритет (Средний и Низкий) |
assigned_user%3D160114171110151 | ID записи пользователя |
%5EORDERBYDESCpriority | Записи будут отсортированы по полю Приоритет в порядке убывания |
Фильтрация по полям типа Reference, List, Choice, Record Class и Field Name имеет некоторые особенности. Важно учитывать соотношение между полями Значение (value) и Отображаемое значение (display_value):
- Фильтрация происходит по значению поля value. Например, условие фильтра field_name = value, отображаемое условие будет field_title = display_value.
- Поиск колонки осуществляется по значению поля display_value. Фильтр, либо навигационная цепочка над ним заполняются условием field_name = value. В это же время от ображается условие field_title = display_value.
- Автозаполнение выполняется с помощью значений поля value или display_value.
В таблице ниже поясняются особенности фильтрации при выборе полей указанных типов.
Тип колонки | Оператор | Поле поиска |
---|---|---|
Reference | LIKE / NOTLIKE / STARTSWITH / ENDSWITH | display_value |
List | LIKE / NOTLIKE | display_value |
Choice | LIKE / NOTLIKE / STARTSWITH / ENDSWITH | title |
Record Class | LIKE / NOTLIKE / STARTSWITH / ENDSWITH | title |
Подробнее читайте в статье Операторы условий.
Динамические фильтры
Динамические фильтры расширяют фильтры возможностью добавления JS-скриптов. Эта возможность доступна для конструктора условий в списках и для условий динамического определителя ссылок.
В конструкторе условий динамические фильтры доступны при выборе полей типа Reference и оператора равно (динамич еское) или аналогичного. После этого появится список доступных динамических фильтров.
Скрипты динамических фильтров возвращают значение, которое будет использовано на месте динамического фильтра при фильтрации.
Чтобы создать новый динамический фильтр, выполните следующие шаги:
- Перейдите в Настройка системы → Динамические фильтры.
- Нажмите Создать и заполните поля.
- Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.
В результате будет создана новая запись в таблице Настройки динамических фильтров (sys_filter_option_dynamic).
Вы также можете создать динамические фильтры для ID полей. Для этого задайте поля формы динамического фильтра следующим образом:
- В поле Тип колонки выберите Big Integer.
- В поле Связанная таблица выберите таблицу, к которой нужно применить этот фильтр.
- Установите флажок Активна.
- Установите флажок Доступен для фильтра.
- Введите скрипт, закончите заполнение формы и нажмите Сохранить.
Чтобы применить созданный динамический фильтр, укажите колонку таблицы с ID и оператор равно (динамическое) в конструкторе условий.
Поля формы Настройки динамических фильтров
Поле | Обязательно | Описание |
---|---|---|
Заголовок | Да | Укажите название фильтра. |
Тип колонки | Нет | Укажите тип колонки, по которому будет использоваться этот фильтр. |
Связанная таблица | Да | Выберите таблицу, к которой необходимо применить фильтр. |
До ступен для фильтра | Нет | Установите флажок, чтобы фильтр отображался в списке фильтров. |
Доступно для определителя ссылок | Нет | Установите флажок, чтобы фильтр был доступен для динамического определителя ссылок. |
Скрипт | Да | Введите скрипт, который будет выполнять динамический фильтр. Вы можете использовать все методы классов серверного API. После выполнения скрипт должен вернуть ID записи или массив ID. Особенностью JavaScript является то, что ID должно быть строкой, так как оно является большим числом. |
Активна | Нет | Установите флажок, чтобы активировать фильтр. |
Порядок | Нет | Введите номер, чтобы задать порядок вывода в виде списка. |