Получение пользователей по элементу оргструктуры скриптом
Иногда в сценарии возникает необходимость получить пользователей, назначенных на определённую должность.
Для этого применяется метод GetUsersByDepartament.
Алгоритм использования метода следующий:
- найти элемент оргструктуры по идентификатору или по названию;
- получить пользователей, занимающих выбранную должность.
Существует два способа нахождения элемента оргструктуры: по идентификатору и по названию.
Идентификатор элемента оргструктуры можно посмотреть в базе данных в таблице OrganizationItem.
Пользователей, занимающих определённую должность, можно получить с помощью метода GetUsersByDepartament, передав в качестве параметра элемент оргструктуры. Данный метод всегда возвращает коллекцию пользователей. Если на выбранную должность может быть назначен ровно один сотрудник, то его можно получить из коллекции методом FirstOrDefault().
Примеры сценариев с использованием PublicAPI
Пространство имен:
1 | using EleWise.ELMA.API; |
Контекстная переменная:
- context.Poljzovatelj – переменная типа Пользователь.
Текст сценария:
1 2 | //Получение элемента оргструктуры по Id context.Poljzovatelj = PublicAPI.Portal.Security.OrganizationItem.GetUsersByDepartament(PublicAPI.Portal.Security.OrganizationItem.LoadOrNull(1)).FirstOrDefault(); |
Контекстная переменная:
- context.Poljzovateli – переменная типа Пользователь, тип связи – Список.
Текст сценария:
1 2 | //Получение элемента оргструктуры по названию и добавление их в контекстную переменную context.Poljzovateli context.Poljzovateli.AddAll(PublicAPI.Portal.Security.OrganizationItem.GetUsersByDepartament(PublicAPI.Portal.Security.OrganizationItem.Find( "Name = ’Юридический отдел’" ).FirstOrDefault())); |
Получение пользователей, входящих в определённую группу описано в отдельной статье.
Пример сценария без использования PublicAPI
В скрипте используются контекстные переменные:
- context.Poljzovatelj – переменная типа Пользователь, тип связи – Одиночная;
- context.SpisokPoljzovateley – переменная типа Пользователь, тип связи – Список.
Необходимо подключить пространства имен:
1 2 3 | using EleWise.ELMA.Security.Managers; using EleWise.ELMA.Security.Models; using EleWise.ELMA.Model.Services; |
Текст скрипта:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 | //получение элемента оргструктуры по идентификатору var orgItemPost = OrganizationItemManager.Instance.LoadOrNull(1); //проверка, найден ли элемент оргструктуры с таким идентификатором if (orgItemPost != null ) { //получение пользователя, занимающего определённую должность var userOnPost = (User)UserManager.Instance.GetUsersByDepartament(orgItemPost).FirstOrDefault(); //запись полученного пользователя в переменную контекста context.Poljzovatelj = userOnPost; } else { //действия, в случае если элемент оргструктуры с таким идентификатором не найден } //получение элемента оргструктуры по названию var orgitemFilter = InterfaceActivator.Create<Filter>(); orgitemFilter.Query = "Name LIKE ’Юридический отдел’" ; var ortItemDepartment = OrganizationItemManager.Instance.Find(orgitemFilter, null ).FirstOrDefault(); //проверка, найден ли элемент оргструктуры с таким названием if (ortItemDepartment != null ) { //получение пользователей, занимающих определённую должность var userList = UserManager.Instance.GetUsersByDepartament(ortItemDepartment); //запись полученных пользователей в переменную контекста foreach (var user in userList) { context.SpisokPoljzovateley.Add((User)user); } } else { //действия, в случае если элемент оргструктуры с таким названием не найден } |