Делите путем


Уредите календаре радног времена помоћу API-ја

Организације често треба програмски да креирају, уређују или бришу радно време на календарима својих ресурса. Календари приказују радно време, слободно време и паузе које одређују доступност ресурса када се планира рад. Ти ресурси морају бити распоређени у одређеним временским зонама, могу или не морају поштовати затварање предузећа и могу имати променљив капацитет. За информације о дефинисању радних сати у апликацији"Услуга поља" идите на опцију " Додавање радних сати" ресурсу који се може резервисати.

Поред употребе апликације Field Service, можете да користите следеће API-је да бисте изменили правила календара за одабране врсте записа:

  • АПИ календара чувања ( msdyn_SaveCalendar) креира или ажурира записе календара у изабраном ентитету, на основу уноса прослеђених као захтев.
  • АПИ календара за брисање ( msdyn_DeleteCalendar) брише сва унутрашња правила календара изабраног ентитета, на основу уноса који су прослеђени као захтев.
  • АПИ V2 календара чувања/брисања (мсдyн_СавеЦалендар/мсдyн_ДелетеЦалендар, заставица за пролаз UseV2) омогућава истовремено вишеструко понављање радног сата мењањем логике за правила која се преклапају. Више информација потражите у чланку Шта се дешава ако постоје правила која се преклапају?.

Овај чланак садржи детаље о уносу (захтеву) сваког АПИ-ја и излазу (одговор) и њиховој употреби, са примерима.

Предуслови

  • Верзија платформе #пии_ајхфххгјз или више са верзијом Универзалног ресурса за планирање #пии_ајхфххгаз.
  • Коришћење једне од следећих врста записа:
    • Књиговодствени ресурс (боокаблересоурце)
    • Захтев ресурса (мсдyн_ресоурцереqуиремент)
    • Предложак радног сата (мсдyн_wоркхоуртемплате)
    • Пројекат (мсдyн_пројецт)

Типови календарских догађаја

Када креирате календар, дефинишете колико пута ће се појавити тип радног сата – једном, током целог дана, сваке седмице или сваког дана или можете да креирате прилагођено понављање. За више информација о овим догађајима у календару погледајте примере касније у овом чланку.

Појављивање

Када се тип радног сата појављује само једном у календару ентитета, то се назива појављивање .

На пример, размотрите ресурс који ради од 05:00 до 10:00 26. маја 2021. Ови API-ји подржавају само ову врсту догађаја, која започиње и завршава се у истом дану. За други пример, размотрите ресурс који ради од 26. маја 2021. у 20:00 до 10:00 27. маја 2021. Не можете да креирате ово појављивање помоћу само једног позива АПИ-ја msdyn_SaveCalendar ; уместо тога морате да обавите два позива.

Целодневна појава

Када се врста радног сата догоди током једног или више целих дана, почевши од поноћи (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 календара

Улаз

Захтев садржи само један атрибут – ЦалендарЕвентИнфо , који је тип ниске. Садржи неколико других атрибута који су сви уграђени у овај низ.

Белешка

У следећој табели "Тип " представља формат за који се очекује да ће захтевати успешан захтев. Међутим, цео захтев је рашчлањен као један низ.

CalendarEventInfo

Име Тип Потребне Опис
EntityLogicalName String Да Овај кључ описује ентитет из којег се позива API. Календар овог ентитета треба да се креира или уређује.
CalendarId GUID Да Овај кључ садржи ID календара који се односи на горе описани ентитет. Када се креира било који од ових ентитета, запис календара се такође аутоматски креира. Ови API-ји уређују тај календарски запис додавањем правила или уређивањем постојећих правила.
RulesAndRecurrences RulesAndRecurrences Да Овај кључ је низ и сваки елемент садржи више атрибута како је наведено у табели у следећем одељку. Величина низа треба да буде најмање једна.
IsVaried Логичка вредност No Овај кључ би требало да буде постављен true на прилагођене сценарије понављања.
IsEdit Логичка вредност No Овај кључ би требало да буде постављен на true уређивање постојећих правила.
TimeZoneCode Integer No Овај кључ узима целобројну вредност која одговара временској зони за календарска правила. За мапирање идите на шифре временске зоне у скорије време у овом чланку. Подразумевана вредност је временска зона корисника.
InnerCalendarDescription String No Овај кључ је потребан само ако је правило календара за слободно време. Требало би да садржи разлог за слободно време.
ObserveClosure Логичка вредност No Овај кључ је специфичан за понављања. Ако је подешено true, ентитет посматра затварање предузећа.
RecurrenceEndDate Датум/време No Овај кључ је специфичан за понављања. Садржи датум завршетка понављања. Ако је временска ознака 08:00:00 или раније, датум завршетка понављања је један дан пре наведеног датума. Ако је временска ознака 08:00:01 или каснија, датум се поштује такав какав јесте. Подразумевана вредност за појаве је без вредности. Подразумевана вредност понављања је 30 Дец 9999, 23:59:59 часова, УТЦ.
RecurrenceSplit Логичка вредност No Овај кључ је специфичан за понављања. Подешен је за уређивање true "Ово и следеће појављивање" понављања.
ResourceId GUID No Овај кључ садржи ИД система или ИД ресурса и треба да буде прослеђен само када ентитет повезан са овим позивом буде књиговодствени ресурс типа СyстемУсер. Ово је неопходно да бисте проверили да ли постоје привилегије оwнЦалендар-а на картици "Управљање сервисом ".
KoristiV2 заставица No Прослеђивање ове заставице омогућава V2 верзију календара радног сата, са побољшаном логиком правила која се преклапају и омогућавају вишеструка понављања. Више информација потражите у чланку Шта се дешава ако постоје правила која се преклапају?.

RulesAndRecurrences

Именуј Тип Потребно Опис
Правила Правила Да Овај кључ је низ и сваки елемент садржи више атрибута како је наведено у табели у следећем одељку. Величина низа треба да буде најмање једна.
RecurrencePattern String No Овај кључ је специфичан за понављања. Тренутно подржавамо само овај образац: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY може да се промени да би се укључило мање дана; Међутим, FREQ и не INTERVAL може се променити.
InnerCalendarId GUID No Овај кључ је специфичан за уређивање. Ако се правило уређује, овде је потребно да се проследи ИннерЦалендарИд . Ако ИннерЦалендарИд није прослеђен, АПИ креира ново правило, чак и ако је ИсЕдит кључ постављен на тачно.
Акција Integer No Овај кључ је специфичан за прилагођена понављања. Ако се креира или уређује прилагођено понављање, треба унети један од следећих бројева:
  • (1) Додавање дана поновном појављивању
  • (2 ) Брисање дана од понављања
  • (3) Уређивање само датума или времена почетка или завршетка или капацитета уређивања
  • (4) Уређивање било чега осим кључева наведених у (3)

Правила

Име Тип Потребно Опис
StartTime Датум/време Да Овај кључ садржи ставку датума у ИСО формату. На пример, \"2021-05-15T12:00:00.000Z\". Временски део одређује време почетка радног времена у раније назначеној временској зони. Део датума одређује датум почетка радног времена. Овде је 15. мај 2021. датум настанка или датум почетка понављања. Ако је образац BYDAY=TU,WE био, али 15. мај (субота) је датум, АПИ ће аутоматски креирати или уређивати правила за све уторке и среду после 15. То је случај када правило не мора имати датум који одговара дану.
EndTime Датум/време Да Ово садржи ставку датума у ИСО формату. На пример, \"2021-05-15T12:00:00.000Z\". Временски део одређује време завршетка радног времена у раније назначеној временској зони. Део датума мора да садржи исти датум као део датума почетног времена. Једини изузеци су:
  • Ако је то целодневна појава. У овом случају, датумски део треба да одражава датум завршетка целодневног појављивања.
  • Појава се завршава на крају дана, односно у 00:00 следећег дана. У овом случају, датум би требало да буде \"2021-05-16T00:00:00.000Z\". Измените атрибут ПонављањеЕндДате да бисте навели крајњи датум понављања.
WorkHourType Integer Да Овај кључ садржи број који одговара једној од следећих опција:
  • (0) ради
  • (1) пауза
  • (2 ) Нерадни
  • (3) Одсуство
Напор Integer No Овај кључ одређује капацитет ентитета. Мора бити цео број. Подразумевана вредност је 1.

Излаз

Овај POST API ствара или мења записе правила календара за изабрани ентитет. Такође даје следећи излаз.

Име Тип Опис
InnerCalendarIds String Низ ГУИД-ова ИннерЦалендарИдс који су резултат ПОСТ операције.

Избриши API календара

Улаз

Име Тип Потребне Опис
EntityLogicalName String Да Ово поље описује ентитет чија правила календара треба избрисати.
InnerCalendarId GUID Да Ово поље описује ИД унутрашњег календара који треба избрисати. Ако постоји више ИннерЦалендарИд-ова повезаних са једним правилом, било који ИД је довољан овде. Више информација о унутрашњим и унутрашњим календарима:Ентитети календара
CalendarId GUID Да Ово поље описује ИД календара ентитета.
IsVaried Логичка вредност No Ово поље је специфично за понављања и подешено yes је на то да ли се брише прилагођено правило понављања.
KoristiV2 заставица No Прослеђивање ове заставице омогућава V2 верзију календара радног сата, са побољшаном логиком правила која се преклапају и омогућавају вишеструка понављања. Више информација потражите у чланку Шта се дешава ако постоје правила која се преклапају?.

Излаз

Овај POST API брише записе правила календара за изабрани ентитет. Такође даје следећи излаз.

Име Тип Опис
InnerCalendarIds String Низ ГУИД-ова ИннерЦалендарИдс који су резултат ПОСТ операције.

Учитај АПИ календара

Улаз

Име : мсдyн_ЛоадЦалендарс
Тип : Радња
Опис : Даје календаре за дати ЛоадЦалендарсИнпут.

Име : мсдyн_ЛоадЦалендарс.ЛоадЦалендарсИнпут
Тип : Параметар
Опис фирме: Ниска у следећем ЈСОН формату:

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

Име : мсдyн_ЛоадЦалендарсРеспонсе
Тип : ЦомплеxТyпе
Опис : Садржи одговор из мсдyн_лоадЦалендарс радње.

Име : мсдyн_ЛоадЦалендарсРеспонсе.ЦалендарЕвентс
Тип : својство
Опис фирме: Ниска у следећем ЈСОН формату:

{
"calendarId": CalendarEventSlot[]
}

Где је ИД календара одговарајући гуид који представља Гуид календара и КалендарЕвентСлот је објекат следећег формата:

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

Како да позовете API-је

Ови API-ји се могу позвати помоћу прегледача.

  1. Отворите прегледач и организацију у којој треба да извршите ове промене у календару.
  2. Отворите Девелопер Тоолс (изаберите Цтрл + Схифт + И ин Microsoft Edge, изаберите F12 у Гоогле Цхроме-у).
  3. У конзолу унесите следећу функцију након замене [орг-наме] детаљима о орг (на пример, 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_SaveCalendarmsdyn_DeleteCalendar замените data одговарајућим CalendarEventInfo.

Погледајте и следећи снимак екрана за позив Power Automate на акцију msdyn_SaveCalendar : Power Automate позив за мсдyн_СавеЦалендар акцију.

Примери сценарија за употребу API-ја

Прођимо кроз неке сценарије за које можете користити ове API-је.

Боб и Тим су возачи камиона за испоруку за Contoso Enterprises у граду Белевју, Вашингтон. Њихова отправница, Деби, одговорна је за уношење промена у њихове календаре радног времена. Деби прави ове промене користећи msdyn_SaveCalendarmsdyn_DeleteCalendar АПИ и АПИ.

Направите појаву радног времена.

Боб би требало да се вози ради испоруке пакета од 9:00 до 17:00 15. маја 2021. Деби користи msdyn_SaveCalendar АПИ.

Захтев

{
 "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 АПИ.

Захтев

{
 "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 АПИ.

Захтев

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

Одговор

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

Направите дневно понављање радног времена

Почевши од 20. маја 2021. године, Боб одлучује да ради са Контосом целе недеље од 8 до 17 часова, а тамо ће престати да ради 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 АПИ-ја.

Захтев

{
 "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 до 17 часова средом и петком, а правиће паузу од 12:00 до 12:30 часова на ручку. Деби користи msdyn_SaveCalendar АПИ, али прави грешку, и заказује паузу од 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 АПИ-ја.

Захтев

{
  "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. Тим је почео да ради фо Контосо 16. маја 2021. Деби користи msdyn_SaveCalendar АПИ да створи Тимово радно време.

Захтев

{
"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 АПИ да то постигне.

Захтев

{
"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 АПИ овде.

Захтев

{
 "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 АПИ овде.

Захтев

{
 "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 АПИ да створи Тимово радно време.

Захтев

{
 "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\"]"
}

Најчешћа питања о услузи

Добијам грешку: "Време почетка не може бити веће или једнако ЕндТиме-у."

Уверите се да нема преклапања у временским интервалима различитих правила календара. Проверите датуме да бисте се уверили да Време почетка није касније од ендТиме-а . Такође проверите да ли времена следе 24-часовни формат.

Да ли АПИ могу да се користе за ажурирање ентитета "Предлошци радних сати"?

Да, можете користити овај API за креирање и ажурирање предложака радног времена поред радног времена ресурса.

Схватам грешку: "Дошло је до грешке есеријализације објекта типа Мицрософт.Дyнамицс.УЦИЦалендар.Плугинс.СавеЦалендарЦонтрацт + ЦалендарЕвентИнфо. Улазни извор није исправно обликован.
or
Очекујући стање 'Елемент'.. Наишао сам на 'Текст' са именом '', простор за име ''."

Уверите се да је низ правилно рашчлањен. Можда недостају угласте заграде, зарези или тачке и зарези.

Добијам грешку, "Неважећи образац понављања. Погледајте документацију за подржане обрасце."

Тренутно подржавамо само овај образац: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY може да се промени да би се укључило мање дана; Међутим, FREQ и не INTERVAL може се променити. Уверите се да у узорку нема размака.

Како да добијемо информације о ИД-у календара и Унутрашњем календару ресурса?

Може 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. Креирајте прво понављајуће правило календара за дати опсег датума. На пример: Репеат Мон, Туе; #пии_ајхфххгјз; 8am-5pm ЕТ.

  2. Креирајте друго правило календара које се понавља за опсег датума укрштања, а истовремено обезбедите да се радно време не укршта са претходним данима или временом. На пример: Репеат Wед, Тху; #пии_ајхфххгаз; 8am-5pm ЕТ или Репеат Мон, Туе; #пии_ајхфххгбз; 5pm-8pm ЕТ.

Резултат : Оба правила календара остају и коегзистирају једна поред друге.

Пример 2 - Понављајући радни сати: Неки преклапајући датуми, са свим преклопним данима и другим правилом почиње/завршава се пре или после првог правила

Техничар добија нови радни распоред, који замењује неке недеље њиховог старог распореда. По уговору увек раде исте дане сваке недеље.

  1. Креирајте прво понављајуће правило календара за дати опсег датума. На пример: Репеат Мон, Туе; #пии_ајхфххгцз; 8am-5pm ЕТ.

  2. Креирајте друго понављајуће правило календара за преклопни опсег датума, где сви дани имају преклапајуће радне сате. Одаберите датум почетка/завршетка за ово ново правило које је пре или после датума почетка/завршетка за правило песнице. На пример: Репеат Мон, Туе; #пии_ајхфххгдз; 1pm-8pm ЕТ.

Резултат : Прво правило се одсеца да би се прилагодило датуму почетка/завршетка другог правила. На пример: Репеат Мон, Туе; #пии_ајхфххгез; 8am-5pm ЕТ АНД Репеат Мон, Туе; #пии_ајхфххгфз; 1pm-8pm ЕТ.

Пример 3 - Понављајући радни сати: Сви преклопни датуми, са неким преклопним данима/временом

Техничар је радник по уговору на фиксни 2-месечни период. Они су се договорили да преузму додатне радове већ неколико дана. Они желе да пребаце радно време уторком на раније/касније време.

  1. Креирајте нека понављајућа правила календара за дати опсег датума. На пример: Репеат Мон, Туе; #пии_ајхфххггз; 8am-12pm ЕТ АНД Репеат Туе, Wед; #пии_ајхфххгхз, 1pm-5pm ЕТ.

  2. Креирајте ново правило календара које се понавља за исти опсег датума. Одаберите дане/време који се делимично преклапају са оригиналним правилима. На пример: Репеат Туе, Тхурс ; #пии_ајхфххгиз; 10am-2pm ЕТ.

Резултат : Ново правило замењује старо тамо где постоје преклапања, а остале оставља непромењеним. На пример: Репеат Мон; #пии_ајхфххгајз; 8am-12pm ЕТ АНД Репеат Wед; #пии_ајхфххгааз; 1pm-5pm ЕТ АНД Репеат Туе, Тхурс ; #пии_ајхфххгабз; 10am-2pm ЕТ.

Пример 4 - Понављајући радни сати: Нови датуми правила садржани у старом правилу, неки преклопни дани/време

Техничар ради 8 ујутру-5 увече, Мон-Фри сваке недеље. Само на две недеље, они ће водити специјални пројекат за хитне случајеве сваки Мон-Wед са различитим радним временом 6 ујутру-6 увече.

  1. Креирајте прво понављајуће правило календара за дати опсег датума. На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1-Но Енд Дате; 8am-5pm ЕТ.

  2. Креирајте друго понављајуће правило календара које се налази у горенаведеном опсегу датума, одаберите радне сате који се преклапају у неким данима. На пример: Репеат Мон, Туе,Wед; #пии_ајхфххгацз; 6am-6pm ЕТ.

Резултат : Календар би до краја ове вежбе требало да има четири правила која се понављају:

  • скраћити прво правило до датума почетка другог правила
  • друго правило календара
  • креирање новог правила сличног првом правилу, али са датумима другог правила за дане који се не преклапају
  • скратити прво правило за почетак од датума завршетка другог правила, без датума завршетка

На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1–4.30; 8am-5pm ЕТ АНД Репеат Мон,Туе,Wед; #пии_ајхфххгадз; 6am-6pm ЕТ АНД Репеат Тху,Фри, #пии_ајхфххгаез; 8am-5pm ЕТ АНД Репеат Мон,Туе,Wед,Тху,Фри; 5.15–Но Енд Дате; 8am-5pm ЕТ

Пример 5 - Радно време које се не понавља (појављивање, правило ранга 1)

Техничар има низ дана кохезије тима, који имају предност у односу на све остале случајеве радног сата за данас.

  1. Креирајте понављајуће правило календара за дати опсег датума. На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1-Но Енд Дате; 8am-5pm ЕТ.

  2. Креирајте правило календара које се не понавља, а које се налази у горенаведењем опсегу датума. Одаберите радно време које се преклапа у неким данима. На пример: Не понављам; 6.21; 7am-1pm ЕТ.

Резултат : Календар би до краја вежбе требало да има 1 правило које се не понавља (појављивање). Правило које се не понавља замењује догађај који се понавља преклапа цео дан. На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1-Но Енд Дате еxцепт 6.21; нон-репеат; 6.21; 7am-1pm ЕТ.

V1 правила која се преклапају

  • Правила за ранг 1 имају већи приоритет од правила за ранг 0. Дакле, ако су истог дана постојала два правила (по једно од сваког ранга). Свакодневно појављивање или појављивање временског распореда преузима приоритет у односу на седмично понављање.
  • Ако постоје два правила истог ранга, правило које је недавно креирано/измењено биће оно које се узима у обзир за календар ресурса.
  • Имајте на уму да су целодневни догађаји ранга 1, па бисте могли размислити о томе да га промените у недељно понављање како бисте могли да додате радно време и да их поштујете.
  • Када постоји радно време, а креирано је појављивање слободног времена које се преклапа, правила се деле на начин који обезбеђује поштовање слободног времена, а преостало радно време остаје такво какво је. На пример, ако постоји радно време од 8:00 до 17:00 21. септембра, а појављивање слободног времена се додаје од 15:00 до 19:00 21. септембра, ово би се решило као радно време од 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) Coordinated Universal Time-11
7 (GMT-10:00) Алеутска острва
8 (GMT-09:30) Острва Маркиз
9 (GMT-09:00) Coordinated Universal Time-09 (Координисано универзално време-09)
1.0. (GMT-07:00) Планинско време (САД и Канада)
11. (GMT-08:00) Coordinated Universal Time-08 (Координисано универзално време-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) Coordinated Universal Time-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) UTC време
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) Coordinated Universal Time+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) Јукон