Получить рабочий график timeman.schedule.get
Выберите инструмент для разработки с AI-агентом:
- используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
- используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации
Scope:
timemanКто может выполнять метод: пользователь с правом «Чтение всех рабочих графиков». Сотрудники получают это право по умолчанию
Метод timeman.schedule.get получает рабочий график по идентификатору. Если графика нет или id не число, метод вернет пустой массив без ошибки.
Параметры метода
Обязательные параметры отмечены *
|
Название |
Описание |
|
id* |
Идентификатор графика. Узнать идентификатор графика можно в списке графиков на странице Сотрудники > Время и отчеты > Рабочие графики |
Примеры кода
Как использовать примеры в документации
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":1}' \
https://**put_your_bitrix24_address**/rest/**put_your_user_id_here**/**put_your_webhook_here**/timeman.schedule.get
curl -X POST \
-H "Content-Type: application/json" \
-H "Accept: application/json" \
-d '{"id":1,"auth":"**put_access_token_here**"}' \
https://**put_your_bitrix24_address**/rest/timeman.schedule.get
// 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 ScheduleGetResult = {
ID: number
NAME: string
SCHEDULE_TYPE: string
REPORT_PERIOD: string
REPORT_PERIOD_OPTIONS: {
START_WEEK_DAY: number
}
CALENDAR_ID: number
ALLOWED_DEVICES: {
browser: boolean
b24time: boolean
mobile: boolean
mobileRecordLocation: boolean
}
DELETED: string
IS_FOR_ALL_USERS: boolean
WORKTIME_RESTRICTIONS: unknown[] | Record<string, boolean | number>
CONTROLLED_ACTIONS: number
UPDATED_BY: number
DELETED_BY: number
DELETED_AT: string
CREATED_BY: number
CREATED_AT: ISODate
SHIFTS: {
ID: number
NAME: string
BREAK_DURATION: number
WORK_TIME_START: number
WORK_TIME_END: number
WORK_DAYS: string
SCHEDULE_ID: number
DELETED: boolean
}[]
CALENDAR: {
ID: number
NAME: string
PARENT_CALENDAR_ID: number
SYSTEM_CODE: string
EXCLUSIONS: unknown[] | Record<string, unknown>
}
SCHEDULE_VIOLATION_RULES: {
ID: number
SCHEDULE_ID: number
ENTITY_CODE: string
MAX_EXACT_START: number
MIN_EXACT_END: number
MAX_OFFSET_START: number
MIN_OFFSET_END: number
RELATIVE_START_FROM: number
RELATIVE_START_TO: number
RELATIVE_END_FROM: number
RELATIVE_END_TO: number
MIN_DAY_DURATION: number
MAX_ALLOWED_TO_EDIT_WORK_TIME: number
MAX_WORK_TIME_LACK_FOR_PERIOD: number
PERIOD_TIME_LACK_AGENT_ID: number
MAX_SHIFT_START_DELAY: number
MISSED_SHIFT_START: number
USERS_TO_NOTIFY: {
FIXED_START_END: string[]
FIXED_PER_RECORD: string[]
FIXED_EDIT_WORKTIME: string[]
FIXED_PERIODIC: string[]
SHIFT_DELAY: string[]
SHIFT_MISSED_START: string[]
}
}
}
try {
const response = await $b24.actions.v2.call.make<ScheduleGetResult>({
method: 'timeman.schedule.get',
params: {
id: 1,
},
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('Schedule:', result.ID, result.NAME, result.SCHEDULE_TYPE)
}
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
<!-- 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 getSchedule() {
try {
// Initialize the SDK inside a Bitrix24 frame
const $b24 = await B24Js.initializeB24Frame()
const response = await $b24.actions.v2.call.make({
method: 'timeman.schedule.get',
params: {
id: 1,
},
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('Schedule:', result.ID, result.NAME, result.SCHEDULE_TYPE)
} catch (error) {
// Thrown on transport or SDK failures (AjaxError, SdkError, etc.)
console.error(error)
}
}
document.addEventListener('DOMContentLoaded', getSchedule)
</script>
from b24pysdk.errors import BitrixAPIError, BitrixSDKException
try:
bitrix_response = client.timeman.schedule.get(bitrix_id=1).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}")
try {
$response = $b24Service
->core
->call(
'timeman.schedule.get',
[
'id' => 1
]
);
$result = $response
->getResponseData()
->getResult();
print_r($result);
} catch (Throwable $e) {
echo $e->getMessage();
}
BX24.callMethod(
"timeman.schedule.get",
{
id: 1
},
function(result)
{
if(result.error())
console.error(result.error());
else
{
console.dir(result.data());
if(result.more())
result.next();
}
}
);
require_once('crest.php');
$result = CRest::call(
'timeman.schedule.get',
[
'id' => 1
]
);
echo '<PRE>';
print_r($result);
echo '</PRE>';
// client и ctx уже созданы — см. раздел «SDK для Go»
res, err := client.Core().Call(ctx, "timeman.schedule.get", b24.Params{
"id": 1,
}, b24.WithIdempotent())
if err != nil {
return fmt.Errorf("timeman.schedule.get: %w", err)
}
var item struct {
ID b24.ID `json:"ID"`
Name string `json:"NAME"`
ScheduleType string `json:"SCHEDULE_TYPE"`
ReportPeriod string `json:"REPORT_PERIOD"`
CalendarID b24.ID `json:"CALENDAR_ID"`
Deleted string `json:"DELETED"`
}
if err := json.Unmarshal(res.Result, &item); err != nil {
return fmt.Errorf("разбор ответа: %w", err)
}
fmt.Println(item.ID, item.Name)
Обработка ответа
HTTP-статус: 200
{
"result": {
"ID": 1,
"NAME": "Для всех сотрудников",
"SCHEDULE_TYPE": "FIXED",
"REPORT_PERIOD": "MONTH",
"REPORT_PERIOD_OPTIONS": {
"START_WEEK_DAY": 0
},
"CALENDAR_ID": 1,
"ALLOWED_DEVICES": {
"browser": true,
"b24time": true,
"mobile": true,
"mobileRecordLocation": false
},
"DELETED": "0",
"IS_FOR_ALL_USERS": true,
"WORKTIME_RESTRICTIONS": [],
"CONTROLLED_ACTIONS": 3,
"UPDATED_BY": 503,
"DELETED_BY": 0,
"DELETED_AT": "",
"CREATED_BY": 0,
"CREATED_AT": "2019-09-19T21:22:22+03:00",
"SHIFTS": [
{
"ID": 1,
"NAME": "",
"BREAK_DURATION": 3600,
"WORK_TIME_START": 28800,
"WORK_TIME_END": 61200,
"WORK_DAYS": "12345",
"SCHEDULE_ID": 1,
"DELETED": false
}
],
"CALENDAR": {
"ID": 1,
"NAME": "",
"PARENT_CALENDAR_ID": 0,
"SYSTEM_CODE": "",
"EXCLUSIONS": []
},
"SCHEDULE_VIOLATION_RULES": {
"ID": 1,
"SCHEDULE_ID": 1,
"ENTITY_CODE": "UA",
"MAX_EXACT_START": 28859,
"MIN_EXACT_END": 61200,
"MAX_OFFSET_START": -1,
"MIN_OFFSET_END": -1,
"RELATIVE_START_FROM": -1,
"RELATIVE_START_TO": -1,
"RELATIVE_END_FROM": -1,
"RELATIVE_END_TO": -1,
"MIN_DAY_DURATION": 28800,
"MAX_ALLOWED_TO_EDIT_WORK_TIME": 300,
"MAX_WORK_TIME_LACK_FOR_PERIOD": 3600,
"PERIOD_TIME_LACK_AGENT_ID": 309429,
"MAX_SHIFT_START_DELAY": -1,
"MISSED_SHIFT_START": 0,
"USERS_TO_NOTIFY": {
"FIXED_START_END": [
"U503"
],
"FIXED_PER_RECORD": [
"U503"
],
"FIXED_EDIT_WORKTIME": [
"U503"
],
"FIXED_PERIODIC": [
"U503"
],
"SHIFT_DELAY": [],
"SHIFT_MISSED_START": []
}
}
},
"time": {
"start": 1744036659.2339499,
"finish": 1744036659.2655749,
"duration": 0.031625032424926758,
"processing": 0.008758068084716797,
"date_start": "2025-04-07T17:37:39+03:00",
"date_finish": "2025-04-07T17:37:39+03:00",
"operating_reset_at": 1744037259,
"operating": 0
}
}
Возвращаемые данные
|
Название |
Описание |
|
Корневой элемент ответа. Содержит объект с описанием графика работы сотрудников. Если графика с таким идентификатором нет или он удален, метод вернет пустой массив |
|
|
ID |
Идентификатор графика работы |
|
NAME |
Название графика работы |
|
SCHEDULE_TYPE |
Тип графика работы. Варианты значений:
|
|
REPORT_PERIOD |
Периодичность формирования отчетов по графику. Возможные значения:
|
|
REPORT_PERIOD_OPTIONS |
Объект с описанием дополнительных настроек периода формирования отчетов. Поле приходит при любом значении |
|
CALENDAR_ID |
Идентификатор календаря, связанного с графиком работы |
|
ALLOWED_DEVICES |
Объект с описанием разрешенных устройств для учета рабочего времени |
|
DELETED |
Флаг удаления графика работы. Всегда |
|
IS_FOR_ALL_USERS |
Применимость графика ко всем сотрудникам. Значение |
|
Ограничения рабочего времени. Если ограничений нет, приходит пустой массив. Если они заданы, приходит объект с ключами |
|
|
CONTROLLED_ACTIONS |
Действия сотрудника, которые контролирует график. Возможные значения:
|
|
UPDATED_BY |
Идентификатор пользователя, который последним обновил график работы |
|
DELETED_BY |
Идентификатор пользователя, который удалил график работы. Значение |
|
DELETED_AT |
Дата и время удаления графика работы. Пустая строка означает, что график не был удален |
|
CREATED_BY |
Идентификатор пользователя, который создал график работы. Значение |
|
CREATED_AT |
Дата и время создания графика работы |
|
SHIFTS |
Массив объектов смен. Каждый объект содержит описание смены, связанной с графиком работы |
|
CALENDAR |
Объект с информацией о календаре, связанном с графиком работы |
|
SCHEDULE_VIOLATION_RULES |
Объект с описанием правил нарушения графика работы |
|
USER_ASSIGNMENTS |
Назначения графика сотрудникам и отделам. Поля приходят, только если у графика есть назначения. Элемент назначения сотрудника: |
|
time |
Информация о времени выполнения запроса |
Метод возвращает назначения сотрудникам в поле DEPARTMENT_ASSIGNMENTS, а назначения отделам — в USER_ASSIGNMENTS.
Объект REPORT_PERIOD_OPTIONS
|
Название |
Описание |
|
START_WEEK_DAY |
День начала недели. Возможные значения:
|
Объект ALLOWED_DEVICES
|
Название |
Описание |
|
browser |
Разрешен ли учет рабочего времени через браузер. Если |
|
b24time |
Разрешен ли учет через приложение Битрикс24.Время |
|
mobile |
Разрешен ли учет через мобильное приложение |
|
mobileRecordLocation |
Записывать ли местоположение при учете через мобильное приложение |
Объект SHIFTS
|
Название |
Описание |
|
ID |
Идентификатор смены |
|
NAME |
Название смены |
|
BREAK_DURATION |
Длительность перерыва в секундах |
|
WORK_TIME_START |
Время начала рабочего дня в секундах от полуночи |
|
WORK_TIME_END |
Время окончания рабочего дня в секундах от полуночи |
|
WORK_DAYS |
Строка с кодами рабочих дней. Например, |
|
SCHEDULE_ID |
Идентификатор графика работы |
|
DELETED |
Флаг удаления смены. Значение |
Объект CALENDAR
|
Название |
Описание |
|
ID |
Идентификатор календаря |
|
NAME |
Название календаря |
|
PARENT_CALENDAR_ID |
Идентификатор родительского календаря. Значение |
|
SYSTEM_CODE |
Системный код календаря |
|
Исключения из календаря. Если исключений нет, приходит пустой массив. Если они заданы, приходит объект: ключ — год, значение — даты, исключенные из календаря |
Объект SCHEDULE_VIOLATION_RULES
|
Название |
Описание |
|
ID |
Идентификатор правил нарушений графика |
|
SCHEDULE_ID |
Идентификатор графика работы |
|
ENTITY_CODE |
Код сотрудников, к которым применяются правила. Например, |
|
MAX_EXACT_START |
Максимальное точное время начала рабочего дня в секундах от полуночи |
|
MIN_EXACT_END |
Минимальное точное время окончания рабочего дня в секундах от полуночи |
|
MAX_OFFSET_START |
Максимальное смещение начала рабочего дня. Значение |
|
MIN_OFFSET_END |
Минимальное смещение окончания рабочего дня. Значение |
|
RELATIVE_START_FROM |
Относительное начало рабочего дня (относительно планируемого времени). Значение |
|
RELATIVE_START_TO |
Относительное окончание рабочего дня (относительно планируемого времени). Значение |
|
RELATIVE_END_FROM |
Относительное начало окончания рабочего дня. Значение |
|
RELATIVE_END_TO |
Относительное окончание рабочего дня. Значение |
|
MIN_DAY_DURATION |
Минимальная продолжительность рабочего дня в секундах |
|
MAX_ALLOWED_TO_EDIT_WORK_TIME |
Максимальное время, на которое можно изменить рабочее время в секундах |
|
MAX_WORK_TIME_LACK_FOR_PERIOD |
Максимальное время недоработки за период в секундах |
|
PERIOD_TIME_LACK_AGENT_ID |
Идентификатор агента, который проверяет недоработку за период |
|
MAX_SHIFT_START_DELAY |
Максимальная задержка начала смены в секундах. Значение |
|
MISSED_SHIFT_START |
Включен ли контроль пропуска начала смены: |
|
USERS_TO_NOTIFY |
Объект с описанием пользователей для уведомления о нарушениях графика |
Объект USERS_TO_NOTIFY
|
Название |
Описание |
|
FIXED_START_END |
Список пользователей для уведомления о фиксированном начале и окончании рабочего дня. Каждый элемент массива содержит идентификатор пользователя в формате |
|
FIXED_PER_RECORD |
Список пользователей для уведомления о фиксированных записях рабочего времени. Каждый элемент массива содержит идентификатор пользователя в формате |
|
FIXED_EDIT_WORKTIME |
Список пользователей для уведомления об изменении рабочего времени. Каждый элемент массива содержит идентификатор пользователя в формате |
|
FIXED_PERIODIC |
Список пользователей для уведомления о периодических нарушениях графика. Каждый элемент массива содержит идентификатор пользователя в формате |
|
SHIFT_DELAY |
Список пользователей для уведомления о задержке начала смены |
|
SHIFT_MISSED_START |
Список пользователей для уведомления о пропуске начала смены |
Обработка ошибок
HTTP-статус: 400
{
"error": "TIMEMAN_TOOL_DISABLED",
"error_description": "Учет рабочего времени отключен."
}
|
Название |
Описание |
|
error |
Строковый код ошибки. Состоит из цифр, латинских букв и знака подчеркивания. Может прийти пустым — тогда причину показывает только |
|
error_description |
Текст ошибки для разработчика. Не показывайте его конечному пользователю без обработки |
Возможные коды ошибок
|
Код |
Описание |
Значение |
|
|
Учет рабочего времени отключен. |
Инструмент Учет рабочего времени отключен |
|
|
Could not find value for parameter |
Не передан обязательный параметр |
Статусы и коды системных ошибок
HTTP-статус: 4xx, 5xx
Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.
|
Статус |
Код |
Описание |
|
|
|
Возникла внутренняя ошибка сервера. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Сервер вернул неожиданный ответ. Повторите вызов, а если ошибка сохраняется, обратитесь к администратору сервера или в техническую поддержку Битрикс24 |
|
|
|
Превышен лимит на интенсивность запросов |
|
|
|
Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит |
|
|
|
В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука |
|
|
|
Методы вызываются только по протоколу HTTPS |
|
|
|
REST API заблокирован из-за перегрузки. Это ручная индивидуальная блокировка. Чтобы ее снять, обратитесь в техническую поддержку Битрикс24 |
|
|
|
REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — |
|
|
|
Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом |
|
|
|
Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа |
|
|
|
Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на |
|
|
|
Срок действия access-токена истек |
|
|
|
Приложение установлено, но администратор Битрикс24 открыл доступ к нему только конкретным пользователям |
|
|
|
Публичная часть сайта закрыта. Чтобы открыть ее на коробочной установке, отключите опцию «Временное закрытие публичной части сайта». Путь к настройке: Рабочий стол > Настройки > Настройки продукта > Настройки модулей > Главный модуль > Временное закрытие публичной части сайта |