logo

Определение непосредственного руководителя в сценарии

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

Пример сценария с использованием 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;
}
Следует отметить, что в случае, если пользователь, от имени которого запускается сценарий, является высшим звеном организационной структуры, он же и будет назначен своим начальником.