Формулировка проблемы: необходимы дополнительные возможности для получения списка пользователей из компонента Выбор пользователей.
Решение: реализовать метод 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":"Петрович" } }