Определение непосредственного руководителя в сценарии
В статье приведен пример сценарий для определения руководителя пользователя.
Пример сценария с использованием PublicAPI
Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.
Сценарий записывает всех начальников пользователя в контекстную переменную context.Nachaljniki (не только начальника отдела, но и выше по оргструктуре).
Контекстные переменные:
- context.Ispolnitelj – переменная типа Пользователь;
- context.Nachaljniki – переменная типа Пользователь, тип связи – Список.
Пространство имен:
1 | using EleWise.ELMA.API; |
Текст сценария:
1 2 3 4 | foreach (var chief in PublicAPI.Portal.Security.OrganizationItem.GetChiefByUser(context.Ispolnitelj)) { context.Nachaljniki.Add(chief); } |
Пример сценария без использования PublicAPI
В сценарии использованы контекстные переменные:
- context.Ispolnitelj – переменная Исполнитель, тип Пользователь;
- context.Nachaljnik – переменная Начальник, тип Пользователь.
Текст сценария:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | var chiefs = context.Ispolnitelj.OrganizationItems.ToArray ().Union (context.Ispolnitelj.OrganizationGroups).Select (organizationItem => { var parentOrganizationItem = organizationItem.ParentItem; while (parentOrganizationItem != null && parentOrganizationItem.User == null ) parentOrganizationItem = parentOrganizationItem.ParentItem; return parentOrganizationItem != null ? parentOrganizationItem.User : null ; }).Where (u => u != null ); if (!chiefs.Any()) //Если не найдено ни одного элемента организационной структуры (высшее звено) context.Nachaljnik = context.Ispolnitelj; //Начальник инициатора - сам инициатор else //Стандартная ветка { var chief = chiefs.First (); context.Nachaljnik = chief; } |