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
          }
        }
        

См. также

Предыдущая
Следующая