Поділитися через


Редагування календарів робочого часу за допомогою API

Організаціям часто потрібно створювати, редагувати або видаляти робочі години з календарів своїх ресурсів програмним шляхом. У календарях відображається робочий час, вільний час і перерви, які визначають доступність ресурсу під час планування роботи. Такі ресурси повинні плануватися у певних часових поясах, можуть дотримуватися або не дотримуватися неробочих годин та мати змінну виробничу спроможність. Щоб дізнатися більше про визначення робочого часу в програмі Field Service, перейдіть до розділу Додавання робочого часу до ресурсу, який можна забронювати.

Окрім використання програми Field Service, для змінення правил календаря для вибраних типів записів можна використовувати наведені нижче API.

  • API збереження календаря (msdyn_SaveCalendar) створює або оновлює записи календаря у вибраному об’єкті на основі вхідних даних, переданих як запит.
  • API видалення календаря (msdyn_DeleteCalendar) видаляє всі внутрішні правила календаря для вибраної сутності на основі вхідних даних, переданих як запит.
  • API збереження/видалення календаря V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, прапорець пропускання UseV2) дозволяє повторюватися кілька робочих годин одночасно, змінюючи логіку перекриття правил. Щоб дізнатися більше, перегляньте статтю Що станеться, якщо правила збігаються?.

Ця стаття містить детальну інформацію про вхід (запит) і вихід (відповідь) кожного API, а також про їх використання з прикладами.

вимоги

  • Версія платформи 9.2.21055 або вище з версією Universal Resource Scheduling 3.12.45.7.
  • Використання одного з таких типів записів:
    • Ресурс, який можна забронювати (bookableresource)
    • Потреба в ресурсах (msdyn_resourcerequirement)
    • Шаблон робочого часу (msdyn_workhourtemplate)
    • Проект (msdyn_project)

Типи подій календаря

Коли ви створюєте календар, ви визначаєте, скільки разів тип робочого часу відбувається: один раз, цілий день, щотижня або щодня, або ви можете створити власне повторення. Щоб дізнатися більше про ці події календаря, перегляньте приклади нижче в цій статті.

Екземпляр

Коли тип робочого часу зустрічається лише один раз у календарі сутності, це називається подією.

Наприклад, розглянемо ресурс, який працює з 5:00 до 10:00 ранку 26 травня 2021 року. Ці API підтримують лише цей тип входження, яке починається та закінчується в межах одного дня. Як інший приклад, розглянемо ресурс, який працює з 20:00 26 травня 2021 року до 10:00 27 травня 2021 року. Ви не можете створити цей випадок, використовуючи лише один виклик msdyn_SaveCalendar API, замість цього вам потрібно зробити два виклики.

Цілодобове входження

Якщо робочий час використовується протягом одного або кількох цілих днів, починаючи з опівночі (12:00) від дати початку, це явище триваєцілий день. Максимальна тривалість цілодобового входження становить п’ять років.

Наприклад, ресурс працює цілодобово з 26 травня 2021 року до кінця дня 30 травня 2021 року. Це цілодобове входження, що триває п’ять днів.

Щотижневе повторення

Коли тип робочого часу відбувається в один і той же час у вибрані дні кожного тижня, це називається тижневим повторенням.

Наприклад, ресурс працює з 5:00 до 10:00 щопонеділка, щовівторка та щосереди.

Щоденне повторення

Коли тип робочого часу відбувається в один і той же час щодня, це називається щоденним повторенням.

Наприклад, ресурс щодня працює з 5:00 до 10:00.

Настроюване повторення

Якщо тип робочого часу припадає на певний час у певні дні тижня, але в різні дні час різний, можна створити власний повтор.

Наприклад, ресурс працює з 5:00 до 10:00 щопонеділка і з 12:00 до 15:00 щосереди.

Типи робочого часу

Ці API підтримують операції створення, оновлення та видалення для зазначених нижче типів робочого часу.

Робочий час

Робочий час — це час, протягом якого сутність доступна для виконання роботи.

Використовуючи ці API, ви можете виконувати зазначені нижче дії.

  • Створення, редагування або видалення входжень робочого часу.
  • Створення, редагування або видалення щоденних повторень робочого часу.
  • Створення, редагування або видалення щотижневих повторень робочого часу.
  • Створення, редагування або видалення настроюваних повторень робочого часу.
  • Створення, редагування або видалення цілодобового робочого часу.
  • Створення або редагування виробничої спроможності протягом робочого часу.
  • Редагування окремого входження робочого часу в межах повторення.
  • Відредагуйте цей і наступний входження в повторенні.
  • Заміна входження робочого часу на повторення.
  • Зміна часового поясу для правила календаря.

Використовуючи цей API, ви не можете виконувати зазначені нижче дії.

  • Видалення окремого входження робочого часу з повторення.
  • Створення входження, яке триває 24 години, але не починається та не закінчується опівночі (00:00).
  • Створення, редагування або видалення цілодобового повторення.

Неробочий час

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

Використовуючи ці API, ви можете виконувати зазначені нижче дії.

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

Використовуючи ці API, ви не можете виконувати зазначені нижче дії.

  • Створіть або відредагуйте повторення неробочих годин.

Перервати

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

Використовуючи ці API, ви можете виконувати зазначені нижче дії.

  • Створення або редагування перерв поміж робочого часу.

Використовуючи ці API, ви не можете виконувати зазначені нижче дії.

  • Видалення тільки перерв із входження або повторення робочого часу.

Вільний час

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

Використовуючи ці API, ви можете виконувати зазначені нижче дії.

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

Використовуючи ці API, ви не можете виконувати зазначені нижче дії.

  • Створення або редагування повторень вільного часу.

Неробочий час

Ви можете створити сутності закриття компанії, які визначатимуть час закриття компанії. msdyn_SaveCalendar Використовуючи API, ви можете налаштувати кожну сутність на спостереження або ігнорування часу закриття бізнесу організації за допомогою додаткового ключа ObserveClosure . Коли вони налаштовані на спостереження за цими закриттями, сутності недоступні для роботи.

API «Зберегти календар»

Вхідні дані

Запит містить лише один атрибут — CalendarEventInfo, який є типом String . Він містить кілька інших атрибутів, вбудованих у цей рядок.

Нотатка

У наведеній нижче таблиці Тип представляє формат, який очікується для успішного виконання запиту. Проте весь запит аналізується як один рядок.

CalendarEventInfo

Ім’я Тип Необхідний Опис
EntityLogicalName String Так Цей ключ описує сутність, з якої викликається API. Календар цієї сутності має бути створений або змінений.
CalendarId GUID Так Цей ключ містить ідентифікатор календаря, пов'язаного із описаною вище сутністю. Під час створення будь-якої з цих сутностей автоматично створюється запис календаря. Ці API редагують той запис календаря, додаючи нові або редагуючи наявні правила.
RulesAndRecurrences RulesAndRecurrences Так Цей ключ є масивом, і кожен елемент містить кілька атрибутів, як зазначено в таблиці в наступному розділі. Масив повинен містити принаймні один елемент.
IsVaried Boolean No Цей ключ має бути встановлено у значення true для нетипових сценаріїв повторення.
IsEdit Boolean No Для цієї клавіші слід встановити значення true для редагування наявних правил.
TimeZoneCode Ціле число No Цей ключ приймає ціле значення, що відповідає часовому поясу для правил календаря. Щоб дізнатися зіставлення, перейдіть до розділу Коди часових поясів далі в цій статті. За замовчуванням використовується часовий пояс користувача.
InnerCalendarDescription String No Цей ключ потрібен, лише якщо правило календаря стосується вільного часу. Він має містити обґрунтування для вільного часу.
ObserveClosure Boolean No Цей ключ використовується для повторень. Якщо його встановлено true, суб’єкт господарювання спостерігає за закриттям бізнесу.
RecurrenceEndDate DateTime No Цей ключ використовується для повторень. Містить дату завершення для повторення. Якщо часова позначка 08:00:00 або раніше, то дата завершення повторення буде на за один день до вказаної дати. Якщо часова позначка 08:00:01 або пізніше, дата враховується як є. Значення за замовчуванням для входжень — null. Значення за замовчуванням для повторень — 30 Dec 9999, 23:59:59 hours, UTC.
RecurrenceSplit Boolean No Цей ключ використовується для повторень. Його встановлено у значення true для редагування «Це та наступні випадки» повторення.
ResourceId GUID No Цей ключ містить SystemUserId або ResourceId і передається лише тоді, коли сутність, пов’язана з цим викликом, є резервованим ресурсом типу SystemUser. Це необхідно для перевірки привілеїв OwnCalendar на вкладці Керування службами.
ВикористанняV2 Позначка No Передача цього прапорця вмикає версію V2 календаря робочого часу з розширеною логікою правил, що перекриваються, що дозволяє кілька повторень. Щоб дізнатися більше, перегляньте статтю Що станеться, якщо правила збігаються?.

RulesAndRecurrences

Ім'я Ввести Обов'язковий Опис
Правила Правила Так Цей ключ є масивом, і кожен елемент містить кілька атрибутів, як зазначено в таблиці в наступному розділі. Масив повинен містити принаймні один елемент.
RecurrencePattern String No Цей ключ використовується для повторень. Наразі ми підтримуємо лише цей шаблон: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY можна змінити, щоб включити менше днів; FREQ Однак і INTERVAL не може бути змінений.
InnerCalendarId GUID No Цей ключ використовується для редагування. Якщо правило редагується, сюди потрібно передати InnerCalendarId . Якщо ідентифікатор InnerCalendarId не передано, API створює нове правило, навіть якщо для ключа IsEdit встановлено значення true.
Справа Ціле число No Цей ключ використовується для настроюваних повторень. Якщо створюється або редагується настроюване повторення, необхідно ввести одне з таких чисел:
  • (1) Додавання дня до повторення
  • (2) Видалення дня з моменту повторення
  • (3) Редагування лише дат або часу початку або завершення, або редагування виробничої спроможності
  • (4) Будь-яке інше редагування, окрім зазначених у (3) ключів

Правила

Унікальне ім'я Ввести Обов'язковий Опис
StartTime DateTime Так Цей ключ містить запис datetime у форматі ISO. Наприклад, \"2021-05-15T12:00:00.000Z\". Частина із часовим поясом визначає час початку робочого часу в зазначеному раніше часовому поясі. Частина із датою визначає дату початку робочого часу. Тут 15 травня 2021 року — дата входження або дата початку повторення. Якщо шаблон такий BYDAY=TU,WE, але датою є 15 травня (субота), API автоматично створить або відредагує правила для всіх вівторків і серед, наступних за 15 травня. Це випадок, коли для правила не є необхідним, щоб дата відповідала дню тижня.
EndTime DateTime Так Він містить запис datetime у форматі ISO. Наприклад, \"2021-05-15T12:00:00.000Z\". Частина із часовим поясом визначає час завершення робочого часу в зазначеному раніше часовому поясі. Частина дати має містити ту саму дату, що й частина дати в часі початку. Існують лише такі винятки:
  • Якщо це цілодобове входження. У цьому випадку частина із датою має відображати дату завершення цілодобового входження.
  • Входження закінчується наприкінці доби, тобто, в 00:00 наступного дня. При цьому дата повинна бути \"2021-05-16T00:00:00.000Z\". Щоб указати дату завершення повторення, змініть атрибут RecurrenceEndDate .
WorkHourType Ціле число Так Цей ключ містить число, що відповідає одному з наступних параметрів:
  • (0) Робочий
  • (1) Перерва
  • (2) Неробочі
  • (3) Вільний час
Обсяг роботи Ціле число No Цей ключ визначає виробничу спроможність сутності. Має бути цілим числом. Значення за замовчуванням: 1.

Вихідні дані

Цей API POST створює або змінює записи правил календаря для вибраної сутності. Також генерує наведені нижче результати.

Ім’я Тип Опис
InnerCalendarIds String Масив GUID InnerCalendarIds , які є результатом операції POST.

API «Видалити календар»

Вхідні дані

Ім’я Тип Необхідний Опис
EntityLogicalName String Так У цьому полі описано сутність, правила календаря якої потрібно видалити.
InnerCalendarId GUID Так Це поле описує ідентифікатор InnerCalendarId , який потрібно видалити. Якщо з одним правилом пов’язано кілька ідентифікаторів InnerCalendarId, тут достатньо будь-якого одного ідентифікатора. Докладніше про внутрішній і зовнішній календарі: Календарні сутності
CalendarId GUID Так Це поле описує CalendarId сутності.
IsVaried Boolean No Це поле є специфічним для повторень і встановлюється yes , якщо видаляється нетипове правило повторення.
ВикористанняV2 Позначка No Передача цього прапорця вмикає версію V2 календаря робочого часу з розширеною логікою правил, що перекриваються, що дозволяє кілька повторень. Щоб дізнатися більше, перегляньте статтю Що станеться, якщо правила збігаються?.

Вихідні дані

Цей API POST видаляє записи правил календаря для вибраної сутності. Крім того, API генерує наведені нижче результати.

Унікальне ім'я Ввести Опис
InnerCalendarIds String Масив GUID InnerCalendarIds , які є результатом операції POST.

Завантажити API календаря

Вхідні дані

Ім’я: msdyn_LoadCalendars
Тип: Дія
Опис: повертає календарі для вказаного LoadCalendarsInput.

Назва: msdyn_LoadCalendars.LoadCalendarsInput
Тип: Параметр
Опис: Рядок у такому форматі JSON:

{
   StartDate: string,
   EndDate: string,
   CalendarIds: string[]
}

Ім’я: msdyn_LoadCalendarsResponse
Тип: ComplexType
Опис: містить відповідь дії msdyn_loadCalendars.

Назва: msdyn_LoadCalendarsResponse.CalendarEvents
Тип: Власність
Опис: Рядок у такому форматі JSON:

{
"calendarId": CalendarEventSlot[]
}

Де calendarId є належним guid, що представляє Guid календаря, а CalendarEventSlot є об’єктом такого формату:

{
  CalendarId: string,
  InnerCalendarId: string,
  Start: string,
  End: string,
  Effort: double
}

Як викликаються API

Ці API можна викликати за допомогою браузера.

  1. Відкрийте браузер і організацію, в якій необхідно внести зміни в календар.
  2. Відкрийте Інструменти розробника (виберіть Ctrl+Shift+I , Microsoft Edge виберіть F12 у Google Chrome).
  3. У консолі введіть наступну функцію, попередньо замінивши [org-name] на org details (наприклад, http://your_org.crm.dynamics.com):
       function CalendarAction(action, data) {
           let req = new XMLHttpRequest();
           req.open("POST", "**[org-name]**/api/data/v9.0/" + action, true);
           req.setRequestHeader("OData-MaxVersion", "4.0");
           req.setRequestHeader("OData-Version", "4.0");
           req.setRequestHeader("Accept", "application/json");
           req.setRequestHeader("Content-Type", "application/json; charset=utf-8");
           req.setRequestHeader("Prefer", 'odata.include-annotations="*"');
           req.onreadystatechange = function () {
               if (this.readyState === 4) {
                   req.onreadystatechange = null;
                   if(this.status == 200) {
                       console.log(JSON.parse(this.response));
                   } else {
                       console.error(JSON.parse(this.response));
                   }
               }
           };
           req.send(JSON.stringify(data));
       }
  1. Після визначення цієї функції, ви можете викликати її за допомогою API для створення, редагування або видалення календарів. Введіть наступний виклик, щоб зберегти календар:
       CalendarAction("msdyn_SaveCalendar",{
           "CalendarEventInfo":"{
               \"CalendarId\":\"df0857c4-50f5-4576-8e89-f236670ad2d5\",
               \"EntityLogicalName\":\"bookableresource\",
               \"TimeZoneCode\":92,\"StartDate\":\"2021-04-25T00:00:00.000Z\",
               \"IsVaried\":false,
               \"RulesAndRecurrences\":[{
                   \"Rules\":[{
                       \"StartTime\":\"2021-04-25T08:00:00.000Z\",
                       \"EndTime\":\"2021-04-25T17:00:00.000Z\",
                       \"Duration\":540,
                       \"Effort\":1
                   }]
               }]
           }"
       })

Введіть наступний виклик, щоб видалити календар:

       CalendarAction("msdyn_DeleteCalendar", {
           "CalendarEventInfo":"{
               \"CalendarId\":\"8390358c-77d0-430f-b176-f27adadac8eb\",
               \"EntityLogicalName\":\"bookableresource\",
               \"InnerCalendarId\":\"cf508c2c-5c55-485c-be1e-d2ebcb385441\"
           }"
       })
       

Приклади здійснення різних викликів відповідно до ваших потреб ви можете знайти у наступному розділі. Замініть action виклик функції в крок 3 на msdyn_SaveCalendar or msdyn_DeleteCalendar, і замініть data на відповідний CalendarEventInfo.

Також дивіться наступний скріншот із закликом Power Automate до msdyn_SaveCalendar дії: Power Automate закликати до msdyn_SaveCalendar дій.

Приклад сценаріїв використання API

Розгляньмо кілька сценаріїв, у яких можна застосувати ці API.

Bob і Tim – це водії вантажівок для служби доставки Contoso Enterprises у Белвю, Вашингтон. Їх диспетчер, Деббі, відповідає за внесення змін до їх календарів робочого часу. Деббі вносить ці зміни за допомогою msdyn_SaveCalendar API та msdyn_DeleteCalendar .

Створення входження робочого часу.

Боб за розкладом 15 травня 2021 року повинен бути на виїздах з 9:00 до 17:00, доставляючи пакунки. Деббі використовує msdyn_SaveCalendar API.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-15T09:00:00.000Z\",\"EndTime\":\"2021-05-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}]}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

Редагування входження робочого часу.

Потім розклад Боба змінюється, і тепер робота повинна починатися о 10:00 15 травня 2021 року. Деббі використовує msdyn_SaveCalendar API.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"IsEdit\":\"true\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-15T10:00:00.000Z\",\"EndTime\":\"2021-05-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}], \"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

Видалення входження робочого часу.

Виникає надзвичайна ситуація в сім’ї, і Бобу потрібно скасувати цілий робочий день. Деббі використовує msdyn_DeleteCalendar API.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"}"
}

Відповідь

{
  "InnerCalendarIds": "[\"f76cc333-cbbe-eb11-a81d-000d3a6e4359\"]"
}

Створення щоденного повторення робочого часу

Починаючи з 20 травня 2021 року, Боб вирішує працювати з Contoso весь тиждень з 8:00 до 17:00, і припинить роботу там 15 липня 2021 року.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RecurrenceEndDate\":\"2021-07-15T00:00:00.000Z\",\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T08:00:00.000Z\",\"EndTime\":\"2021-05-20T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\"]"
}

Редагування щоденного повторення робочого часу із підвищеною виробничою спроможністю

Боб вирішує припинити роботу на весь тиждень з 15 червня 2021 року, щоб зробити перерву. До того часу Боб продовжить тижневий графік, як було домовлено раніше. Деббі вносить ці зміни за допомогою msdyn_SaveCalendar API.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RecurrenceEndDate\":\"2021-06-15T00:00:00.000Z\",\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T08:00:00.000Z\",\"EndTime\":\"2021-05-20T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"InnerCalendarId\":\"20f6cfa7-cfbe-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"867a2461-cdbe-eb11-a81d-000d3a6e4359\"]"
}

Створення щотижневого повторення робочого часу

Починаючи з 16 червня 2021 року, Боб працюватиме з 8:00 до 17:00 по середах і п’ятницях, а на обід зробить перерву з 12:00 до 12:30. Деббі використовує msdyn_SaveCalendar API, але робить помилку і планує перерву з 12:00 до 13:00.

Запит

{
  "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-16T08:00:00.000Z\",\"EndTime\":\"2021-06-16T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}, {\"StartTime\":\"2021-06-16T12:00:00.000Z\",\"EndTime\":\"2021-06-16T13:00:00.000Z\",\"Effort\":null,\"WorkHourType\":1}, {\"StartTime\":\"2021-06-16T13:00:00.000Z\",\"EndTime\":\"2021-06-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,TH,FR\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}

Редагування перерви у щотижневому повторенні робочого часу

Потім Деббі виправляє помилку та змінює перерву, щоб вона відбувалася з 12:00 до 12:30 за допомогою msdyn_SaveCalendar API.

Запит

{
  "CalendarEventInfo": "{\"CalendarId\":\"d33263c7-c16b-4e3e-a56a-20f7a66cafc1\",\"EntityLogicalName\":\"bookableresource\",\"IsEdit\":\"true\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-15T08:00:00.000Z\",\"EndTime\":\"2021-06-15T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}, {\"StartTime\":\"2021-06-15T12:00:00.000Z\",\"EndTime\":\"2021-06-15T12:30:00.000Z\",\"Effort\":null,\"WorkHourType\":1}, {\"StartTime\":\"2021-06-15T12:30:00.000Z\",\"EndTime\":\"2021-06-15T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"InnerCalendarId\":\"1f894441-d0be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE,TH,FR\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"1f894441-d0be-eb11-a81d-000d3a6e4359\"]"
}

Створення настроюваного повторення робочого часу

Тім працює з Contoso по понеділках з 8:00 до 17:00, а також з 11:00 до 15:00. Тім почав працювати в Contoso 16 травня 2021 року. Деббі використовує msdyn_SaveCalendar API для створення робочого часу Тіма.

Запит

{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"IsVaried\":true,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-16T08:00:00.000Z\",\"EndTime\":\"2021-05-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=MO\"},{\"Rules\":[{\"StartTime\":\"2021-05-16T11:00:00.000Z\",\"EndTime\":\"2021-05-16T15:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"9fb8c199-d1be-eb11-a81d-000d3a6e4359\", \"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}

Редагування настроюваного повторення робочого часу

Потім графік Тіма змінюється на графік роботи з середи з 17:00 до 20:00 та четверга з 10:00 до 12:00. Понеділок прибирається з розкладу Тіма. Для цього Деббі використовує msdyn_SaveCalendar API.

Запит

{
"CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"IsVaried\":true,\"IsEdit\":true,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-16T08:00:00.000Z\",\"EndTime\":\"2021-05-16T17:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":2,\"InnerCalendarId\":\"9fb8c199-d1be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=MO\"},{\"Rules\":[{\"StartTime\":\"2021-05-16T17:00:00.000Z\",\"EndTime\":\"2021-05-16T20:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":3,\"InnerCalendarId\":\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\",\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=WE\"}, {\"Rules\":[{\"StartTime\":\"2021-05-16T10:00:00.000Z\",\"EndTime\":\"2021-05-16T12:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}],\"Action\":1,\"InnerCalendarId\":null,\"RecurrencePattern\":\"FREQ=WEEKLY;INTERVAL=1;BYDAY=TH\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}

Редагування входження робочого часу в межах повторення

26 травня 2021 року Тім може працювати лише з 13:00 до 19:00. Тут Деббі використовує msdyn_SaveCalendar API.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-26T13:00:00.000Z\",\"EndTime\":\"2021-05-26T19:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}], \"InnerCalendarId\":\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\"]"
}

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

Тім вирішив покинути компанію і змушений видалити весь їхній графік. Тут Деббі використовує msdyn_DeleteCalendar API.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"InnerCalendarId\":\"34d2210c-9fb6-eb11-a820-000d3afb1dba\",\"IsVaried\":true}"
}

Відповідь

{
  "InnerCalendarIds": "[\"a2b8c199-d1be-eb11-a81d-000d3a6e4359\", \"942bda0f-d3be-eb11-a81d-000d3a6e4359\"]"
}

Створення вільного часу

Тім збирається провести відпустку із родиною, тому бере три дні вільного часу, починаючи з 9 червня 2021 року.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"InnerCalendarDescription\":\"Family Vacation\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-06-15T00:00:00.000Z\",\"EndTime\":\"2021-06-17T00:00:00.000Z\",\"Effort\":1,\"WorkHourType\":3}]}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"266c434e-d5be-eb11-a81d-000d3a6e4359\"]"
}

Створення цілодобового робочого часу

Тім має зміну тривалістю 72 години, починаючи з 20 травня 2021 року. Деббі використовує msdyn_SaveCalendar API для створення робочого часу Тіма.

Запит

{
 "CalendarEventInfo": "{\"CalendarId\":\"a68245c9-ba2e-4496-9c18-3bee75fda396\",\"EntityLogicalName\":\"bookableresource\",\"TimeZoneCode\":5,\"RulesAndRecurrences\":[{\"Rules\":[{\"StartTime\":\"2021-05-20T00:00:00.000Z\",\"EndTime\":\"2021-05-22T00:00:00.000Z\",\"Effort\":1,\"WorkHourType\":0}]}]}"
}

Відповідь

{
  "InnerCalendarIds": "[\"6e160a8e-d5be-eb11-a81d-000d3a6e4359\"]"
}

: запитання й відповіді

Я отримую повідомлення про помилку: "Час початку не може бути більшим або рівним EndTime".

Переконайтеся, що у періодах часу різних правил календаря відсутні перекриття. Перевірте дати, щоб переконатися, що час початку вказано не пізніше за EndTime. Крім того, перевірте, що час зазначено у 24-годинному форматі.

Чи можна використовувати API для оновлення сутності «Шаблони робочого часу»?

Так, за допомогою цього API можна створювати та оновлювати не тільки робочий час ресурсу, але й шаблони робочого часу.

Я отримую повідомлення про помилку: "Сталася помилка десеріалізації об’єкта типу Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. Джерело вхідного сигналу неправильно відформатовано.
or
Стан очікування ’Element’.. Зустрів ’Текст’ з ім’ям ’’, простір імен ’’."

Переконайтеся, що рядок проаналізовано належним чином. Можливо, відсутні дужки, коми або крапки з комою.

Я отримую повідомлення про помилку "Недійсний шаблон повторення. Зверніться до документації щодо підтримуваних шаблонів."

Наразі ми підтримуємо лише цей шаблон: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY можна змінити, щоб включити менше днів; FREQ Однак і INTERVAL не може бути змінений. Упевніться, що в шаблоні немає пробілів.

Як ми отримуємо інформацію про CalendarId та InnerCalendarId ресурсу?

Атрибути CalendarId можуть бути отримані з атрибутів ресурсу. Здійсніть цей дзвінок, щоб отримати цю інформацію: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID]).

Прикладом попереднього виклику може бути [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e).

Його InnerCalendarId можна отримати з атрибутів календаря. Здійсніть цей дзвінок, щоб отримати цю інформацію: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules.

Приклад попереднього дзвінка [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules.

Що станеться, якщо є правила, що перетинаються?

Існує кілька різних рейтингів, яких стосуються правила:

  • 1 ранг - щоденне виникнення (робоче / неробоче) і вихідний час.
  • 0 ранг - щотижневий рецидив (робочий/неробочий).

Правила перекриття V2

  • Правила рейтингу 1 мають пріоритет перед правилами рейтингу 0. Якщо в один день діють два правила (по одному для кожного рангу), щоденне виникнення або відгул має пріоритет над щотижневим повторенням.
  • Якщо в межах одного проміжку дат є кілька правил рангу 0:
    • Якщо часи не перетинаються, вони обидва залишаться в календарі.
    • Якщо часи перетинаються, то правило, яке було нещодавно створено/змінено, вважається правилом, яке враховується для календаря ресурсу. Усі інші правила, що перетинаються, у проміжку дат буде вилучено. Якщо деякі правила рангу 0 мають перетини в одних датах, але не в інших, правило зрощується, щоб зберегти неперетинні частини, а частини, що перетинаються, видаляються.

Приклади поведінки календаря V2:

Приклад 1 - Повторювані робочі години: дати, що перетинаються, без збігу днів і часу

Протягом певного проміжку дат технік працює в ранкові, денні або нічні зміни в різні дні.

  1. Створіть перше повторюване правило календаря для певного діапазону дат. Наприклад: Повторюйте Пн, Вт; 1.1-4.1; 8 ранку-5 вечора за східним часом.

  2. Створіть друге правило календаря, що повторюється, для пересічного діапазону дат, стежачи за тим, щоб робочий час не перетинався з попередніми днями або часом. Наприклад: Повторюйте Ср, Чт; 1.1-4.1; 8 ранку-5 вечора за східним часом або Повторюйте Пн, Вт; 1.1-4.1; 5 вечора-8 вечора за східним часом.

Результат: Обидва календарні правила залишаються і співіснують поруч один з одним.

Приклад 2 - Повторювані робочі години: деякі дати, що перетинаються, і всі дні, що перекриваються, починаються/закінчуються до або після першого правила.

Технік отримує новий графік роботи, який замінює кілька тижнів старого графіка. За контрактом вони завжди працюють в одні й ті ж дні щотижня.

  1. Створіть перше повторюване правило календаря для певного діапазону дат. Наприклад: Повторюйте Пн, Вт; 2.1-4.1; 8 ранку-5 вечора за східним часом.

  2. Створіть друге правило календаря, що повторюється, для діапазону дат, що перекривається, коли робочі години всіх днів збігаються. Виберіть дати початку/завершення для цього нового правила, які передують або після дати початку/завершення першого правила. Наприклад: Повторюйте Пн, Вт; 3.1-5.1; 1pm-8pm ET.

Результат: перше правило обрізається відповідно до дати початку/завершення другого правила. Наприклад: Повторюйте Пн, Вт; 2.1-2.28; 8 ранку-5 вечора за східним часом І повторюйте Пн, Вт; 3.1-5.1; 1 вечора-8 вечора за східним часом.

Приклад 3 - Повторювані робочі години: всі дати, що перетинаються, з деякими днями/часом, що збігаються

Технік є контрактним працівником на фіксований 2-місячний термін. Вони домовилися взяти на себе додаткову роботу в деякі дні. Вони хочуть перенести робочий час у вівторок на більш ранній/пізній час.

  1. Створіть кілька повторюваних правил календаря для певного діапазону дат. Наприклад: Повторюйте Пн, Вт; 2.1-4.1; 8 ранку-12 вечора за східним часом І повторюйте Вт, Ср; 2.1-4.1, 1 вечора-5 вечора за східним часом.

  2. Створіть нове правило календаря, що повторюється, для того самого діапазону дат. Виберіть дні/години, які частково збігаються з оригінальними правилами. Наприклад: Повторюйте вт, чт ; 2.1-4.1; 10 ранку-2 вечора за східним часом.

Результат: нове правило перезаписує старе там, де є збіги, і залишає інші без змін. Наприклад: Повторюйте Пн; 2.1-4.1; 8 ранку-12 вечора за східним часом І повторюйте Ср; 2.1-4.1; 1 вечора-5 вечора за східним часом І повторюйте Вт, Чт ; 2.1-4.1; 10 ранку-2 вечора за східним часом.

Приклад 4 - Повторювані робочі години: дати нового правила, що містяться в старому правилі, деякі дні/час, що збігаються

Технік працює з 8 ранку до 5 вечора, з понеділка по п’ятницю щотижня. Всього протягом двох тижнів вони будуть займатися спеціальним надзвичайним проектом щопонеділка по середу з різним графіком роботи з 6 ранку до 6 вечора.

  1. Створіть перше повторюване правило календаря для певного діапазону дат. Наприклад: Повторюйте Пн, Вт, Ср, Чт, Пт; 1.1-Без кінцевої дати; 8 ранку-5 вечора за східним часом.

  2. Створіть друге правило календаря, що повторюється, що міститься у вказаному вище діапазоні дат, виберіть години роботи, які збігаються з деякими днями. Наприклад: Повторюйте Пн, Вт, Ср; 5.1-5.14; 6 ранку-6 вечора за східним часом.

Результат: До кінця цієї вправи в календарі має бути чотири правила, що повторюються:

  • Скоротіть перше правило до дати початку другого правила
  • Друге календарне правило
  • Створіть нове правило, подібне до першого, але з датами другого правила для днів, які не перетинаються
  • Обріжте перше правило, щоб воно починалося з дати завершення другого правила, без дати завершення

Наприклад: Повторюйте Пн, Вт, Ср, Чт, Пт; 1,1–4,30; 8 ранку-5 вечора за східним часом І повторюйте Пн, Вт, Ср; 5.1-5.14; 6 ранку-6 вечора за східним часом І повторюйте чт, пт, 5.1-5.14; 8 ранку-5 вечора за східним часом І повторюйте пн, вт, ср, чт, пт; 5.15 – без дати закінчення; 8 ранку-5 вечора за східним часом

Приклад 5 - Неповторюваний робочий час (виникнення, правило 1 рангу)

Технічний фахівець має певну кількість днів згуртованості команди, які мають пріоритет над усіма іншими робочими годинами протягом дня.

  1. Створіть правило календаря, що повторюється, для певного діапазону дат. Наприклад: Повторюйте Пн, Вт, Ср, Чт, Пт; 1.1-Без кінцевої дати; 8 ранку-5 вечора за східним часом.

  2. Створіть правило календаря, що не повторюється, яке міститиметься у вказаному вище діапазоні дат. Виберіть робочий час, який збігається з деякими днями. Наприклад: Без повторення; 6.21; 7:00-13:00 за східним часом.

Результат: До кінця вправи в календарі має бути 1 правило, що не повторюється. Правило неповторюваності має пріоритет над подією, що перекривається, для всього дня. Наприклад: Повторення Пн, Вт, Ср, Чт, Пт; 1.1 - Без дати закінчення, крім 6.21; не повторювати; 6.21; 7 ранку-1 вечора за східним часом.

Правила перекриття V1

  • Правила рейтингу 1 мають пріоритет перед правилами рейтингу 0. Таким чином, якщо в один день існувало два правила (по одному для кожного рангу), щоденне виникнення або відгул має пріоритет над щотижневим повторенням.
  • Якщо існує два правила одного рейтингу, правило, яке було нещодавно створено/змінено, буде використано для календаря ресурсу.
  • Пам'ятайте, що події, які відбуваються впродовж усього дня, мають рейтинг 1, тому ви можете подумати про зміну його на щотижневе повторення, щоб мати змогу додавати робочі години в разі появи та забезпечувати їх дотримання.
  • Якщо існує робочий час і створюється неробочий час, що накладається на нього, правила розділяються таким чином, щоб забезпечити дотримання робочого часу, і будь-який залишок часу в ролі робочого часу залишиться без змін. Наприклад, якщо 21 вересня встановлено робочий час з 8:00 до 17:00, а 21 вересня з 15:00 до 19:00 додано перерву, це буде вважатися робочим часом з 8:00 до 15:00 і неробочим часом з 15:00 до 19:00. Проте, якщо правила були створені в протилежному порядку (спочатку створений неробочий час, а потім — робочий), незалежно від проміжків часу, повторно буде видиратися лише робочий час. Неробочий час буде перезаписано.

Коди часових поясів

Перелік Часовий пояс
0 (GMT-12:00) Міжнародна лінія зміни дат (захід)
1 (GMT+13:00) Самоа
2 (GMT-10:00) Гаваї
3 (GMT-09:00) Аляска
4 (GMT-08:00) Тихоокеанський час (США та Канада)
5 (GMT-08:00) Нижня Каліфорнія
6 (GMT-11:00) Всесвітній координований час-11
7 (GMT-10:00) Алеутські острови
8 (GMT-09:30) Маркізькі острови
9 (GMT-09:00) Всесвітній координований час-09
10 (GMT-07:00) Гірський час (США й Канада)
11 (GMT-08:00) Всесвітній координований час-08
12 (GMT-07:00) Чіуауа, Ла-Пас, Масатлан
15 (GMT-07:00) Арізона
20 (GMT-06:00) Центральний час (США й Канада)
25 (GMT-06:00) Саскачеван
29 (GMT-06:00) Ґвадалахара, Мехіко, Монтеррей
33 (GMT-06:00) Центральна Америка
34 (GMT-06:00) Острів Пасхи
35 (GMT-05:00) Східний час (США й Канада)
40 (GMT-05:00) Індіана (схід)
43 (GMT-05:00) Гаїті
44 (GMT-05:00) Гавана
45 (GMT-05:00) Боґота, Ліма, Кіто, Ріу-Бранку
47 (GMT-04:00) Каракас
50 (GMT-04:00) Атлантичний час (Канада)
51 (GMT-05:00) Теркс і Кайкос
55 (GMT-04:00) Джорджтаун, Ла-Пас, Сан-Хуан
56 (GMT-04:00) Сантьяґо
58 (GMT-04:00) Куяба
59 (GMT-04:00) Асунсьйон
60 (GMT-03:30) Ньюфаундленд
65 (GMT-03:00) Бразиліа
69 (GMT-03:00) Буенос-Айрес
70 (GMT-03:00) Каєнна, Форталеза
71 (GMT-03:00) Сальвадор
72 (GMT-03:00) Сен-П’єр і Мікелон
73 (GMT-03:00) Ґренландія
74 (GMT-03:00) Монтевідео
75 (GMT-02:00) Середня Атлантика
76 (GMT-02:00) Всесвітній координований час-02
77 (GMT-03:00) Арагуаіна
80 (GMT-01:00) Азорські о-ви
83 (GMT-01:00) о. Кабо-Верде
84 (GMT+01:00) Касабланка
85 (GMT+00:00) Дублін, Единбург, Лісабон, Лондон
90 (GMT+00:00) Монровія, Рейк’явік
92 (GMT) Всесвітній координований час
95 (GMT+01:00) Белґрад, Братислава, Будапешт, Любляна, Прага
100 (GMT+01:00) Сараєво, Скоп’є, Софія, Варшава, Заґреб
105 (GMT+01:00) Брюссель, Копенгаґен, Мадрид, Париж
110 (GMT+01:00) Амстердам, Берлін, Берн, Відень, Рим, Стокгольм
113 (GMT+01:00) Західна Центральна Африка
115 (GMT+02:00) Кишинів
120 (GMT+02:00) Каїр
125 (GMT+02:00) Вільнюс, Гельсінкі, Київ, Рига, Софія, Таллінн
129 (GMT+02:00) Амман
130 (GMT+02:00) Афіни, Бухарест
131 (GMT+02:00) Бейрут
133 (GMT+02:00) Дамаск
134 (GMT+03:00) Стамбул
135 (GMT+02:00) Єрусалим
140 (GMT+02:00) Хараре, Преторія
141 (GMT+02:00) Віндгук
142 (GMT+02:00) Сектор Газа, Хеврон
145 (GMT+03:00) Москва, Санкт-Петербург
150 (GMT+03:00) Кувейт, Ер-Ріяд
151 (GMT+03:00) Мінськ
155 (GMT+03:00) Найробі
158 (GMT+03:00) Багдад
159 (GMT+02:00) Калінінград
160 (GMT+03:30) Тегеран
165 (GMT+04:00) Абу-Дабі, Мускат
169 (GMT+04:00) Баку
170 (GMT+04:00) Єреван
172 (GMT+04:00) Порт-Луї
173 (GMT+04:00) Тбілісі
174 (GMT+04:00) Іжевськ, Самара
175 (GMT+04:30) Кабул
176 (GMT+04:00) Астрахань, Ульяновськ
180 (GMT+05:00) Єкатеринбурґ
184 (GMT+05:00) Ісламабад, Карачі
185 (GMT+05:00) Ташкент
190 (GMT+05:30) Ченнаї, Колката, Мумбаї, Нью-Делі
193 (GMT+05:45) Катманду
195 (GMT+06:00) Астана
196 (GMT+06:00) Дакка
197 (GMT+06:00) Омськ
200 (GMT+05:30) Шрі-Джаяварденепура
201 (GMT+07:00) Новосибірськ
203 (GMT+06:30) Янґон
205 (GMT+07:00) Банґкок, Ханой, Джакарта
207 (GMT+07:00) Красноярськ
208 (GMT+07:00) Барнаул, Горно-Алтайськ
209 (GMT+07:00) Кобдо
210 (GMT+08:00) Пекін, Чунцін, Гонконг, Урумчі
211 (GMT+07:00) Томськ
215 (GMT+08:00) Куала-Лумпур, Сінґапур
220 (GMT+08:00) Тайбей
225 (GMT+08:00) Перт
227 (GMT+08:00) Іркутськ
228 (GMT+08:00) Улан-Батор
229 (GMT+09:00) Пхеньян
230 (GMT+09:00) Сеул
231 (GMT+08:45) Юкла
235 (GMT+09:00) Осака, Саппоро, Токіо
240 (GMT+09:00) Якутськ
241 (GMT+09:00) Чита
245 (GMT+09:30) Дарвін
250 (GMT+09:30) Аделаїда
255 (GMT+10:00) Канберра, Мельбурн, Сідней
260 (GMT+10:00) Брісбен
265 (GMT+10:00) Гобарт
270 (GMT+10:00) Владивосток
274 (GMT+10:30) Лорд-Хау
275 (GMT+10:00) Ґуам, Порт-Морсбі
276 (GMT+11:00) Острів Бугенвіль
277 (GMT+11:00) Острів Норфолк
278 (GMT+11:00) Сахалін
279 (GMT+11:00) Чокурдах
280 (GMT+11:00) Соломонові о-ви, Нова Каледонія
281 (GMT+11:00) Магадан
284 (GMT+12:00) Всесвітній координований час+12
285 (GMT+12:00) Острови Фіджі
290 (GMT+12:00) Веллінґтон, Окленд
295 (GMT+12:00) Анадир, Петропавловськ-Камчатський
299 (GMT+12:45) Чатем
300 (GMT+13:00) Нукуалофа
301 (GMT-05:00) Четумаль
302 (UTC+02:00) Хартум
303 (GMT-03:00) Пунта-Аренас
304 (GMT+04:00) Волгоград
305 (GMT-07:00) Юкон