Уредите календаре радног времена помоћу 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 | Овај кључ је специфичан за прилагођена понављања. Ако се креира или уређује прилагођено понављање, треба унети један од следећих бројева:
|
Правила
Име | Тип | Потребно | Опис |
---|---|---|---|
StartTime | Датум/време | Да | Овај кључ садржи ставку датума у ИСО формату. На пример, \"2021-05-15T12:00:00.000Z\" . Временски део одређује време почетка радног времена у раније назначеној временској зони. Део датума одређује датум почетка радног времена. Овде је 15. мај 2021. датум настанка или датум почетка понављања. Ако је образац BYDAY=TU,WE био, али 15. мај (субота) је датум, АПИ ће аутоматски креирати или уређивати правила за све уторке и среду после 15. То је случај када правило не мора имати датум који одговара дану. |
EndTime | Датум/време | Да | Ово садржи ставку датума у ИСО формату. На пример, \"2021-05-15T12:00:00.000Z\" . Временски део одређује време завршетка радног времена у раније назначеној временској зони. Део датума мора да садржи исти датум као део датума почетног времена. Једини изузеци су:
|
WorkHourType | Integer | Да | Овај кључ садржи број који одговара једној од следећих опција:
|
Напор | 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-ји се могу позвати помоћу прегледача.
- Отворите прегледач и организацију у којој треба да извршите ове промене у календару.
- Отворите Девелопер Тоолс (изаберите Цтрл + Схифт + И ин Microsoft Edge, изаберите F12 у Гоогле Цхроме-у).
- У конзолу унесите следећу функцију након замене [орг-наме] детаљима о орг (на пример,
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));
}
- Након што је ова функција дефинисана, можете је позвати да креира, уређује или брише календаре помоћу 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
msdyn_DeleteCalendar
замените data
одговарајућим CalendarEventInfo
.
Погледајте и следећи снимак екрана за позив Power Automate на акцију msdyn_SaveCalendar
:
Примери сценарија за употребу API-ја
Прођимо кроз неке сценарије за које можете користити ове API-је.
Боб и Тим су возачи камиона за испоруку за Contoso Enterprises у граду Белевју, Вашингтон. Њихова отправница, Деби, одговорна је за уношење промена у њихове календаре радног времена. Деби прави ове промене користећи msdyn_SaveCalendar
msdyn_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 - Понављајући радни сати: Преклапање датума без преклопних дана/времена
За дати датум, техничар ради јутарње, поподневне или ноћне смене током различитих дана.
Креирајте прво понављајуће правило календара за дати опсег датума. На пример: Репеат Мон, Туе; #пии_ајхфххгјз; 8am-5pm ЕТ.
Креирајте друго правило календара које се понавља за опсег датума укрштања, а истовремено обезбедите да се радно време не укршта са претходним данима или временом. На пример: Репеат Wед, Тху; #пии_ајхфххгаз; 8am-5pm ЕТ или Репеат Мон, Туе; #пии_ајхфххгбз; 5pm-8pm ЕТ.
Резултат : Оба правила календара остају и коегзистирају једна поред друге.
Пример 2 - Понављајући радни сати: Неки преклапајући датуми, са свим преклопним данима и другим правилом почиње/завршава се пре или после првог правила
Техничар добија нови радни распоред, који замењује неке недеље њиховог старог распореда. По уговору увек раде исте дане сваке недеље.
Креирајте прво понављајуће правило календара за дати опсег датума. На пример: Репеат Мон, Туе; #пии_ајхфххгцз; 8am-5pm ЕТ.
Креирајте друго понављајуће правило календара за преклопни опсег датума, где сви дани имају преклапајуће радне сате. Одаберите датум почетка/завршетка за ово ново правило које је пре или после датума почетка/завршетка за правило песнице. На пример: Репеат Мон, Туе; #пии_ајхфххгдз; 1pm-8pm ЕТ.
Резултат : Прво правило се одсеца да би се прилагодило датуму почетка/завршетка другог правила. На пример: Репеат Мон, Туе; #пии_ајхфххгез; 8am-5pm ЕТ АНД Репеат Мон, Туе; #пии_ајхфххгфз; 1pm-8pm ЕТ.
Пример 3 - Понављајући радни сати: Сви преклопни датуми, са неким преклопним данима/временом
Техничар је радник по уговору на фиксни 2-месечни период. Они су се договорили да преузму додатне радове већ неколико дана. Они желе да пребаце радно време уторком на раније/касније време.
Креирајте нека понављајућа правила календара за дати опсег датума. На пример: Репеат Мон, Туе; #пии_ајхфххггз; 8am-12pm ЕТ АНД Репеат Туе, Wед; #пии_ајхфххгхз, 1pm-5pm ЕТ.
Креирајте ново правило календара које се понавља за исти опсег датума. Одаберите дане/време који се делимично преклапају са оригиналним правилима. На пример: Репеат Туе, Тхурс ; #пии_ајхфххгиз; 10am-2pm ЕТ.
Резултат : Ново правило замењује старо тамо где постоје преклапања, а остале оставља непромењеним. На пример: Репеат Мон; #пии_ајхфххгајз; 8am-12pm ЕТ АНД Репеат Wед; #пии_ајхфххгааз; 1pm-5pm ЕТ АНД Репеат Туе, Тхурс ; #пии_ајхфххгабз; 10am-2pm ЕТ.
Пример 4 - Понављајући радни сати: Нови датуми правила садржани у старом правилу, неки преклопни дани/време
Техничар ради 8 ујутру-5 увече, Мон-Фри сваке недеље. Само на две недеље, они ће водити специјални пројекат за хитне случајеве сваки Мон-Wед са различитим радним временом 6 ујутру-6 увече.
Креирајте прво понављајуће правило календара за дати опсег датума. На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1-Но Енд Дате; 8am-5pm ЕТ.
Креирајте друго понављајуће правило календара које се налази у горенаведеном опсегу датума, одаберите радне сате који се преклапају у неким данима. На пример: Репеат Мон, Туе,Wед; #пии_ајхфххгацз; 6am-6pm ЕТ.
Резултат : Календар би до краја ове вежбе требало да има четири правила која се понављају:
- скраћити прво правило до датума почетка другог правила
- друго правило календара
- креирање новог правила сличног првом правилу, али са датумима другог правила за дане који се не преклапају
- скратити прво правило за почетак од датума завршетка другог правила, без датума завршетка
На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1–4.30; 8am-5pm ЕТ АНД Репеат Мон,Туе,Wед; #пии_ајхфххгадз; 6am-6pm ЕТ АНД Репеат Тху,Фри, #пии_ајхфххгаез; 8am-5pm ЕТ АНД Репеат Мон,Туе,Wед,Тху,Фри; 5.15–Но Енд Дате; 8am-5pm ЕТ
Пример 5 - Радно време које се не понавља (појављивање, правило ранга 1)
Техничар има низ дана кохезије тима, који имају предност у односу на све остале случајеве радног сата за данас.
Креирајте понављајуће правило календара за дати опсег датума. На пример: Репеат Мон,Туе,Wед,Тху,Фри; 1.1-Но Енд Дате; 8am-5pm ЕТ.
Креирајте правило календара које се не понавља, а које се налази у горенаведењем опсегу датума. Одаберите радно време које се преклапа у неким данима. На пример: Не понављам; 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) Јукон |