Мы реализовали поддержку использования компонентов с типом «Числовое поле» в фильтрах реестров - как централизованных (настраиваемых в Synergy IDE), так и пользовательских (настраиваемых в клиенте Synergy).
Обратите внимание: при выполнении сравнения числового поля с эталонным числом у значения поля отбрасывается дробная часть.
Пример: на форме расположен компонент
number
, в реестре настроен фильтр «Числовое поле» с условиемnumber
= 3
.
Записи реестра, где в компоненте
number
содержатся числа 3.2 и 3.8, отображаются в фильтре «Числовое поле», поскольку сравнение выполняется только по целой части. Такое поведение не является ошибкой Synergy.
До версии Synergy 4.0 возможности настройки фильтров реестров ограничивались сравнением значения поля с эталонным значением. При этом часто возникают задачи, когда необходимо, например, отобразить пользователю в фильтре только те записи, в которых указан этот пользователь или его подразделение.
Мы расширили возможности фильтров реестров, добавив возможность фильтрации по текущему пользователю, по должности текущего пользователя и по подразделениям.
В условиях фильтров реестров (в настройках реестра и в клиентской части) для компонентов «Объекты Synergy» добавлены новые условия:
для пользователей: «содержит текущего», «не содержит текущего»
для должностей: «содержит текущую», «не содержит текущую»
для подразделений:
«содержит текущее»/«не содержит текущее»
«содержит текущее или любое выше»/«не содержит текущее или любое выше»
«содержит текущее или дочернее»/«не содержит текущее или дочернее» - в этом случае учитывается только первый уровень дочерних подразделений.
Если для поля выбраны эти условия, то указание эталонного значения поля недоступно.
Предположим, необходимо настроить фильтры для реестра с такой формой:
Компоненты формы:
«Сотрудник» - выбор пользователей, код
user
«Должность» - выбор должностей, код
position
«Подразделение» - выбор подразделений, код
department
Дадим все права на реестр группе пользователей
Admin
- пользователи этой группы смогут
видеть все записи реестра. Для служебной группы,
соответствующей всей оргструктуре (в нашем случае это группа
ROOT
) дадим только право на создание
записей. В этом случае права пользователей на просмотр,
редактирование и удаление записей реестра будут зависеть
только от их прав на соответствующие фильтры.
Вариант 1. Фильтрация записей по указанному пользователю
Самый популярный вариант использования новых условий фильтров - отображение пользователю только тех записей реестра, в которых он указан.
Для этого достаточно добавить один фильтр по полю
user
, условие - «Содержит текущего
пользователя»:
Права на фильтр добавлены всем пользователям. В этом случае каждый пользователь в организации сможет увидеть фильтр, но при этом в этом фильтре будут содержаться только записи, соответствующие текущему пользователю.
Результат:
Видно, что фильтр содержит только запись, в которой указан текущий пользователь - Васильева Л.
Аналогично работает фильтрация по должностям. Фильтрацию по подразделениям рассмотрим подробнее.
Вариант 2. Фильтрация по текущему или дочернему подразделению
Предположим, что в Synergy настроена оргструктура такого вида:
ROOT
Отдел маркетинга
Отдел продаж
Отдел продаж Астана
Отдел продаж Алматы
Используется тот же реестр, что и в варианте 1. Права на
реестр прежние: все права у группы Admin
, у
служебной группы ROOT
есть только право
«Создание».
Настроим фильтр «Текущее или дочернее
подразделение», условие - department
содержит текущее или дочернее подразделение“. Права на фильтр
предоставлены всей организации.
Примечание: в случае с подразделениями ширина поля условия существенно меньше, чем название условия. Для того, чтобы выбрать нужное условие, вы можете воспользоваться тултипом элемента списка.
Для пользователя из группы Admin
, имеющего
доступ ко всем записям реестра, список записей выглядит так:
Для пользователя на должности генерального директора,
относящегося к корневому подразделению организации, в фильтре
отображаются записи, соответствующие подразделению
ROOT
и его непосредственным дочерним
подразделениям - отделу продаж и отделу маркетинга:
Записи, относящиеся к дочерним подразделениям отдела продаж, генеральному директору недоступны.
Пользователю, являющемуся руководителем подразделения «Отдел продаж», в фильтре отображены только записи, которые относятся к дочерним отделам Астаны и Алматы, а также к самому отделу продаж:
Записи, относящиеся к корневому подразделению и к соседнему отделу маркетинга, пользователю не видны.
Вариант 3. Фильтрация по текущему или родительскому подразделению
Теперь для той же оргструктуры и того же реестра рассмотрим другой вид фильтрации по подразделениям: по текущему или родительскому. В этом случае, в отличие от фильтрации по текущему или дочернему подразделению, учитываются все родительские подразделения вплоть до корневого.
Настроим фильтр «Текущее или родительское
подразделение», условие - department
содержит текущее или любое выше подразделение“. Права на
фильтр предоставлены всей организации.
Состав записей, доступных пользователю из группы
Admin
, такой же, как в предыдущем варианте.
Пользователю, относящемуся к подразделению «Отдел продаж
Астана», в фильтре доступны записи, относящиеся к
подразделениям «Отдел продаж Астана»,
«Отдел продаж» и корневому
ROOT
:
Для пользователя, относящегося к подразделению
ROOT
, в фильтре отображены только те
записи, в которых указано корневое подразделение
ROOT
: