Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get

Scope: timeman

Кто может выполнять метод: любой пользователь с правом просмотра отчетов

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

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

Обязательные параметры отмечены *

Название
тип

Описание

USER_ID*
integer

Идентификатор пользователя, для которого запрашиваются отчеты.

Получить идентификатор пользователя можно методом user.get

MONTH*
integer

Номер месяца

YEAR*
integer

Год

IDLE_MINUTES
integer

Максимальное время отсутствия на рабочем месте, которое не учитывается как отсутствие.

Параметр доступен руководителю и администратору.

Если не указывать, используется время из настроек модуля

WORKDAY_HOURS
integer

Продолжительность рабочего дня в часах.

По умолчанию — 8 часов

Примеры кода

Как использовать примеры в документации

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 -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
        
try
        {
        	const response = await $b24.callMethod(
        		'timeman.timecontrol.reports.get',
        		{
        			'USER_ID': 3,
        			'MONTH': 5,
        			'YEAR': 2025,
        			'IDLE_MINUTES': 15,
        			'WORKDAY_HOURS': 8
        		}
        	);
        	
        	const result = response.getData().result;
        	console.info(result);
        }
        catch( error )
        {
        	console.error(error);
        }
        
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.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());
                }
            }
        );
        
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>';
        

Обработка ответа

HTTP-статус: 200

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

Если в ответе пустой days

Если метод возвращает пустой массив days, настройте инструмент контроля времени.

  1. Выполните под администратором метод timeman.timecontrol.settings.set с параметрами:

    BX24.callMethod(
                'timeman.timecontrol.settings.set',
                {
                    active: true,
                    REPORT_SIMPLE_TYPE: 'all',
                    REPORT_FULL_TYPE: 'all',
                    report_request_type: 'user',
                    report_request_users: 3,
                },
                function(result){
                    if(result.error())
                    {
                        console.error(result.error().ex);
                    }
                    else
                    {
                        console.log(result.data());
                    }
                }
            );
            
  2. Откройте или закройте рабочий день пользователя.

  3. Выполните метод timeman.timecontrol.reports.get. В ответе появятся данные в days.

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

Название
тип

Описание

result
object

Корневой элемент ответа

report
object

Информация об отчете

month_title
string

Название месяца

date_start
datetime

Дата начала периода выборки в формате ATOM

date_finish
datetime

Дата окончания периода выборки в формате ATOM

days
array

Список объектов с описанием отработанных дней

user
object

Объект с информацией о пользователе

time
time

Информация о времени выполнения запроса

Объекты days

Название
тип

Описание

index
integer

Индекс дня недели формате ГГГГММДД, например, 20250526 для 26 мая 2025 года

day_title
string

Дата в формате сайта

workday_date_start
datetime

Дата начала рабочего дня в формате ATOM

workday_date_finish
datetime

Дата окончания рабочего дня в формате ATOM.

Если workday_complete = false, указывается дата на момент формирования отчета

workday_complete
boolean

Рабочий день завершен

workday_time_leaks_user
integer

Продолжительность перерыва в секундах

workday_time_leaks_final
integer

Продолжительность времени в секундах, которое пользователь недоработал или переработал.

  • Положительное число — количество не доработанного времени в секундах
  • Отрицательное число — количество времени, отработанного сверх положенного времени, то есть переработка

workday_duration
integer

Продолжительность рабочего дня по табелю в секундах, с учетом перерыва

workday_duration_final
integer

Продолжительность рабочего дня по фактической выработке в секундах. Учитываются:

  • перерыв
  • не подтвержденные отсутствия
  • отсутствия по личным делам

workday_duration_config
integer

Необходимая продолжительность рабочего дня в секундах

reports
array

Список объектов с записями выявленных отсутствий.

Значения выводятся в полной детализации отчета и для руководителя

workday_time_leaks_real
integer

Продолжительность перерыва установленного автоматической системой фиксации. Содержит не подтвержденные отсутствия и отсутствия по личным делам

Объекты reports

Название
тип

Описание

id
string

Идентификатор записи

user_id
string

Идентификатор пользователя

type
string

Тип записи. Возможные значения:

  • IDLE — отошел, фиксируется с помощью десктоп приложения
  • OFFLINE — офлайн
  • DESKTOP_ONLINE — запустил приложение. Только для руководителя
  • DESKTOP_OFFLINE — выключил приложение. Только для руководителя
  • DESKTOP_START — запустил приложение. Только для руководителя
  • TM_START — начал рабочий день
  • TM_PAUSE — ушел на перерыв
  • TM_CONTINUE — продолжил день
  • TM_END — завершил рабочий день

date_start
datetime

Дата начала фиксации в формате ATOM

date_finish
datetime

Дата окончания фиксации в формате ATOM.

Если active = true, поле содержит дату на момент формирования отчета

duration
integer

Длительность

active
boolean

Активность записи

entry_id
string

Идентификатор записи времени

report_type
string

Тип отсутствия. Возможные значения:

  • work — по рабочим вопросам
  • private — по личным делам
  • none — тип не задан, приравнивается к private

report_text
string

Описание причины отсутствия

system_text
string

Системное описание причины отсутствия. Только для руководителя

source_start
string

Поставщик данных начала записи. Возможные значения:

  • ONLINE_EVENT — событие авторизации пользователя
  • OFFLINE_AGENT — агент, который устанавливает статус Офлайн
  • DESKTOP_OFFLINE_AGENT — агент, который устанавливает признак выключенного приложения
  • DESKTOP_ONLINE_EVENT — событие, которое устанавливает признак включенного приложения
  • DESKTOP_START_EVENT — событие, которое устанавливает признак включенного приложения
  • IDLE_EVENT — событие изменения статуса Отошел. Фиксируется приложением
  • TM_EVENT — событие изменения рабочего дня: начало, перерыв, окончание

source_finish
string

Поставщик данных окончания записи. Возможные значения:

  • ONLINE_EVENT — событие авторизации пользователя
  • OFFLINE_AGENT — агент, который устанавливает статус Офлайн
  • DESKTOP_OFFLINE_AGENT — агент, который устанавливает признак выключенного приложения
  • DESKTOP_ONLINE_EVENT — событие, которое устанавливает признак включенного приложения
  • DESKTOP_START_EVENT — событие, которое устанавливает признак включенного приложения
  • IDLE_EVENT — событие изменения статуса Отошел. Фиксируется приложением
  • TM_EVENT — событие изменения рабочего дня: начало, перерыв, окончание

ip_start
string

IP-адрес на момент начала записи. Только для руководителя

ip_finish
string

IP-адрес на момент окончания записи. Только для руководителя

ip_start_network
boolean | object

Объект с расшифровкой IP-адреса для начала записи, если IP-адрес не входит в офисную сеть. Для офисной сети вернет false.

Только для руководителя

ip_finish_network
boolean | object

Объект с расшифровкой IP-адреса для окончания записи, если IP-адрес не входит в офисную сеть. Для офисной сети вернет false.

Только для руководителя

Объект ip_network

Название
тип

Описание

ip
string

IP-адрес

range
string

Диапазон, в который входит указанный IP-адрес

name
string

Название диапазона, в который входит указанный IP-адрес

Объект user

Название
тип

Описание

id
integer

Идентификатор пользователя

active
boolean

Активность

name
string

Имя и фамилия пользователя

first_name
string

Имя пользователя

last_name
string

Фамилия пользователя

work_position
string

Должность

avatar
string

URL аватара пользователя.

Если значение пустое, у пользователя нет аватара

personal_gender
string

Пол пользователя

last_activity_date
datetime

Дата последнего действия пользователя в формате ATOM

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

HTTP-статус: 400

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

Название
тип

Описание

error
string

Строковый код ошибки. Может состоять из цифр, латинских букв и знака подчеркивания

error_description
error_description

Текстовое описание ошибки. Описание не предназначено для показа конечному пользователю в необработанном виде

Возможные коды ошибок

Код

Описание

Значение

ACCESS_ERROR

You don't have access to this method

У вас нет доступа к этому методу

USER_ACCESS_ERROR

You don't have access to report for this user

У вас нет доступа к отчетам этого пользователя

Статусы и коды системных ошибок

HTTP-статус: 20x, 40x, 50x

Описанные ниже ошибки могут возникнуть при вызове любого метода

Статус

Код
Текст ошибки

Описание

500

INTERNAL_SERVER_ERROR
Internal server error

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

500

ERROR_UNEXPECTED_ANSWER
Server returned an unexpected response

Возникла внутренняя ошибка сервера, обратитесь к администратору сервера или в техническую поддержку Битрикс24

503

QUERY_LIMIT_EXCEEDED
Too many requests

Превышен лимит на интенсивность запросов

405

ERROR_BATCH_METHOD_NOT_ALLOWED
Method is not allowed for batch usage

Текущий метод не разрешен для вызова с помощью batch

400

ERROR_BATCH_LENGTH_EXCEEDED
Max batch length exceeded

Превышена максимальная длина параметров, переданных в метод batch

401

NO_AUTH_FOUND
Wrong authorization data

Неверный access-токен или код вебхука

400

INVALID_REQUEST
Https required

Для вызовов методов требуется использовать протокол HTTPS

503

OVERLOAD_LIMIT
REST API is blocked due to overload

REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка, для снятия необходимо обращаться в техническую поддержку Битрикс24

403

ACCESS_DENIED
REST API is available only on commercial plans

REST API доступен только на коммерческих планах

403

INVALID_CREDENTIALS
Invalid request credentials

У пользователя, с чьим access-токеном или вебхуком был вызван метод, не хватает прав

404

ERROR_MANIFEST_IS_NOT_AVAILABLE
Manifest is not available

Манифест недоступен

403

insufficient_scope
The request requires higher privileges than provided by the webhook token

Запрос требует более высоких привилегий, чем предоставляет токен вебхука

401

expired_token
The access token provided has expired

Предоставленный access-токен доступа истек

403

user_access_error
The user does not have access to the application

Пользователь не имеет доступа к приложению. Это означает, что приложение установлено, но администратор портала разрешил доступ к этому приложению только конкретным пользователям

500

PORTAL_DELETED
Portal was deleted

Публичная часть сайта закрыта. Чтобы открыть публичную часть сайта на коробочной установке отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта

Продолжите изучение