3.3.6. Новые условия в фильтрах реестров

3.3.6.1. Числовое поле

Мы реализовали поддержку использования компонентов с типом «Числовое поле» в фильтрах реестров - как централизованных (настраиваемых в Synergy IDE), так и пользовательских (настраиваемых в клиенте Synergy).

Обратите внимание: при выполнении сравнения числового поля с эталонным числом у значения поля отбрасывается дробная часть.

Пример: на форме расположен компонент number, в реестре настроен фильтр «Числовое поле» с условием number = 3.

Рисунок 3.79. Настроенный фильтр по числовому полю

Настроенный фильтр по числовому полю

Рисунок 3.80. Результат

Результат

Записи реестра, где в компоненте number содержатся числа 3.2 и 3.8, отображаются в фильтре «Числовое поле», поскольку сравнение выполняется только по целой части. Такое поведение не является ошибкой Synergy.

3.3.6.2. Фильтрация по текущему пользователю

До версии Synergy 4.0 возможности настройки фильтров реестров ограничивались сравнением значения поля с эталонным значением. При этом часто возникают задачи, когда необходимо, например, отобразить пользователю в фильтре только те записи, в которых указан этот пользователь или его подразделение.

Мы расширили возможности фильтров реестров, добавив возможность фильтрации по текущему пользователю, по должности текущего пользователя и по подразделениям.

В условиях фильтров реестров (в настройках реестра и в клиентской части) для компонентов «Объекты Synergy» добавлены новые условия:

  • для пользователей: «содержит текущего», «не содержит текущего»

  • для должностей: «содержит текущую», «не содержит текущую»

  • для подразделений:

    • «содержит текущее»/«не содержит текущее»

    • «содержит текущее или любое выше»/«не содержит текущее или любое выше»

    • «содержит текущее или дочернее»/«не содержит текущее или дочернее» - в этом случае учитывается только первый уровень дочерних подразделений.

Если для поля выбраны эти условия, то указание эталонного значения поля недоступно.

Предположим, необходимо настроить фильтры для реестра с такой формой:

Рисунок 3.81. Пример формы

Пример формы

Компоненты формы:

  • «Сотрудник» - выбор пользователей, код user

  • «Должность» - выбор должностей, код position

  • «Подразделение» - выбор подразделений, код department

Дадим все права на реестр группе пользователей Admin - пользователи этой группы смогут видеть все записи реестра. Для служебной группы, соответствующей всей оргструктуре (в нашем случае это группа ROOT) дадим только право на создание записей. В этом случае права пользователей на просмотр, редактирование и удаление записей реестра будут зависеть только от их прав на соответствующие фильтры.

Рисунок 3.82. Права на реестр

Права на реестр

Вариант 1. Фильтрация записей по указанному пользователю

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

Для этого достаточно добавить один фильтр по полю user, условие - «Содержит текущего пользователя»:

Рисунок 3.83. Фильтрация записей по указанному пользователю

Фильтрация записей по указанному пользователю

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

Результат:

Рисунок 3.84. Все записи реестра (вид для пользователя из группы Admin)

Все записи реестра (вид для пользователя из группы Admin)

Рисунок 3.85. Вид для пользователя Васильева

Вид для пользователя Васильева

Видно, что фильтр содержит только запись, в которой указан текущий пользователь - Васильева Л.

Аналогично работает фильтрация по должностям. Фильтрацию по подразделениям рассмотрим подробнее.

Вариант 2. Фильтрация по текущему или дочернему подразделению

Предположим, что в Synergy настроена оргструктура такого вида:

  • ROOT

    • Отдел маркетинга

    • Отдел продаж

      • Отдел продаж Астана

      • Отдел продаж Алматы

Используется тот же реестр, что и в варианте 1. Права на реестр прежние: все права у группы Admin, у служебной группы ROOT есть только право «Создание».

Настроим фильтр «Текущее или дочернее подразделение», условие - department содержит текущее или дочернее подразделение“. Права на фильтр предоставлены всей организации.

Рисунок 3.86. Настроенный фильтр по подразделениям

Настроенный фильтр по подразделениям

Примечание: в случае с подразделениями ширина поля условия существенно меньше, чем название условия. Для того, чтобы выбрать нужное условие, вы можете воспользоваться тултипом элемента списка.

Для пользователя из группы Admin, имеющего доступ ко всем записям реестра, список записей выглядит так:

Рисунок 3.87. Все записи реестра

Все записи реестра

Для пользователя на должности генерального директора, относящегося к корневому подразделению организации, в фильтре отображаются записи, соответствующие подразделению ROOT и его непосредственным дочерним подразделениям - отделу продаж и отделу маркетинга:

Рисунок 3.88. Записи, доступные пользователю из корневого подразделения

Записи, доступные пользователю из корневого подразделения

Записи, относящиеся к дочерним подразделениям отдела продаж, генеральному директору недоступны.

Пользователю, являющемуся руководителем подразделения «Отдел продаж», в фильтре отображены только записи, которые относятся к дочерним отделам Астаны и Алматы, а также к самому отделу продаж:

Рисунок 3.89. Записи, доступные пользователю подразделения «Отдел продаж»

Записи, доступные пользователю подразделения «Отдел продаж»

Записи, относящиеся к корневому подразделению и к соседнему отделу маркетинга, пользователю не видны.

Вариант 3. Фильтрация по текущему или родительскому подразделению

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

Настроим фильтр «Текущее или родительское подразделение», условие - department содержит текущее или любое выше подразделение“. Права на фильтр предоставлены всей организации.

Состав записей, доступных пользователю из группы Admin, такой же, как в предыдущем варианте.

Пользователю, относящемуся к подразделению «Отдел продаж Астана», в фильтре доступны записи, относящиеся к подразделениям «Отдел продаж Астана», «Отдел продаж» и корневому ROOT:

Рисунок 3.90. Записи, доступные пользователю подразделения «Отдел продаж Астана»

Записи, доступные пользователю подразделения «Отдел продаж Астана»

Для пользователя, относящегося к подразделению ROOT, в фильтре отображены только те записи, в которых указано корневое подразделение ROOT:

Рисунок 3.91. Записи, доступные пользователю из корневого подразделения

Записи, доступные пользователю из корневого подразделения