Перейти к основному содержимому
Версия: 1.23.3

Фильтры

Фильтр используется для ограничения набора записей, отображаемых в списке (например, в связанном списке или справочнике). Фильтр задает определенные условия, которым записи должны соответствовать, чтобы оказаться в списке. Фильтры можно настроить с помощью конструктора условий.

Например, вам нужно отфильтровать пользователей, которые живут в Москве.

подсказка

Вы можете добавить фильтр со всеми условиями в избранное в меню навигации. Для этого перетащите навигационную цепочку во вкладку Избранное.

Инструменты фильтра

Фильтры состоят из следующих инструментов:

  • Конструктор условий (и навигационная цепочка как неотъемлемая его часть).
  • Поиск и сортировка:
    • Поле ввода в верхней части каждой колонки используется для поиска.
    • Нажмите на название колонки, чтобы сортировать результаты поиска.
  • Исключить совпадения/Показать совпадения (эти пункты находятся в контекстном меню. Чтобы открыть его, нажмите правой кнопкой мыши по ячейке списка).

Все эти компоненты формируют строку условий, которая отправляется в качестве GET-параметра в запросе. А возвращается и отображается отфильтрованный список записей.

Разница между конструктором условий в списках и обычным конструктором условий заключается в том, что в списках отображается навигационная цепочка.

Навигационная цепочка позволяет визуально оценить фильтр. Кроме того, она позволяет быстро редактировать фильтр путем перехода к заданному условию.

Сортировка позволяет добавлять свои условия (по возрастанию или по убыванию) в одно или несколько полей списка.

Как работают фильтры

Например, вам нужно найти зарегистрированные запросы Ивана Иванова с приоритетом Средний и Низкий и отсортированные по приоритету.

Для этого создайте следующий фильтр для списка Запросы (itsm_request):

После этого строку условий можно найти в GET-параметрах. Браузер добавляет %3D, %5E, %E для кодирования специальных символов.

GET
/list/task?condition=(state%3D-2%5Epriority<3%5Eassigned_user%3D160114171110151)%5EORDERBYDESCpriority
ЭлементОписание
state%3D-2Статус равно Зарегистрировано
priority<3Выборка будет содержать записи со значением меньше 3 в поле Приоритет (Средний и Низкий)
assigned_user%3D160114171110151ID записи пользователя
%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.

В таблице ниже поясняются особенности фильтрации при выборе полей указанных типов.

Тип колонкиОператорПоле поиска
ReferenceLIKE / NOTLIKE / STARTSWITH / ENDSWITHdisplay_value
ListLIKE / NOTLIKEdisplay_value
ChoiceLIKE / NOTLIKE / STARTSWITH / ENDSWITHtitle
Record ClassLIKE / NOTLIKE / STARTSWITH / ENDSWITHtitle

Подробнее читайте в статье Операторы условий.

Динамические фильтры

Динамические фильтры расширяют фильтры возможностью добавления JS-скриптов. Эта возможность доступна для конструктора условий в списках и для условий динамического определителя ссылок.

В конструкторе условий динамические фильтры доступны при выборе полей типа Reference и оператора равно (динамическое) или аналогичного. После этого появится список доступных динамических фильтров.

Скрипты динамических фильтров возвращают значение, которое будет использовано на месте динамического фильтра при фильтрации.

Чтобы создать новый динамический фильтр, выполните следующие шаги:

  1. Перейдите в Настройка системыДинамические фильтры.
  2. Нажмите Создать и заполните поля.
  3. Нажмите Сохранить или Сохранить и выйти, чтобы применить изменения.

В результате будет создана новая запись в таблице Настройки динамических фильтров (sys_filter_option_dynamic).

примечание

Вы также можете создать динамические фильтры для ID полей. Для этого задайте поля формы динамического фильтра следующим образом:

  1. В поле Тип колонки выберите Big Integer.
  2. В поле Связанная таблица выберите таблицу, к которой нужно применить этот фильтр.
  3. Установите флажок Активна.
  4. Установите флажок Доступен для фильтра.
  5. Введите скрипт, закончите заполнение формы и нажмите Сохранить.

Чтобы применить созданный динамический фильтр, укажите колонку таблицы с ID и оператор равно (динамическое) в конструкторе условий.

Поля формы Настройки динамических фильтров

ПолеОбязательноОписание
ЗаголовокДаУкажите название фильтра.
Тип колонкиНетУкажите тип колонки, по которому будет использоваться этот фильтр.
Связанная таблицаДаВыберите таблицу, к которой необходимо применить фильтр.
Доступен для фильтраНетУстановите флажок, чтобы фильтр отображался в списке фильтров.
Доступно для определителя ссылокНетУстановите флажок, чтобы фильтр был доступен для динамического определителя ссылок.
СкриптДа

Введите скрипт, который будет выполнять динамический фильтр. Вы можете использовать все методы классов серверного API. Объект current доступен на новых и уже созданных формах записей и содержит значения заполненных полей. Чтобы использовать объект current, установите флажок Доступно для определителя ссылок.

После выполнения скрипт должен вернуть ID записи или массив ID.

Особенностью JavaScript является то, что ID должно быть строкой, так как оно является большим числом.

АктивнаНетУстановите флажок, чтобы активировать фильтр.
ПорядокНетВведите номер, чтобы задать порядок вывода в виде списка.