Формулировка проблемы: необходимы дополнительные возможности для получения списка пользователей из компонента Выбор пользователей.
Решение: реализовать метод API, который позволяет выводить список пользователей по различным параметрам: по группам, по департаментам, с учетом делегирования прав, с учетом назначения на должность и т.д.
URL метода:/rest/api/userchooser/search_ext.
Тип запроса: GET.
Метод принимает следуюшие входные параметры:
userID - идентификатор пользователя, от имени
которого выполняется поиск пользователей (необяз.);
startRecord - номер записи, с которой
производится поиск (по умолчанию 0);
recordsCount - количество результатов,
которые необходимо вернуть (по умолчанию 30);
locale (не обяз.) - код локали (при
отсутствии параметра используется
язык
системы по умолчанию);
showAll - принимает следующие значения (по
умолчанию false):
true - отображаются все пользователи;
false - отображаются только подчиненные
пользователи userID;
Примечание. Если поиск производится только по подчиненным пользователям, то есть
showAll=false, независимо от введенного департамента, группы или должности
в результатах всегда будут возвращаться сам пользователь и те пользователи, которые делегировали ему право на создание работ. То есть для получения всех пользователей определенного(-й) департамента, группы либо должности нужно указать параметрshowAll=true, и в результатах не будут возвращаться сам пользователь и те пользователи, которые делегировали ему право на создание работ (см. примеры ниже).
levelsCount - количество уровней
"вниз" по оргструктуре от данного пользователя,
пользователей которых необходимо вернуть. Если параметр не
задан, поиск происходит по всем уровням оргструктуры;
groupID - идентификатор группы, пользователей
которых необходимо вернуть. Если параметр не задан поиск
происходит по всем пользователям;
search - строка поиска, обуславливающая
содержание в фамилии, имени, отчетстве, должности пользователя
этой строки (необяз.);
operationType - тип действия. Если данный
параметр задан, то список пользователей будет формироваться не
только от имени userID, но и от имени тех
пользователей, которые делегировали ему право на
operationType;
ownerOperationType - тип действия. Если
данный параметр задан, то список пользователей ограничивается
теми пользователеми, которые делегировали
userID право на
ownerOperationType и самим
userID. Без указания параметра
showAll=true возвращаются только подчиненные
пользователи;
departmentID - идентификатор подразделения.
Если данный параметр задан, то отображаются пользователи только
данного подразделения. Если параметр не задан, поиск происходит
по всей оргструктуре;
showNoPosition - принимает следующие значения
(по умолчанию false):
true - отображаются пользователи, не
назначенные на должность. Для получения данных пользователей
необходимо указать showAll=true, чтобы
поиск производился по всем пользователям;
false - не отображаются пользователи, не
назначенные на должность.
filterPositionID - UUID должности. Если
данный параметр задан, то возвращается список пользователей,
занимающих данную должность;
filterDepartmentID - UUID подразделения. Если
данный параметр задан, то возвращается список пользователей,
занимающих должность в данном подразделении (рекурсивно);
positionType - тип должности (необяз.). Если
данный параметр задан, то возвращаются те пользователи, которые
относятся к подразделению, в котором userID
занимает должность с указанным типом;
customField - проверка на то, является ли
пользователь подчиненным по отношению к пользователю, от имени
которого производится поиск(необяз.). Данный параметр принимает
только одно значение is_inferior;
userNameDisplayType - тип отображения имени
пользователя. По умолчанию используется значение в соответствии
с опцией "Отображать полное ФИО пользователя" в
Настройках документооборота в Конфигураторе. Принимает следующие
значения:
full - отображение имени пользователя в
формате Фамилия Имя Отчество, если опция включена;
short - отображение имени пользователя в
формате Фамилия И.О., если опция выключена.
В случае успешного выполнения метод возвращает список пользователей в виде массива JSON с полями:
personName - полное имя пользователя;
personID - UUID пользователя;
departmentName - название департамента;
positionName - название должности;
customField - при условии
customField=is_inferior получает одно из
следующих значений:
true - пользователь является подчиненным
пользователя, от имени которого производится поиск;
false - пользователь не является
подчиненным пользователя, от имени которого производится
поиск;
lastname - фамилия пользователя;
firstname - имя пользователя;
patronymic - отчество пользователя.
Примеры запроса: Получение списка всех пользователей только указанного департамента:
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&departmentID =ee71a4c6-888a-4f04-86de-44ab394f5749&showAll=true
Получение списка всех пользователей указанной группы:
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&groupID =65err4c6-888a-4f04-86de-44a6erf165749&showAll=true
Получение списка всех пользователей, которые назначены на указанную должность:
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&filterpositionID =ee71a5g1-321a-4rr4-86de-4462rg3s5749&showAll=true
Получение списка всех пользователей указанного департамента (рекурсивно):
/rest/api/userchooser/search_ext?userID=c4ddd6b1-ade2-4ee2-ace5-aaec6a81d02a&filterdepartmentID =6wrrt624c6-888a-4f04-86de-44ab394f5749&showAll=true
Пример возвращаемого массива:
{
{
"personName":"Иванов И.И.",
"personID":"ew2f6vc6-gf2g-4f04-26de-klnlkse44f1s2g42",
"departmentName":"Департамент транспорта",
"positionName":"Руководитель департамента",
"customField":"",
"lastname":"Иванов",
"firstname":"Иван",
"patronymic":"Иванович"
},
{
"personName":"Борисов Б.И.",
"personID":"2g2ta4c6-6g8a-w504-b1ge-wr45b5r2vvv023g",
"departmentName":"Департамент транспорта",
"positionName":"Ассистент руководителя",
"customField":"",
"lastname":"Борисов",
"firstname":"Борис",
"patronymic":"Иванович"
},
{
"personName":"Петров А.П.",
"personID":"",
"departmentName":"Департамент транспорта",
"positionName":"Менеджер",
"customField":"",
"lastname":"Петров",
"firstname":"Александр",
"patronymic":"Петрович"
}
}