logo

Определение отдела сотрудника по пользователю

Определить отдел, в котором работает сотрудник, можно с помощью приведенного ниже сценария (сотрудник задан в контекстной переменной context.Poljzovatelj).

Пример сценария с использованием PublicAPI

Примечание
Актуальная документация по PublicAPI доступна по ссылке.
Внимание!
Сценарий, указанный ниже, актуален для версий системы ELMA до 3.12.1 включительно.

Контекстные переменные:

  • context.Poljzovatelj – переменная типа Пользователь;
  • context.NaimenovanieOtdela переменная типа Строка.

Пространство имен:

using EleWise.ELMA.API;

Текст сценария:

context.NaimenovanieOtdela = PublicAPI.Portal.Security.User.GetUserDepartments(context.Poljzovatelj).FirstOrDefault().Name;

Пример сценария без использования PublicAPI

Для корректной работы сценария необходимо подключить пространство имен:
using EleWise.ELMA.Security.Models;
Текст сценария:
var department = context.Poljzovatelj.OrganizationItems.ToArray() 
.Union(context.Poljzovatelj.OrganizationGroups) 
.Select(organizationItem => 
{ 
  var parentOrganizationItem = organizationItem.ParentItem;                                 
  while (parentOrganizationItem != null && parentOrganizationItem.ItemType == OrganizationItemType.Department)
  parentOrganizationItem = parentOrganizationItem.ParentItem;                                                               
  return parentOrganizationItem.ParentItem != null ? parentOrganizationItem.ParentItem : null; 
  }) 
  .Where(u => u != null).FirstOrDefault();
context.NaimenovanieOtdela = department.Name;