Фильтры используются в виджетах, отчетах, планировщике, иерархии задач.
Инструмент фильтрации только формирует условия отбора данных. Чтобы отбор работал, разработчик должен обеспечить прием и обработку параметров фильтра в хранимой процедуре, которая является источником данных. |
---|
Для настройки фильтров в интерфейсе администратора перейдите по ссылке Открыть настройки фильтрации.
Откроется окно для выбора фильтров. В нем можно выбрать один из преднастроенных в системе фильтров, при необходимости отредактировать его или создать новый фильтр.
Окно выбора фильтра
Если настройка Сохранять значения фильтра активна, то выбранное значение фильтра будет сохраняться при повторном открытии объекта. Если настройка не активна, то выбранный фильтр будет сброшен при повторном открытии.
Фильтр может содержать одно или несколько условий отбора. Один и тот же фильтр может применяться к различным объектам системы: виджетам, отчетам, иерархиям, данным планировщика. Поэтому имеет смысл давать фильтрам значимые названия, которые облегчат их дальнейшее использование:
Выпадающий список выбора фильтра
Создание фильтра
Если вы создаете новый фильтр, сначала укажите его имя и сохраните значение. После этого появится возможность для задания условий фильтрации (кнопка Добавить параметр). В режиме редактирования сразу открывается окно с настройками параметров:
Окно настройки фильтра
Чтобы добавить новый параметр отбора, нажмите кнопку Добавить параметр. Чтобы редактировать параметр, нажмите кнопку , а чтобы удалить -- кнопку в конце строки. Изменять порядок следования параметров отбора можно с помощью стрелок .
При создании и редактировании параметра отбора открывается окно настройки параметра фильтра.
Название |
Описание |
---|---|
Название |
Название параметра для отображения в фильтре в пользовательском интерфейсе |
Параметр |
Название параметра для передачи в объект, с которым связан фильтр |
Тип фильтра |
Возможные значения: •Строка •Число •Дата •Период •Выпадающий список •Категория (выбор категорий\разделов) •Пользователь (выбор пользователей) •Группа (выбор групп) •Оргструктура (выбор элемента оргструктуры) •Скрытый (скрытый фильтр, задаваемый смарт-выражением) |
Обязательное значение |
Если настройка активна, то без указания значения отчет не будет формироваться |
Только для чтения |
Если настройка активна, то параметр отображается, но недоступен для изменения |
Дополнительные параметры (набор дополнительных параметров меняется в зависимости от типа параметра) |
|
Свой \ Смарт-выражение |
Переключатель отображается только для параметров типа "Выпадающий список". В значении "Свой" список значений для выбора формируется вручную, в значении "Смарт-выражение" — возвращается смарт-выражением. Подробнее см. здесь |
Отложенная загрузка |
Отображается только для параметров типа "Выпадающий список" со списком значений из смарт-выражения. Рекомендуется включать для списков с несколькими десятками и сотнями значений. Если параметр включен, то список будет подгружаться асинхронно, не влияя на загрузку содержимого объекта |
Отображается только для параметров типа "Выпадающий список". Если настройка активна, то параметр может возвращать сразу несколько выбранных значений. Для параметров типа "Пользователь", "Группа", "Оргструкутра", "Категория" режим мультивыбора включен по умолчанию и не отображается для выбора |
|
Значение по умолчанию |
Значение, которое передается при открытии в портальный блок или отчет, с которым связан фильтр |
Для сохранения заданных параметров отбора нажмите кнопку Сохранить.
Особенности настройки разных типов фильтров
Период
Если настраивается отбор по периоду, вы можете выбрать один из преднастроенных периодов, таких как текущая неделя, текущий месяц, последние три месяца, текущий год и т.п., или указать произвольный период:
Параметр типа "Период" в пользовательском интерфейсе
Кроме того, вы можете вычислять период с помощью смарт-выражения. В общем случае смарт-выражение должно возвращать список из двух дат: { ДатаОт, ДатаДо }.
Если начало периода не ограничено, то вместо первой даты должно стоять значение null: { null, ДатаДо }. Если конец периода не ограничен, то смарт-выражение может возвращать список из одной даты { ДатаОт } или просто одну дату, без списка.
Если смарт-выражение задано как запрос TSQL, то запрос должен возвращать одну или две строки, и первая колонка должна быть датой. Значение первой колонки в первой строке интерпретируется как начало периода, а во второй строке (если она есть) — как конец периода.
Дата
Значение по умолчанию для параметра "Дата" должно быть отформатировано:
Смарт-выражение для значения параметра "Дата" по умолчанию
Выпадающий список
Если настраивается отбор с помощью выпадающего списка, вы можете сформировать свой выпадающий список, перечислив все его элементы:
Параметр типа "Выпадающий список" задается перечислением значений
или можете использовать смарт-выражение:
Параметр типа "Выпадающий список" задается смарт-выражением
Смарт-выражение должно возвращать выборку элементов. В этом случае поле "свойство значения" должно идентифицировать такой элемент (например, возвращать его ID), а поле "свойство названия" должно содержать описание элемента так, как его увидит пользователь. Например:
Смарт-выражение для параметра типа "Выпадающий список"
Значение по умолчанию для параметра отбора может быть задано как фиксированное или вычисляться с помощью смарта.
Если отмечен параметр Мультивыбор, то пользователь сможет выбрать несколько значений из списка:
Для больших списков (сотни записей) рекомендуется включать параметр Отложенная загрузка — тогда загрузка списка не будет замедлять работу с системой.
Параметр типа "Выпадающий список", который формируется с помощью смарт-выражения, может зависеть от значений, выбранных в других параметрах. Например, если один параметр задает категорию, то в другом параметре можно выбрать только статусы, которые есть в данной категории. Или если один параметр задает пользователя, а другой — задачи, где этот пользователь является заказчиком. Такие параметры называют зависимыми.
В настоящее время зависимым может быть только параметр типа "Выпадающий список", значения которого формируются смарт-фильтром. Для зависимого параметра нужно включить опции отложенная загрузка и мультивыбор. |
---|
Рассмотрим фильтр с тремя параметрами. Пусть второй параметр зависит от значения, выбранного в первом параметре.
Пример фильтра с зависимым параметром
В зависимом параметре должен быть отмечен один или несколько параметров, от которых он зависит:
Настройки зависимого параметра
Значения родительских параметров передаются в смарт-выражение в параметре @eventParam2 в виде JSON следующей структуры:
{"785":{"name":"param1","value":"111","type";"Dropdown"}}
где 785 — это ID родительского параметра (см. выше скриншот со списком параметров).
Пользователь, Группа, Оргструктура
Если фильтры типа Пользователь, Группа или Оргструктура не выбраны, то в параметр передается пустая строка.
Множественный выбор
Если используется выпадающий список со множественным выбором или фильтры типа Пользователь, Группа, Оргструкутра, Категория, то в параметр передается строка, в которой через запятую перечислены ID выбранных элементов. Если в фильтре Категория выбран раздел, то возвращаются ID всех входящих в него категорий.
Скрытый отбор
Если необходимо дополнительно отфильтровать выводимые в блоке данные по значению определенного параметра, используйте тип фильтра "Скрытый". В нем вы можете задать условие с помощью фиксированного значения или с помощью смарт-выражения:
Параметр типа "Скрытый"
Использование фильтров в хранимых процедурах
Параметры из фильтров могут обрабатываться в хранимых процедурах, которые являются источниками данных для портальных блоков, отчетов, иерархий задач, планировщиков.
Параметры передаются в хранимую процедуру в формате XML. Для периода передаются два значения From и To, для остальных параметров передается одно значение Value.
Пример использования параметров фильтра в тексте хранимой процедуры
... declare @StartDate date = (select cast(value as date) from dbo.fn_rep_params(@XmlParam) where name = 'StartDate') declare @Filial date = (select cast(value as date) from dbo.fn_rep_params(@XmlParam) where name = 'Filial') |