Описание: Сохранить одну или несколько записей учёта времени. Поведение зависит от типа контента каждой записи:

  • Списание времени (content_type_id = 3E50F9CF-D408-410C-AD65-BAB0B6B744C4, обычная ручная запись) — длительность (duration) автоматически вычисляется как разница между end_date и start_date записи.
  • Табель (content_type_id = 8E4CCA44-5257-4340-A13C-E79687671798, запись, создаваемая из планировщика задач) — метод сам находит существующую запись этого пользователя по задаче (task) и дате (date) и обновляет её (если не найдена — создаётся новая); дополнительно после сохранения пересчитывается и записывается в задачу суммарная длительность (duration) по всем записям типа "Табель", ссылающимся на эту задачу.

Перед сохранением для каждой записи проверяется дневной лимит рабочего времени: суммарная длительность всех записей пользователя за эту дату (без учёта самой обновляемой записи, если она уже существует) не должна превышать 12 часов — иначе запрос отклоняется с ошибкой.


🌐 HTTP-информация

  • Метод: POST
  • URL: /Timesheets/api/timesheet/Update
  • Headers:
    • Content-Type: application/json
    • Authorization: <UserSessionToken>

📦 Тело запроса (Request Body)

Тело — массив объектов-записей.

ПолеТипОбяз.Описание
idGuidНетID обновляемой записи. Для новой записи "Списание времени" не указывается; для записи "Табель" может быть не указан — метод сам найдёт существующую запись по task+date+principal
content_type_idGuidДаТип контента записи — "Списание времени" или "Табель" (см. GUID выше)
principalGuidДаID пользователя, к которому относится запись
taskGuidНетID задачи, к которой относится запись (обязательно для "Табель")
dateDateTimeДаДата записи
start_dateDateTimeУсловноНачало интервала — обязательно для "Списание времени" (используется для расчёта длительности)
end_dateDateTimeУсловноКонец интервала — обязательно для "Списание времени"
durationdecimalНетДлительность в часах. Для "Списание времени" вычисляется автоматически из start_date/end_date, и переданное значение игнорируется

Пример JSON-тела:

[
  {
    "content_type_id": "3e50f9cf-d408-410c-ad65-bab0b6b744c4",
    "principal": "622dddbb-2db2-433d-9d3c-89f31ea22e64",
    "date": "2026-09-16",
    "start_date": "2026-09-16T09:00:00Z",
    "end_date": "2026-09-16T18:00:00Z"
  }
]

📤 Тело ответа (Response Body)

IItem — первая из сохранённых/обновлённых записей.

Если суммарная длительность записей пользователя за день превышает 12 часов, метод возвращает ошибку с указанием превышенного лимита.

  • No labels