ipr.employee.update
Scope:
iprКто может вызывать: Только администратор портала. Подробнее: Модель доступа
Изменяет профиль развития сотрудника: должность, справочного руководителя, полученные компетенции, компетенции «поддерживает» и сроки их действия. Передаются только те поля, которые нужно изменить; нужен хотя бы один.
HTTP: POST
Побочные эффекты: Одним вызовом CUser::Update записывает пользовательские поля сотрудника (UF_POSITION, UF_LINE_MANAGER_ID, UF_COMPETENTIES и UF_COMP_SUPPORT — всегда вместе). Срабатывает штатный обработчик OnBeforeUserUpdate (автоматически добавляет компетенции нижних уровней). Журнал компетенций ведётся по фактической разнице «до/после» сохранения, включая автодобавленные нижние уровни; автор записей журнала — администратор, вызвавший метод.
Параметры метода
| Параметр | Тип | Обяз. | Описание |
|---|---|---|---|
userId |
int |
да | ID сотрудника |
positionId |
int |
нет | ID элемента инфоблока должностей; 0 — снять должность |
lineManagerId |
int |
нет | ID существующего пользователя, не равного userId; 0 — снять. См. примечание ниже |
competenceIds |
int[] |
нет | Полный новый список полученных компетенций (replace); пустой массив — очистить |
supportCompetenceIds |
int[] |
нет | Полный новый список компетенций «поддерживает» (replace); такие компетенции автоматически считаются полученными |
addCompetenceIds |
int[] |
нет | Добавить компетенции (дельта) |
removeCompetenceIds |
int[] |
нет | Снять компетенции (дельта) |
competenceActiveUntil |
object |
нет | Сроки действия: { "<competenceId>": "YYYY-MM-DD" | "" }. Дата — сегодня или позже; пустая строка — бессрочно. Только для компетенций, которые будут у сотрудника после сохранения |
Про lineManagerId
Параметр записывает пользовательское поле UF_LINE_MANAGER_ID, но ИПР его не читает: руководителя в карточку ИПР подставляет вычисляемая логика (кастомная функция либо глава подразделения). Фактический руководитель возвращается в поле defaultManagerId метода ipr.employee.get; чтобы изменить его, правьте оргструктуру.
Про списки компетенций
addCompetenceIds/removeCompetenceIdsнесовместимы сcompetenceIdsв одном вызове (VALIDATION_ERROR,reason: competence_lists). ПересечениеremoveCompetenceIdsсaddCompetenceIdsилиsupportCompetenceIds— тоже ошибка.- Replace (
competenceIds) снимает и компетенции, полученные из ИПР и оценок 360. Для интеграций безопаснее дельта:addCompetenceIds/removeCompetenceIds.
Возвращаемые данные
Профиль после сохранения — та же форма, что у ipr.employee.get.
Обработка ошибок
Справочник кодов: error-codes.md.
| Код | Описание |
|---|---|
UNAUTHORIZED |
Пользователь не авторизован |
VALIDATION_ERROR |
Не передано ни одного изменяемого поля; некорректные значения. Машинный ключ — в error.details.reason: competence_lists, id_list, active_until_*, position_id, line_manager_id, user_update_failed (с текстом ошибки CUser или обработчика) |
NOT_FOUND |
Не найден пользователь, должность, компетенция или руководитель |
PERMISSION_DENIED |
Вызывает не администратор |
INTERNAL_ERROR |
Внутренняя ошибка сервера |
Пример запроса (POST)
curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/ipr.employee.update.json"
-H "Content-Type: application/json"
-H "Accept: application/json"
--data '{
"userId": 15,
"positionId": 210,
"addCompetenceIds": [501],
"competenceActiveUntil": { "501": "2027-03-31" }
}'
Пример ответа
{
"result": {
"result": {
"userId": 15,
"positionId": 210,
"competenceIds": [501, 502],
"supportCompetenceIds": [],
"competenceActiveUntil": [
{ "competenceId": 501, "activeUntil": "2027-03-31" },
{ "competenceId": 502, "activeUntil": null }
],
"lineManagerId": null,
"defaultManagerId": 8
},
"total": null,
"next": null,
"error": null
}
}