Используется для получения настроек рабочего календаря, таких как:

  • интервалы рабочего и обеденного времени;
  • выходные дни;
  • укороченные и праздничные дни.

Hierarchy

  • ProductionSchedule

Properties

Readonly specialCalendars

specialCalendars: SpecialCalendars

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

Readonly workCalendars

workCalendars: WorkCalendars

Объект для работы с рабочими календарями.

Methods

calcDate

  • Метод позволяет вычислить дату, входящую в интервал рабочего времени.

    Дата вычисляется от заданной даты и с указанной продолжительностью. Если передан пользователь, то для расчёта будет использоваться рабочий календарь, связанный с этим пользователем, в противном случае — календарь по умолчанию, указанный для компании в целом.

    Например, можно вычислить, какая дата в рамках рабочего времени будет стоять через 14 часов после даты запуска процесса:

    const workingTime = await System.productionSchedule.calcDate(Context.data.__createdAt, new Duration(14, 'hours'));
    

    Важно: параметр time должен быть кратен минутам.

    Результат — объект типа TDatetime, который будет с той же временной зоной, что и у значения входного параметра from.

    Parameters

    • from: TDatetime

      Дата и время, от которых начинается отсчёт.

    • time: number | TDuration

      Интервал в часах или в виде значения TDuration.

    • Optional user: TUser

      Пользователь для которого вычисляется дата

    Returns Promise<TDatetime>

deleteSpecialDays

  • deleteSpecialDays(dates: TDate[]): Promise<void>
  • Удалить исключения в рабочем календаре по умолчанию.

    Пример удаления праздничных или укороченных дней:

    await System.productionSchedule.deleteSpecialDays([
         new TDate(2023, 12, 31),
         new TDate(2023, 12, 30),
    ]);
    

    Parameters

    • dates: TDate[]

      Даты удаляемых праздничных или укороченных дней.

    Returns Promise<void>

getGeneralSettings

  • Метод получает общие настройки рабочего календаря.

    К общим настройкам относятся режим рабочего времени и выходные дни недели.

    const generalSettings = await System.productionSchedule.getGeneralSettings();
    

    Returns Promise<ProductionScheduleGeneralSettings>

getSpecialDays

  • Метод получает укороченные и праздничные дни рабочего календаря.

    Укороченные и праздничные дни возвращаются за определенный период, передаваемый в аргументах метода:

    Parameters

    • from: TDatetime | TDate

      Начало периода.

    • to: TDatetime | TDate

      Конец периода.

      const fromDate = Context.data.__createdAt;
      const toDate = Context.data.request_deadline
      const specialDays = await System.productionSchedule.getSpecialDays(fromDate, toDate);
      

    Returns Promise<ProductionScheduleSpecialDay[]>

getWorkingTime

  • Метод позволяет получить продолжительность рабочего времени за определённый период.

    Продолжительность рабочего времени возвращается за период, передаваемый в аргументах метода. Если передан пользователь, то для расчёта будет использоваться рабочий календарь, связанный с этим пользователем, в противном случае — календарь по умолчанию, указанный для компании в целом.

    Parameters

    • from: TDatetime

      Начало периода.

    • to: TDatetime

      Конец периода.

    • Optional user: TUser

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

      const fromDatetime = Context.data.report_start;
      const toDatetime = Context.data.report_end;
      const reportedWorkingTime = await System.productionSchedule.getWorkingTime(fromDatetime, toDatetime);
      const weeklyHours = new Duration(40, "hours");
      if (workingTime.hours > eightHours.hours) {
          Context.data.notification = "Указанная длительность выходит за рамки рабочего времени";
      }
      

    Returns Promise<TDuration>

saveGeneralSettings

  • Метод позволяет изменить общие настройки рабочего календаря по умолчанию, т. е. календаря, который указан в настройках компании.

    Пример изменения настроек:

    const settings = await System.productionSchedule.getGeneralSettings();
    settings.weekends = {
       monday:    false,
       tuesday:   false,
       wednesday: false,
       thursday:  false,
       friday:    false,
       saturday:  true,  // Суббота — выходной
       sunday:    true,  // Воскресенье — выходной
    }
    await System.productionSchedule.saveGeneralSettings(settings);
    

    Parameters

    Returns Promise<void>

saveSpecialDays

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

    Пример создания укороченных и праздничных дней:

    await System.productionSchedule.saveSpecialDays([
         {
             date: new TDate(2023, 12, 30),
             holiday: false,
             from: 16 * 60 * 60, // с 16:00
             to: 18 * 60 * 60,   // до 18:00
         },
         {
             date: new TDate(2023, 12, 31),
             holiday: true, // Праздничный день
             from: 0,
             to: 0,
         },
    ]);
    

    Parameters

    Returns Promise<void>