ipr.ipr.update

Scope: ipr

Кто может вызывать: Пользователь с canEdit на карточке (обычно владелец/руководитель) либо привилегированный (admin/hr). Смена status доступна только привилегированным; startFact / finishFact — только администратору портала. Подробнее: Роли и права доступа

Изменяет поля существующей карточки ИПР/ПИС. Передаются только те поля, которые нужно изменить.

HTTP: POST

Побочные эффекты: Изменяет элемент инфоблока ИПР; при competenceIds — привязывает новые компетенции каталога к карточке (существующие привязки не удаляются); при startFact / finishFact — записывает фактические даты (последним шагом, только свойствами элемента, без записи в историю и без перезапуска бизнес-процесса). Смена status (только admin/hr) на FINISHED останавливает бизнес-процесс (БП) карточки после записи статуса и до записи дат; смена на любой другой статус БП не затрагивает (кнопки БП в интерфейсе могут разойтись со статусом). Остановка БП выполняется при каждой записи статуса FINISHED, в том числе когда карточка уже в FINISHED: если первая остановка не удалась (INTERNAL_ERROR, статус к этому моменту уже изменён), повтор update(status=FINISHED) её довершает. Повторный ipr.ipr.complete остановку не чинит и возвращает VALIDATION_ERROR.

Параметры метода

Параметр Тип Обяз. Описание
id int да ID карточки
title string нет Название, 1..255 символов
deadline string нет Дедлайн YYYY-MM-DD; пустая строка снимает дедлайн
managerId int нет Новый руководитель. Должен отличаться от владельца карточки. Менять могут только привилегированные и пользователи с правом редактирования наблюдателей/руководителя карточки
status string нет Новый статус (только для привилегированных — см. ниже)
nextTemplateId int нет Шаблон следующей программы
observers int[] нет Полный новый список наблюдателей (заменяет текущий). Менять могут только привилегированные и пользователи с правом редактирования наблюдателей карточки
competenceIds int[] нет ID компетенций каталога, которые нужно добавить в карточку. Уже привязанные компетенции пропускаются, остальные привязки не трогаются
startFact string нет Фактическая дата начала, YYYY-MM-DD или YYYY-MM-DD HH:MM:SS (время сервера); пустая строка очищает. Только администратор, в любом статусе карточки
finishFact string нет Фактическая дата завершения, формат как у startFact; пустая строка очищает. Только администратор, в любом статусе карточки

Про параметр status

Свободная смена status через update разрешена только admin/hr — для сотрудников и руководителей переходы статуса идут через отдельные методы: ipr.ipr.complete, ipr.ipr.approve, ipr.ipr.reject, ipr.ipr.reopen. Допустимые значения — XML_ID из ipr.ipr.status.list: NEW, SOGL, WORK, SOGL_RES, FINISHED.

Про startFact / finishFact

Это единственный путь записи фактических дат; в complete и approve такие параметры не добавлены. Вызов идемпотентен — повторы (ретраи) безопасны. Проверяется порядок startFact <= finishFact с учётом уже сохранённого значения другой даты. Значение сохраняется в формате Y-m-d H:i:s и перечитывается; если запись не сохранилась, метод вернёт INTERNAL_ERROR с error.details.reason = fact_date_not_saved. В ответе даты приходят в формате YYYY-MM-DD (как в ipr.ipr.get).

Если ни одно поле, ни competenceIds не переданы — метод возвращает текущую карточку без изменений.

Возвращаемые данные

Полная карточка — та же форма, что у ipr.ipr.get.

Обработка ошибок

Справочник кодов: error-codes.md.

Код Описание
UNAUTHORIZED Пользователь не авторизован
VALIDATION_ERROR Некорректные значения полей (title, deadline, managerId, status, startFact, finishFact); startFact позже finishFact; managerId совпадает с владельцем карточки
NOT_FOUND Карточка не найдена, либо (при competenceIds) компетенция каталога не найдена
PERMISSION_DENIED Карточка недоступна для редактирования, либо смена status вызвана не привилегированным пользователем, либо startFact / finishFact переданы не администраторо; нет прав менять managerId или observers (details.field)
INTERNAL_ERROR Внутренняя ошибка сервера; даты не сохранились (details.reason = fact_date_not_saved)

Пример запроса (POST)

curl -X POST "https://{портал}/rest/{user_id}/{webhook_code}/ipr.ipr.update.json"
          -H "Content-Type: application/json"
          -H "Accept: application/json"
          --data '{
          "id": 4201,
          "deadline": "2027-01-15",
          "observers": [8, 14]
        }'
        

Пример ответа

{
          "result": {
            "result": {
              "id": 4201,
              "deadline": "2027-01-15",
              "observers": [8, 14],
              "status": "WORK"
            },
            "total": null,
            "next": null,
            "error": null
          }
        }
        

См. также

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