Получить рабочий график timeman.schedule.get

Выберите инструмент для разработки с AI-агентом:

  • используйте Битрикс24 Вайбкод, чтобы создать приложение для Битрикс24 по описанию задачи без знания языков программирования. Агент напишет код и разместит приложение на сервере без ручной настройки хостинга
  • используйте MCP-сервер, чтобы разрабатывать интеграцию через REST API в своем проекте. Агент будет обращаться к официальной REST-документации

Scope: timeman

Кто может выполнять метод: пользователь с правом «Чтение всех рабочих графиков». Сотрудники получают это право по умолчанию

Метод timeman.schedule.get получает рабочий график по идентификатору. Если графика нет или id не число, метод вернет пустой массив без ошибки.

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

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

Название
тип

Описание

id*
integer

Идентификатор графика.

Узнать идентификатор графика можно в списке графиков на странице Сотрудники > Время и отчеты > Рабочие графики

Примеры кода

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

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

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

Название
тип

Описание

result
object | array

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

Содержит объект с описанием графика работы сотрудников. Если графика с таким идентификатором нет или он удален, метод вернет пустой массив

ID
integer

Идентификатор графика работы

NAME
string

Название графика работы

SCHEDULE_TYPE
string

Тип графика работы.

Варианты значений:

  • FIXED — фиксированный
  • SHIFT — посменный
  • FLEXTIME — свободный

REPORT_PERIOD
string

Периодичность формирования отчетов по графику.

Возможные значения:

  • MONTH — месяц
  • WEEK — неделя
  • TWO_WEEKS — две недели
  • QUARTER — квартал

REPORT_PERIOD_OPTIONS
object

Объект с описанием дополнительных настроек периода формирования отчетов.

Поле приходит при любом значении REPORT_PERIOD, а настройки из него относятся к периодам WEEK и TWO_WEEKS

CALENDAR_ID
integer

Идентификатор календаря, связанного с графиком работы

ALLOWED_DEVICES
object

Объект с описанием разрешенных устройств для учета рабочего времени

DELETED
string

Флаг удаления графика работы. Всегда "0": удаленный график метод не возвращает, вместо него приходит пустой массив

IS_FOR_ALL_USERS
boolean

Применимость графика ко всем сотрудникам.

Значение true означает, что график применяется ко всем пользователям системы

WORKTIME_RESTRICTIONS
array | object

Ограничения рабочего времени. Если ограничений нет, приходит пустой массив. Если они заданы, приходит объект с ключами ALLOWED_TO_EDIT_RECORD, ALLOWED_TO_REOPEN_RECORD и MAX_SHIFT_START_OFFSET

CONTROLLED_ACTIONS
integer

Действия сотрудника, которые контролирует график. Возможные значения:

  • 1 — начало рабочего дня
  • 2 — окончание рабочего дня
  • 3 — начало и окончание

UPDATED_BY
integer

Идентификатор пользователя, который последним обновил график работы

DELETED_BY
integer

Идентификатор пользователя, который удалил график работы.

Значение 0 указывает, что график не был удален

DELETED_AT
string

Дата и время удаления графика работы.

Пустая строка означает, что график не был удален

CREATED_BY
integer

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

Значение 0 указывает на системное создание

CREATED_AT
datetime

Дата и время создания графика работы

SHIFTS
array

Массив объектов смен. Каждый объект содержит описание смены, связанной с графиком работы

CALENDAR
object

Объект с информацией о календаре, связанном с графиком работы

SCHEDULE_VIOLATION_RULES
object

Объект с описанием правил нарушения графика работы

USER_ASSIGNMENTS
DEPARTMENT_ASSIGNMENTS
array

Назначения графика сотрудникам и отделам. Поля приходят, только если у графика есть назначения. Элемент назначения сотрудника: SCHEDULE_ID, USER_ID, STATUS

time
time

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

Метод возвращает назначения сотрудникам в поле DEPARTMENT_ASSIGNMENTS, а назначения отделам — в USER_ASSIGNMENTS.

Объект REPORT_PERIOD_OPTIONS

Название
тип

Описание

START_WEEK_DAY
integer

День начала недели.

Возможные значения:

  • 0 — понедельник
  • 1 — вторник
  • 2 — среда
  • 3 — четверг
  • 4 — пятница
  • 5 — суббота
  • 6 — воскресенье

Объект ALLOWED_DEVICES

Название
тип

Описание

browser
boolean

Разрешен ли учет рабочего времени через браузер.

Если true — учет разрешен

b24time
boolean

Разрешен ли учет через приложение Битрикс24.Время

mobile
boolean

Разрешен ли учет через мобильное приложение

mobileRecordLocation
boolean

Записывать ли местоположение при учете через мобильное приложение

Объект SHIFTS

Название
тип

Описание

ID
integer

Идентификатор смены

NAME
string

Название смены

BREAK_DURATION
integer

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

WORK_TIME_START
integer

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

WORK_TIME_END
integer

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

WORK_DAYS
string

Строка с кодами рабочих дней. Например, 12345 — с понедельника по пятницу

SCHEDULE_ID
integer

Идентификатор графика работы

DELETED
boolean

Флаг удаления смены.

Значение true означает, что смена удалена

Объект CALENDAR

Название
тип

Описание

ID
integer

Идентификатор календаря

NAME
string

Название календаря

PARENT_CALENDAR_ID
integer

Идентификатор родительского календаря.

Значение 0 указывает, что родительский календарь отсутствует

SYSTEM_CODE
string

Системный код календаря

EXCLUSIONS
array | object

Исключения из календаря. Если исключений нет, приходит пустой массив. Если они заданы, приходит объект: ключ — год, значение — даты, исключенные из календаря

Объект SCHEDULE_VIOLATION_RULES

Название
тип

Описание

ID
integer

Идентификатор правил нарушений графика

SCHEDULE_ID
integer

Идентификатор графика работы

ENTITY_CODE
string

Код сотрудников, к которым применяются правила.

Например, UA — все сотрудники

MAX_EXACT_START
integer

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

MIN_EXACT_END
integer

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

MAX_OFFSET_START
integer

Максимальное смещение начала рабочего дня.

Значение -1 означает, что ограничение не установлено

MIN_OFFSET_END
integer

Минимальное смещение окончания рабочего дня.

Значение -1 означает, что ограничение не установлено

RELATIVE_START_FROM
integer

Относительное начало рабочего дня (относительно планируемого времени).

Значение -1 означает, что ограничение не установлено

RELATIVE_START_TO
integer

Относительное окончание рабочего дня (относительно планируемого времени).

Значение -1 означает, что ограничение не установлено

RELATIVE_END_FROM
integer

Относительное начало окончания рабочего дня.

Значение -1 означает, что ограничение не установлено

RELATIVE_END_TO
integer

Относительное окончание рабочего дня.

Значение -1 означает, что ограничение не установлено

MIN_DAY_DURATION
integer

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

MAX_ALLOWED_TO_EDIT_WORK_TIME
integer

Максимальное время, на которое можно изменить рабочее время в секундах

MAX_WORK_TIME_LACK_FOR_PERIOD
integer

Максимальное время недоработки за период в секундах

PERIOD_TIME_LACK_AGENT_ID
integer

Идентификатор агента, который проверяет недоработку за период

MAX_SHIFT_START_DELAY
integer

Максимальная задержка начала смены в секундах.

Значение -1 означает, что ограничение не установлено

MISSED_SHIFT_START
integer

Включен ли контроль пропуска начала смены: 0 — выключен, значение больше 0 — включен

USERS_TO_NOTIFY
object

Объект с описанием пользователей для уведомления о нарушениях графика

Объект USERS_TO_NOTIFY

Название
тип

Описание

FIXED_START_END
array

Список пользователей для уведомления о фиксированном начале и окончании рабочего дня.

Каждый элемент массива содержит идентификатор пользователя в формате U<ID>

FIXED_PER_RECORD
array

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

Каждый элемент массива содержит идентификатор пользователя в формате U<ID>

FIXED_EDIT_WORKTIME
array

Список пользователей для уведомления об изменении рабочего времени.

Каждый элемент массива содержит идентификатор пользователя в формате U<ID>

FIXED_PERIODIC
array

Список пользователей для уведомления о периодических нарушениях графика.

Каждый элемент массива содержит идентификатор пользователя в формате U<ID>

SHIFT_DELAY
array

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

SHIFT_MISSED_START
array

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

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

HTTP-статус: 400

{
    "error": "TIMEMAN_TOOL_DISABLED",
    "error_description": "Учет рабочего времени отключен."
}

Название
тип

Описание

error
string

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

error_description
string

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

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

Код

Описание

Значение

TIMEMAN_TOOL_DISABLED

Учет рабочего времени отключен.

Инструмент Учет рабочего времени отключен

100

Could not find value for parameter

Не передан обязательный параметр id

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

HTTP-статус: 4xx, 5xx

Описанные ниже ошибки возвращает сам REST API, а не логика конкретного метода. Они могут прийти в ответ на любой метод.

Статус

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

Описание

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

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

429

OPERATION_TIME_LIMIT
Method is blocked due to operation time limit

Метод заблокирован из-за превышения лимита на ресурсоемкость запросов. Блокировка снимается автоматически, когда накопленное время выполнения метода перестает превышать лимит

401

NO_AUTH_FOUND
Wrong authorization data

В запросе нет авторизационных данных: не передан ни access-токен, ни код вебхука

401

INVALID_REQUEST
Https required

Методы вызываются только по протоколу HTTPS

401

OVERLOAD_LIMIT
REST API is blocked due to overload

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

401

ACCESS_DENIED
REST is available only on commercial plans

REST API доступен только на коммерческих тарифах. У вебхука текст ошибки другой — REST is available only by subscription

401

INVALID_CREDENTIALS
Invalid request credentials

Не найден активный вебхук с указанным идентификатором пользователя и секретным кодом

404

ERROR_METHOD_NOT_FOUND
Method not found!

Метод с таким именем не найден. Имя написано с ошибкой, метода нет в REST API или он недоступен без нужного скоупа

401

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

Запрос требует более широких прав, чем есть у токена: у вебхука это выданные ему права, у приложения — скоуп. У приложения текст ошибки заканчивается на provided by the access token

401

expired_token
The access token provided has expired

Срок действия access-токена истек

401

user_access_error
The user does not have access to the application

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

403

PORTAL_DELETED
Portal was deleted

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

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

Предыдущая
Следующая