# timeman.timecontrol.reports.get

URL: https://chugunov.pro/api-bitrix24/timeman/timecontrol/timeman-timecontrol-reports-get/
Проверено на Битрикс24 REST API, обновлено 11.09.2026 (ревизия источника fb39d6c).
Источник: официальная документация Битрикс24 (bitrix-tools/b24-rest-docs, лицензия MIT, © Bitrix). Справочник независимый, официальной документацией не является.

Получить отчет о выявленных отсутствиях
Scope: `timeman`
Кто может выполнять метод: любой пользователь с правом просмотра отчетов

## Описание

Метод `timeman.timecontrol.reports.get` получает отчет о выявленных отсутствиях.

## Параметры

- `USER_ID` `integer` — обязательный. Идентификатор пользователя, для которого запрашиваются отчеты.
  Получить идентификатор пользователя можно методом [user.get](https://chugunov.pro/api-bitrix24/user/user-get/)
- `MONTH` `integer` — обязательный. Номер месяца
- `YEAR` `integer` — обязательный. Год
- `IDLE_MINUTES` `integer` — необязательный. Максимальное время отсутствия на рабочем месте, которое не учитывается как отсутствие.
  Параметр доступен руководителю и администратору.
  Если не указывать, используется время из настроек модуля
- `WORKDAY_HOURS` `integer` — необязательный. Продолжительность рабочего дня в часах.
  По умолчанию — 8 часов

## Ответ

HTTP-статус: 200

```json
{
    "result": {
        "report": {
            "month_title": "Май",
            "date_start": "2025-05-01T00:00:00+03:00",
            "date_finish": "2025-05-31T23:59:59+03:00",
            "days": [
                {
                    "index": "20250526",
                    "day_title": "26.05.2025",
                    "workday_date_start": "2025-05-26T14:44:47+03:00",
                    "workday_date_finish": "2025-05-26T14:45:29+03:00",
                    "workday_complete": true,
                    "workday_time_leaks_user": 0,
                    "workday_time_leaks_final": 28758,
                    "workday_duration": 42,
                    "workday_duration_final": 42,
                    "workday_duration_config": 28800,
                    "reports": [
                        {
                            "id": "27",
                            "user_id": "503",
                            "type": "TM_START",
                            "date_start": "2025-05-26T14:44:47+03:00",
                            "date_finish": "2025-05-26T14:44:47+03:00",
                            "duration": 0,
                            "active": false,
                            "entry_id": "2237",
                            "report_type": "WORK",
                            "report_text": "Работал над проектом",
                            "system_text": null,
                            "source_start": "TM_EVENT",
                            "source_finish": "TM_EVENT",
                            "ip_start": "83.219.151.30",
                            "ip_finish": "83.219.151.30",
                            "ip_start_network": false,
                            "ip_finish_network": false
                        },
                        {
                            "id": "29",
                            ...
                        }
                    ],
                    "workday_time_leaks_real": 0
                }
            ]
        },
        "user": {
            "id": 3,
            "active": true,
            "name": "Мария Ившина",
            "first_name": "Мария",
            "last_name": "Ившина",
            "work_position": "IT-специалист",
            "avatar": "http://test.bitrix24.com/upload/resize_cache/45749/7acf4ca766af5d8/main/c89/c89c6b73470635c/4R5A1256.png",
            "personal_gender": "F",
            "last_activity_date": "2025-05-29T17:15:56+03:00"
        },
        "time": {
            "start": 1748528193.688745,
            "finish": 1748528193.730104,
            "duration": 0.04135894775390625,
            "processing": 0.014277935028076172,
            "date_start": "2025-05-29T17:16:33+03:00",
            "date_finish": "2025-05-29T17:16:33+03:00",
            "operating_reset_at": 1748528793,
            "operating": 0
        }
    }
}
```

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

- `result` `object`. Корневой элемент ответа
- `report` `object`. Информация об отчете
- `month_title` `string`. Название месяца
- `date_start` `datetime`. Дата начала периода выборки в формате [ATOM](https://www.php.net/manual/ru/class.datetimeinterface.php#datetimeinterface.constants.atom)
- `date_finish` `datetime`. Дата окончания периода выборки в формате [ATOM](https://www.php.net/manual/ru/class.datetimeinterface.php#datetimeinterface.constants.atom)
- `days` `array`. Список объектов с описанием [отработанных дней](#days)
- `user` `object`. Объект с информацией о [пользователе](#user)
- `time` `time`. Информация о времени выполнения запроса

## Ошибки

HTTP-статус: 400

```json
{
    "error": "USER_ACCESS_ERROR",
    "error_description": "You don't have access to report for this user"
}
```

- `ACCESS_ERROR` — You don't have access to this method. У вас нет доступа к этому методу
- `USER_ACCESS_ERROR` — You don't have access to report for this user. У вас нет доступа к отчетам этого пользователя

## Примеры запроса

### cURL (Webhook)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"USER_ID":3,"MONTH":5,"YEAR":2025,"IDLE_MINUTES":15,"WORKDAY_HOURS":8}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/timeman.timecontrol.reports.get
```

### cURL (OAuth)

```bash
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"USER_ID":3,"MONTH":5,"YEAR":2025,"IDLE_MINUTES":15,"WORKDAY_HOURS":8,"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/timeman.timecontrol.reports.get
```

### JS (TS)

```ts
// This snippet is an ES module: top-level await requires type="module" or a bundler.
// $b24 is an already-initialized SDK instance (see the SDK "Get started" guide).
import { Text } from '@bitrix24/b24jssdk'
import type { B24Frame, ISODate } from '@bitrix24/b24jssdk'

declare const $b24: B24Frame

// Shape of the payload returned in result (match the "response handling" section of the page)
type TimecontrolReportResult = {
  report: {
    month_title: string
    date_start: ISODate
    date_finish: ISODate
    days: {
      index: string
      day_title: string
      workday_date_start: ISODate
      workday_date_finish: ISODate
      workday_complete: boolean
      workday_time_leaks_user: number
      workday_time_leaks_final: number
      workday_duration: number
      workday_duration_final: number
      workday_duration_config: number
      reports: {
        id: string
        user_id: string
        type: string
        date_start: ISODate
        date_finish: ISODate
        duration: number
        active: boolean
        entry_id: string
        report_type: string
        report_text: string
        system_text: string | null
        source_start: string
        source_finish: string
        ip_start: string
        ip_finish: string
        ip_start_network: boolean | object
        ip_finish_network: boolean | object
      }[]
      workday_time_leaks_real: number
    }[]
  }
  user: {
    id: number
    active: boolean
    name: string
    first_name: string
    last_name: string
    work_position: string
    avatar: string
    personal_gender: string
    last_activity_date: ISODate
  }
}

try {
  const response = await $b24.actions.v2.call.make<TimecontrolReportResult>({
    method: 'timeman.timecontrol.reports.get',
    params: {
      USER_ID: 3,
      MONTH: 5,
      YEAR: 2025,
      IDLE_MINUTES: 15,
      WORKDAY_HOURS: 8,
    },
    requestId: Text.getUuidRfc4122()
  })

  // The payload is available only on a successful response
  if (!response.isSuccess) {
    console.error(response.getErrorMessages().join('; '))
  } else {
    const result = response.getData()!.result
    console.info(result.report.month_title, result.report.days.length, result.user.name)
  }
} catch (error) {
  // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
  console.error(error)
}
```

### JS (UMD)

```html
<!-- Load the SDK (UMD build); it is exposed as the global B24Js -->
<script src="https://unpkg.com/@bitrix24/b24jssdk@1/dist/umd/index.min.js"></script>
<script>
  async function getTimecontrolReport() {
    try {
      // Initialize the SDK inside a Bitrix24 frame
      const $b24 = await B24Js.initializeB24Frame()

      const response = await $b24.actions.v2.call.make({
        method: 'timeman.timecontrol.reports.get',
        params: {
          USER_ID: 3,
          MONTH: 5,
          YEAR: 2025,
          IDLE_MINUTES: 15,
          WORKDAY_HOURS: 8,
        },
        requestId: B24Js.Text.getUuidRfc4122()
      })

      // The payload is available only on a successful response
      if (!response.isSuccess) {
        console.error(response.getErrorMessages().join('; '))
        return
      }

      const result = response.getData().result
      console.info(result.report.month_title, result.report.days.length, result.user.name)
    } catch (error) {
      // Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
      console.error(error)
    }
  }

  document.addEventListener('DOMContentLoaded', getTimecontrolReport)
</script>
```

### Python

```python
from b24pysdk.errors import BitrixAPIError, BitrixSDKException

try:
    bitrix_response = client.timeman.timecontrol.reports.get(
        user_id=3,
        month=5,
        year=2025,
        idle_minutes=15,
        workday_hours=8,
    ).response
    result = bitrix_response.result
    print(result)
except BitrixAPIError as error:
    print(
        "Ошибка Bitrix API",
        f"error: {error.error}",
        f"error_description: {error.error_description}",
        sep="\n",
    )
except BitrixSDKException as error:
    print(f"Ошибка Bitrix SDK: {error.message}")
except Exception as error:
    print(f"Непредвиденная ошибка: {error}")
```

### PHP

```php
try {
    $response = $b24Service
        ->core
        ->call(
            'timeman.timecontrol.reports.get',
            [
                'USER_ID'       => 3,
                'MONTH'         => 5,
                'YEAR'          => 2025,
                'IDLE_MINUTES'  => 15,
                'WORKDAY_HOURS' => 8
            ]
        );

    $result = $response
        ->getResponseData()
        ->getResult();

    echo 'Success: ' . print_r($result, true);
    echo 'Info: ' . print_r($result, true);

} catch (Throwable $e) {
    error_log($e->getMessage());
    echo 'Error getting time control reports: ' . $e->getMessage();
}
```

### BX24.js

```js
BX24.callMethod(
    'timeman.timecontrol.reports.get',
    {
        'USER_ID': 3,
        'MONTH': 5,
        'YEAR': 2025,
        'IDLE_MINUTES': 15,
        'WORKDAY_HOURS': 8
    },
    function(result) {
        if (result.error()) {
            console.error(result.error());
        } else {
            console.info(result.data());
        }
    }
);
```

### PHP CRest

```php
require_once('crest.php');

$result = CRest::call(
    'timeman.timecontrol.reports.get',
    [
        'USER_ID' => 3,
        'MONTH' => 5,
        'YEAR' => 2025,
        'IDLE_MINUTES' => 15,
        'WORKDAY_HOURS' => 8
    ]
);

echo '<PRE>';
print_r($result);
echo '</PRE>';
```

### Go

```go
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "timeman.timecontrol.reports.get", b24.Params{
	"USER_ID":       3,
	"MONTH":         5,
	"YEAR":          2025,
	"IDLE_MINUTES":  15,
	"WORKDAY_HOURS": 8,
}, b24.WithIdempotent())
if err != nil {
	return fmt.Errorf("timeman.timecontrol.reports.get: %w", err)
}

// Ответ приходит как json.RawMessage — разберите его
// в структуру под форму ответа, показанную ниже на этой странице.
fmt.Printf("%s\n", res.Result)
```

Оригинал в официальной документации: https://apidocs.bitrix24.ru/api-reference/timeman/timecontrol/timeman-timecontrol-reports-get.html
