Блог Горошко Андрея Bitrix24 Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get

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

Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get». Вы узнаете экспертные методики работы с timeman.timecontrol.reports.get и научитесь избегать типичных ошибок начинающих разработчиков.

Получить отчет о выявленных отсутствиях 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 (Webhook)
    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)
    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
    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);
    }
  • 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
    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
    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 {#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 {#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_network}

Название
тип
Описание
ip
string
IP-адрес
range
string
Диапазон, в который входит указанный IP-адрес
name
string
Название диапазона, в который входит указанный IP-адрес

Объект user {#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"
}

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

КодОписаниеЗначение
ACCESS_ERRORYou don’t have access to this methodУ вас нет доступа к этому методу
USER_ACCESS_ERRORYou don’t have access to report for this userУ вас нет доступа к отчетам этого пользователя
  • [](./index)
  • [](./timeman-timecontrol-report-add)
  • [](./timeman-timecontrol-reports-users-get)

💡 Экспертное мнение и рекомендации

Практические рекомендации:

  • При написании кастомных компонентов для «Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get» всегда разделяйте бизнес-логику и представление (шаблон).
  • Используйте отладку SQL-запросов через конструкцию $wpdb->last_query или стандартный трекер Битрикса, чтобы контролировать нагрузку.

Похожая задача в бизнесе?

Помогу автоматизировать процессы и внедрить ИИ

Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.

Related Post

Добавить соответствие физическому или юридическому лицу sale.businessValuePer…Добавить соответствие физическому или юридическому лицу sale.businessValuePer…

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Добавить соответствие физическому или юридическому лицу sale.businessValuePer…», разберем

Получить список шаблонов bizproc.workflow.template.listПолучить список шаблонов bizproc.workflow.template.list

При разработке и поддержке проектов на платформе 1С-Битрикс критически важно использовать современные стандарты D7 API. В этом руководстве мы детально изучим тему «Получить список шаблонов bizproc.workflow.template.list», разберем архитектурные особенности и

Сколько стоит настройка сквозной аналитики и коллтрекинга в Битрикс24Сколько стоит настройка сквозной аналитики и коллтрекинга в Битрикс24

Выбор редакции, расчет точной сметы и покупка официальных лицензий 1С-Битрикс и Битрикс24 — это ключевой этап планирования любого цифрового проекта. Информация по теме «Сколько стоит настройка сквозной аналитики и коллтрекинга