...

Получить начальника пользователя

Тема в разделе "Разработчикам", создана пользователем inteco, 12 дек 2017.

  1. inteco

    inteco Member

    Добрый день!
    Банальная тема. Получаю коллекцию начальников:

    var chiefs = PublicAPI.Portal.Security.OrganizationItem.GetChiefByUser(context.Poljzovatelj);

    и, о ужас!!!, сортированную по фамилиям.

    Как получить иерархию? Мне нужен ближайший начальник.
     
  2. pushkarev

    pushkarev Active Member

    Добрый день, думаю вам нужен чуть-чуть другой метод, для получения руководителей в иерархическом порядке:
    Код:
    var chiefs = PublicAPI.Portal.Security.OrganizationItem.GetUserChiefsHierarchy(context.Poljzovatelj);
     
  3. inteco

    inteco Member

    Может быть, но имеем явное несовпадение типов:
    Мне нужен тип User, а в вашем случае переменная chiefs имеет тип HierarchyChiefDisplayModel
    Какая-то "Модель отображения".
     
  4. pushkarev

    pushkarev Active Member

    Действительно, не обратил внимания. Тогда предлагаю следующий код:
    Код:
    var managers =  PublicAPI.Portal.Security.OrganizationItem.GetUserChiefsHierarchy(user).GetUsersHierarchy(user.OrganizationItems.FirstOrDefault());
    Замечу, что для использования типа HierarchyChiefDisplayModel необходимо добавить сборку EleWise.ELMA.Security. Надеюсь код работает, сам не тестировал.
    Так же можете посмотреть вот эту статью из базы знаний: https://www.elma-bpm.ru/kb/article-35.html
     
  5. inteco

    inteco Member

    Тест выдал ошибку:
    Ошибка при выполнении сценария: Значение не может быть неопределенным. Имя параметра: key
    [System.ArgumentNullException: Значение не может быть неопределенным. Имя параметра: key]
    в System.Collections.Generic.Dictionary`2.FindEntry(TKey key) в System.Collections.Generic.Dictionary`2.get_Item(TKey key) в EleWise.ELMA.Security.Managers.HierarchyChiefDisplayModel.GetUsersHierarchy(IOrganizationItem startItem)

    Статью прочитал.
    Думал что с использованием PublicAPI будет правильно (код короче), но в этом случае First() выдает глупости.
    Без использования PublicAPI код более громоздкий, но зато var chief = chiefs.First (); выдает нужный результат.

    Можно сказать что вопрос решился, но хотелось бы уметь влиять на результат .GetChiefByUser(),
    т.е. получить не просто список начальников, а именно в иерархии.
     
    1 это нравится

Поделиться: