Эффективная интеграция и кастомизация функционала в Битрикс24 часто требует работы на уровне API. Сегодня мы подробно рассмотрим «Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get». Вы узнаете экспертные методики работы с timeman.timecontrol.reports.get и научитесь избегать типичных ошибок начинающих разработчиков.
Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get
> Scope: timeman
>
> Кто может выполнять метод: любой пользователь с правом просмотра отчетов
Метод timeman.timecontrol.reports.get получает отчет о выявленных отсутствиях.
Параметры метода
Названиетип | Описание |
|---|---|
USER_IDinteger | Идентификатор пользователя, для которого запрашиваются отчеты. Получить идентификатор пользователя можно методом user.get |
MONTHinteger | Номер месяца |
YEAR*integer | Год |
IDLE_MINUTESinteger | Максимальное время отсутствия на рабочем месте, которое не учитывается как отсутствие. Параметр доступен руководителю и администратору. Если не указывать, используется время из настроек модуля |
WORKDAY_HOURSinteger | Продолжительность рабочего дня в часах. По умолчанию — 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.
Возвращаемые данные
Названиетип | Описание |
|---|---|
resultobject | Корневой элемент ответа |
reportobject | Информация об отчете |
month_titlestring | Название месяца |
date_startdatetime | Дата начала периода выборки в формате ATOM |
date_finishdatetime | Дата окончания периода выборки в формате ATOM |
daysarray | Список объектов с описанием отработанных дней |
userobject | Объект с информацией о пользователе |
timetime | Информация о времени выполнения запроса |
Объекты days {#days}
Названиетип | Описание |
|---|---|
indexinteger | Индекс дня недели формате ГГГГММДД, например, 20250526 для 26 мая 2025 года |
day_titlestring | Дата в формате сайта |
workday_date_startdatetime | Дата начала рабочего дня в формате ATOM |
workday_date_finishdatetime | Дата окончания рабочего дня в формате ATOM. Если |
workday_completeboolean | Рабочий день завершен |
workday_time_leaks_userinteger | Продолжительность перерыва в секундах |
workday_time_leaks_finalinteger | Продолжительность времени в секундах, которое пользователь недоработал или переработал. — Положительное число — количество не доработанного времени в секундах — Отрицательное число — количество времени, отработанного сверх положенного времени, то есть переработка |
workday_durationinteger | Продолжительность рабочего дня по табелю в секундах, с учетом перерыва |
workday_duration_finalinteger | Продолжительность рабочего дня по фактической выработке в секундах. Учитываются: — перерыв — не подтвержденные отсутствия — отсутствия по личным делам |
workday_duration_configinteger | Необходимая продолжительность рабочего дня в секундах |
reportsarray | Список объектов с записями выявленных отсутствий. Значения выводятся в полной детализации отчета и для руководителя |
workday_time_leaks_realinteger | Продолжительность перерыва установленного автоматической системой фиксации. Содержит не подтвержденные отсутствия и отсутствия по личным делам |
Объекты reports {#reports}
Названиетип | Описание | |
|---|---|---|
idstring | Идентификатор записи | |
user_idstring | Идентификатор пользователя | |
typestring | Тип записи. Возможные значения: — | |
date_startdatetime | Дата начала фиксации в формате ATOM | |
date_finishdatetime | Дата окончания фиксации в формате ATOM. Если | |
durationinteger | Длительность | |
activeboolean | Активность записи | |
entry_idstring | Идентификатор записи времени | |
report_typestring | Тип отсутствия. Возможные значения: — work — по рабочим вопросам— private — по личным делам— none — тип не задан, приравнивается к private | |
report_textstring | Описание причины отсутствия | |
system_textstring | Системное описание причины отсутствия. Только для руководителя | |
source_startstring | Поставщик данных начала записи. Возможные значения: — | |
source_finishstring | Поставщик данных окончания записи. Возможные значения: — | |
ip_startstring | IP-адрес на момент начала записи. Только для руководителя | |
ip_finishstring | IP-адрес на момент окончания записи. Только для руководителя | |
ip_start_networkboolean \ | object | Объект с расшифровкой IP-адреса для начала записи, если IP-адрес не входит в офисную сеть. Для офисной сети вернет false.Только для руководителя |
ip_finish_networkboolean \ | object | Объект с расшифровкой IP-адреса для окончания записи, если IP-адрес не входит в офисную сеть. Для офисной сети вернет false.Только для руководителя |
Объект ip_network {#ip_network}
Названиетип | Описание |
|---|---|
ipstring | IP-адрес |
rangestring | Диапазон, в который входит указанный IP-адрес |
namestring | Название диапазона, в который входит указанный IP-адрес |
Объект user {#user}
Названиетип | Описание |
|---|---|
idinteger | Идентификатор пользователя |
activeboolean | Активность |
namestring | Имя и фамилия пользователя |
first_namestring | Имя пользователя |
last_namestring | Фамилия пользователя |
work_positionstring | Должность |
avatarstring | URL аватара пользователя. Если значение пустое, у пользователя нет аватара |
personal_genderstring | Пол пользователя |
last_activity_datedatetime | Дата последнего действия пользователя в формате ATOM |
Обработка ошибок
HTTP-статус: 400
{
"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 | У вас нет доступа к отчетам этого пользователя |
- [](./index)
- [](./timeman-timecontrol-report-add)
- [](./timeman-timecontrol-reports-users-get)
💡 Экспертное мнение и рекомендации
Практические рекомендации:
- При написании кастомных компонентов для «Получить отчет о выявленных отсутствиях timeman.timecontrol.reports.get» всегда разделяйте бизнес-логику и представление (шаблон).
- Используйте отладку SQL-запросов через конструкцию
$wpdb->last_queryили стандартный трекер Битрикса, чтобы контролировать нагрузку.
Похожая задача в бизнесе?
Помогу автоматизировать процессы и внедрить ИИ
Меня зовут Андрей Горошко. Я Full-stack разработчик и эксперт по 1С-Битрикс. Настраиваю CRM Битрикс24, разрабатываю защищенные API и создаю умных ИИ-агентов для автоматизации рутины.
или на почту: gorandvas@yandex.ru