แก้ไขปฏิทินจำนวนชั่วโมงทำงานโดยใช้ 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 เหล่านี้รองรับเฉพาะเหตุการณ์ชนิดนี้ ซึ่งเริ่มต้นและสิ้นสุดภายในวันเดียวกัน อีกตัวอย่างหนึ่ง ให้พิจารณาทรัพยากรที่ทำงานตั้งแต่วันที่ 26 พฤษภาคม 2021 เวลา 20:00 น. 10:00 น. ของวันที่ 27 พฤษภาคม 2021 คุณไม่สามารถสร้างเหตุการณ์นี้ได้โดยใช้การเรียกใช้เพียงครั้งเดียวของ API 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 เหล่านี้ คุณจะไม่สามารถทำสิ่งต่อไปนี้ได้
- สร้าง หรือแก้ไขการเกิดขึ้นประจำของเวลาการลาหยุด
ระยะเวลาที่ปิดดำเนินการ
คุณสามารถ สร้างเอนทิตีระยะเวลาที่ปิดดำเนินการ ที่กำหนดเวลาปิดดำเนินการ ใช้ API msdyn_SaveCalendar
คุณสามารถตั้งค่าทุกเอนทิตีให้สังเกตหรือละเว้นระยะเวลาที่ปิดดำเนินการโดยใช้คีย์ ObserveClosure เพิ่มเติม เมื่อตั้งค่าให้สังเกตการปิดเหล่านี้ เอนทิตีจะไม่พร้อมใช้งาน
API บันทึกปฏิทิน
การป้อนข้อมูล
คำขอมีแอตทริบิวต์เดียวเท่านั้น CalendarEventInfo ซึ่งเป็นชนิด สตริง ประกอบด้วยแอตทริบิวต์อื่นๆ ที่ฝังอยู่ในสตริงนี้ทั้งหมด
หมายเหตุ
ในตารางต่อไปนี้ ชนิด แสดงถึงรูปแบบที่คาดว่าจะทำคำขอได้สำเร็จ อย่างไรก็ตาม คำขอทั้งหมดจะถูกแยกวิเคราะห์เป็นสตริงเดียว
CalendarEventInfo
ชื่อ | ชนิด | ต้องมี | คำอธิบาย |
---|---|---|---|
EntityLogicalName | String | ตกลง | คีย์นี้อธิบายเอนทิตีที่เรียกใช้ API ปฏิทินของเอนทิตีนี้จะถูกสร้างขึ้นหรือแก้ไข |
CalendarId | GUID | ตกลง | คีย์นี้มีรหัสปฏิทินที่เกี่ยวข้องกับเอนทิตีที่อธิบายไว้ข้างต้น เมื่อมีการสร้างเอนทิตีเหล่านี้ เรกคอร์ดปฏิทินจะถูกสร้างขึ้นโดยอัตโนมัติด้วย API เหล่านี้แก้ไขบันทึกปฏิทินนั้นโดยเพิ่มกฎหรือแก้ไขกฎที่มีอยู่ |
RulesAndRecurrences | RulesAndRecurrences | ตกลง | คีย์นี้เป็นอาร์เรย์ และแต่ละองค์ประกอบประกอบด้วยแอตทริบิวต์หลายรายการตามที่ระบุไว้ในตารางในส่วนต่อไปนี้ ขนาดของอาร์เรย์ควรมีอย่างน้อยหนึ่งขนาด |
IsVaried | แบบบูลีน | ไม่ | คีย์นี้ควรตั้งค่าเป็น true สำหรับสถานการณ์การเกิดขึ้นประจำแบบกำหนดเอง |
IsEdit | แบบบูลีน | ไม่ | คีย์นี้ควรตั้งค่าเป็น true สำหรับแก้ไขกฎที่มีอยู่ |
TimeZoneCode | Integer | ไม่ | คีย์นี้ใช้ค่าจำนวนเต็มที่สอดคล้องกับเขตเวลาสำหรับกฎปฏิทิน สำหรับการแมป ไปที่ รหัสโซนเวลา ต่อมาในบทความนี้ ค่าเริ่มต้นคือเขตเวลาของผู้ใช้ |
InnerCalendarDescription | String | ไม่ | ต้องใช้คีย์นี้เฉพาะในกรณีที่กฎของปฏิทินเป็นการลาหยุด ซึ่งควรจะมีเหตุผลสำหรับการลาหยุด |
ObserveClosure | แบบบูลีน | ไม่ | คีย์นี้ใช้เฉพาะกับการเกิดขึ้นประจำ หากตั้งค่าเป็น true เอนทิตีจะสังเกตระยะเวลาที่ปิดดำเนินการ |
RecurrenceEndDate | DateTime | ไม่ | คีย์นี้ใช้เฉพาะกับการเกิดขึ้นประจำ ประกอบด้วยวันที่สิ้นสุดของการเกิดขึ้นประจำ หากการประทับเวลาคือ 08:00:00 หรือก่อนหน้า วันที่สิ้นสุดการเกิดขึ้นประจำคือหนึ่งวันก่อนวันที่ที่ระบุ หากการประทับเวลาคือ 08:00:01 น. หรือหลังจากนั้น วันที่จะเป็นไปตามที่เป็นอยู่ ค่าเริ่มต้นสำหรับการเกิดขึ้นเป็นโมฆะ ค่าเริ่มต้นสำหรับการเกิดซ้ำคือ 30 ธ.ค. 9999, 23:59:59 น., UTC |
RecurrenceSplit | แบบบูลีน | ไม่ | คีย์นี้ใช้เฉพาะกับการเกิดขึ้นประจำ ซึ่งตั้งเป็น true สำหรับการแก้ไข "เหตุการณ์นี้และต่อไปนี้" ของการเกิดขึ้นประจำ |
ResourceId | GUID | ไม่ | คีย์นี้มี SystemUserId หรือ ResourceId และจะถูกส่งต่อเมื่อเอนทิตีที่เกี่ยวข้องกับการเรียกใช้นี้เป็นทรัพยากรที่สามารถจองได้ของชนิด SystemUser นี่เป็นสิ่งจำเป็นในการตรวจสอบสิทธิ์ของ OwnCalendar บนแท็บ การจัดการบริการ |
UseV2 | ค่าสถานะ | ไม่ | การส่งแฟล็กนี้จะทำให้ปฏิทินชั่วโมงทำงานเวอร์ชัน V2 พร้อมด้วยตรรกะของกฎที่ทับซ้อนกันที่ได้รับการปรับปรุงช่วยให้เกิดซ้ำหลายครั้งได้ สำหรับข้อมูลเพิ่มเติม โปรดดู จะเกิดอะไรขึ้นถ้ามีกฎที่ทับซ้อนกัน |
RulesAndRecurrences
Name | ชนิด | ต้องมี | รายละเอียด |
---|---|---|---|
กฎ | กฎ | ตกลง | คีย์นี้เป็นอาร์เรย์ และแต่ละองค์ประกอบประกอบด้วยแอตทริบิวต์หลายรายการตามที่ระบุไว้ในตารางในส่วนต่อไปนี้ ขนาดของอาร์เรย์ควรมีอย่างน้อยหนึ่งขนาด |
RecurrencePattern | String | ไม่ | คีย์นี้ใช้เฉพาะกับการเกิดขึ้นประจำ ขณะนี้เราสนับสนุนเฉพาะรูปแบบนี้: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA
BYDAY สามารถเปลี่ยนแปลงให้รวมวันน้อยลงได้ อย่างไรก็ตาม FREQ และ INTERVAL ไม่สามารถเปลี่ยนแปลงได้ |
InnerCalendarId | GUID | ไม่ | คีย์นี้ใช้เฉพาะกับการแก้ไข หากมีการแก้ไขกฎ InnerCalendarId ต้องผ่านที่นี่ ถ้า InnerCalendarId ไม่ผ่าน API จะสร้างกฎใหม่แม้ว่าคีย์ IsEdit ถูกตั้งค่าเป็นจริง |
การดำเนินการ | Integer | ไม่ | คีย์นี้ใช้เฉพาะกับการเกิดขึ้นประจำแบบกำหนดเอง หากมีการสร้างหรือแก้ไขการเกิดขึ้นประจำแบบกำหนดเอง ควรป้อนหมายเลขใดหมายเลขหนึ่งต่อไปนี้:
|
กฎ
ชื่อ | พิมพ์ข้อความ | ต้องมี | รายละเอียด |
---|---|---|---|
StartTime | DateTime | ตกลง | คีย์นี้มีรายการวันที่และเวลาใน รูปแบบ ISO ตัวอย่างเช่น: \"2021-05-15T12:00:00.000Z\" ส่วนเวลาจะกำหนดเวลาเริ่มต้นของชั่วโมงทำงานในเขตเวลาที่ระบุก่อนหน้านี้ ส่วนวันที่กำหนดวันที่เริ่มต้นของชั่วโมงทำงาน ที่นี่ 15 พฤษภาคม 2021 เป็นวันที่เกิดเหตุการณ์หรือวันที่เริ่มต้นของการเกิดขึ้นประจำ ถ้ารูปแบบเป็น BYDAY=TU,WE แต่วันที่ 15 พฤษภาคม (วันเสาร์) เป็นวันที่ API จะสร้างหรือแก้ไขกฎสำหรับวันอังคารและวันพุธทั้งหมดโดยอัตโนมัติหลังจากวันที่ 15 พฤษภาคม นี่เป็นกรณีที่กฎไม่จำเป็นต้องมีวันที่ตรงกับวันนั้น |
EndTime | DateTime | ตกลง | ซึ่งนี่มีรายการวันที่และเวลาใน รูปแบบ ISO ตัวอย่างเช่น: \"2021-05-15T12:00:00.000Z\" ส่วนเวลาจะกำหนดเวลาสิ้นสุดของชั่วโมงทำงานในเขตเวลาที่ระบุก่อนหน้านี้ ส่วนวันที่ ต้อง มีวันที่เดียวกันกับส่วนวันที่ของ StartTime ข้อยกเว้นเพียงอย่างเดียวคือ:
|
WorkHourType | Integer | ตกลง | คีย์นี้ประกอบด้วยตัวเลขที่สอดคล้องกับหนึ่งในตัวเลือกต่อไปนี้:
|
การดำเนินการ | Integer | ไม่ | คีย์นี้กำหนดความสามารถของเอนทิตี ซึ่งต้องเป็นจำนวนเต็ม ค่าเริ่มต้นคือ 1 |
เอาท์พุท
POST API นี้สร้างหรือแก้ไขเรกคอร์ดกฎปฏิทินสำหรับเอนทิตีที่เลือก นอกจากนี้ยังให้ผลลัพธ์ต่อไปนี้
ชื่อ | ชนิด | คำอธิบาย |
---|---|---|
InnerCalendarIds | String | อาร์เรย์ของ GUID InnerCalendarIds ที่เป็นผลมาจากการดำเนินการ POST |
API ลบปฏิทิน
ข้อมูลป้อนเข้า
ชื่อ | ชนิด | ต้องมี | คำอธิบาย |
---|---|---|---|
EntityLogicalName | String | ตกลง | ฟิลด์นี้อธิบายเอนทิตีที่ต้องการลบกฎปฏิทิน |
InnerCalendarId | GUID | ตกลง | ฟิลด์นี้อธิบายรหัสของ InnerCalendarId ที่ต้องลบทิ้ง ถ้ามี InnerCalendarIds หลายตัวเชื่อมโยงกับกฎเดียว รหัสใดๆ เพียงรหัสเดียวก็เพียงพอแล้ว ข้อมูลเพิ่มเติมเกี่ยวกับปฏิทินภายในและภายนอก: เอนทิตีปฏิทิน |
CalendarId | GUID | ตกลง | ฟิลด์นี้อธิบาย CalendarId ของเอนทิตี |
IsVaried | แบบบูลีน | ไม่ | ฟิลด์นี้เป็นฟิลด์เฉพาะสำหรับการเกิดขึ้นประจำ และตั้งค่าเป็น yes ถ้ากฎการเกิดขึ้นประจำแบบกำหนดเองกำลังถูกลบ |
UseV2 | ค่าสถานะ | ไม่ | การส่งแฟล็กนี้จะทำให้ปฏิทินชั่วโมงทำงานเวอร์ชัน V2 พร้อมด้วยตรรกะของกฎที่ทับซ้อนกันที่ได้รับการปรับปรุงช่วยให้เกิดซ้ำหลายครั้งได้ สำหรับข้อมูลเพิ่มเติม โปรดดู จะเกิดอะไรขึ้นถ้ามีกฎที่ทับซ้อนกัน |
เอาท์พุท
POST API นี้ลบเรกคอร์ดกฎปฏิทินสำหรับเอนทิตีที่เลือก นอกจากนี้ยังให้ผลลัพธ์ต่อไปนี้
ชื่อ | พิมพ์ข้อความ | รายละเอียด |
---|---|---|
InnerCalendarIds | String | อาร์เรย์ของ GUID InnerCalendarIds ที่เป็นผลมาจากการดำเนินการ POST |
โหลด API ปฏิทิน
การป้อนข้อมูล
ชื่อ: msdyn_LoadCalendars
ชนิด: การดำเนินการ
คำอธิบาย: ส่งกลับปฏิทินสำหรับ LoadCalendarInput ที่กำหนด
ชื่อ: msdyn_LoadCalendars.LoadCalendarsInput
ชนิด: พารามิเตอร์
คำอธิบาย: สตริงในรูปแบบ JSON ต่อไปนี้:
{
StartDate: string,
EndDate: string,
CalendarIds: string[]
}
ชื่อ: msdyn_LoadCalendarsResponse
ชนิด: ComplexType
คำอธิบาย: ประกอบด้วยการตอบกลับจากการดำเนินการ msdyn_loadCalendars
ชื่อ: msdyn_LoadCalendarsResponse.CalendarEvents
ชนิด: คุณสมบัติ
คำอธิบาย: สตริงในรูปแบบ JSON ต่อไปนี้:
{
"calendarId": CalendarEventSlot[]
}
โดยที่ CalendarId เป็นแนวทางที่เหมาะสมซึ่งแสดงถึง Guid ของปฏิทิน และ CalendarEventSlot เป็นออบเจ็กต์ที่มีรูปแบบต่อไปนี้:
{
CalendarId: string,
InnerCalendarId: string,
Start: string,
End: string,
Effort: double
}
วิธีเรียกใช้ API
API เหล่านี้สามารถเรียกได้โดยใช้เบราว์เซอร์
- เปิดเบราว์เซอร์และองค์กรที่คุณต้องการเปลี่ยนแปลงปฏิทินเหล่านี้
- เปิดเครื่องมือสำหรับนักพัฒนา (เลือก Ctrl+Shift+I ใน Microsoft Edge เลือก F12 ใน Google Chrome)
- ในคอนโซล ให้ป้อนฟังก์ชันต่อไปนี้ หลังจากแทนที่ [ชื่อองค์กร] ด้วยรายละเอียดองค์กร (เช่น
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 เหล่านี้ได้
Bob และ Tim เป็นคนขับรถบรรทุกส่งของให้กับ Contoso Enterprises ในเมืองเบลล์วิว รัฐวอชิงตัน Debbie ผู้ส่งของพวกเขารับผิดชอบในการเปลี่ยนแปลงปฏิทินชั่วโมงทำงาน Debbie ทำการเปลี่ยนแปลงเหล่านี้โดยใช้ปุ่ม API msdyn_SaveCalendar
และ msdyn_DeleteCalendar
สร้างเหตุการณ์ชั่วโมงทำงาน
Bob มีกำหนดจะขับรถไปส่งพัสดุระหว่างเวลา 9:00 น. ถึง 17:00 น. ในวันที่ 15 พฤษภาคม 2021 Debbie ใช้ API 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\"]"
}
แก้ไขเหตุการณ์ชั่วโมงทำงาน
กำหนดการของ Bob จะเปลี่ยนเป็นเริ่มเวลา 10:00 น. ของวันที่ 15 พฤษภาคม 2021 Debbie ใช้ API 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\"]"
}
ลบเหตุการณ์ชั่วโมงทำงาน
เกิดเหตุฉุกเฉินในครอบครัว และ Bob ต้องยกเลิกงานทั้งวัน Debbie ใช้ API 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 Bob ตัดสินใจทำงานกับ 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\"]"
}
แก้ไขการเกิดขึ้นประจำรายวันของชั่วโมงทำงานด้วยความสามารถที่เพิ่มขึ้น
Bob ตัดสินใจหยุดทำงานตลอดทั้งสัปดาห์ของวันที่ 15 มิถุนายน พ.ศ. 2021 เพื่อพัก จนกว่าจะถึงตอนนั้น Bob จะทำตามตารางตลอดทั้งสัปดาห์ที่เขาตกลงไว้ก่อนหน้านี้ Debbie ทำการเปลี่ยนแปลงเหล่านี้โดยใช้ API 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 Bob จะทำงานตั้งแต่ 8.00 น. ถึง 17.00 น. ในวันพุธและวันศุกร์ และจะหยุดพักระหว่าง 12.00 น. ถึง 12.30 น. เพื่อรับประทานอาหารกลางวัน Debbie ใช้ API ของ 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\"]"
}
แก้ไขจากการเกิดขึ้นประจำรายสัปดาห์ของชั่วโมงทำงาน
จากนั้น Debbie แก้ไขข้อผิดพลาดและเปลี่ยนช่วงพักตั้งแต่เวลา 12:00 น. เป็น 12:30 น. โดยใช้ API 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\"]"
}
สร้างการเกิดขึ้นประจำแบบกำหนดเองของชั่วโมงทำงาน
Tim ทำงานให้กับ Contoso ในวันจันทร์ เวลา 8:00 น. ถึง 17:00 น. และวันพุธ เวลา 11:00 น. ถึง 15:00 น. Tim เริ่มทำงานกับ Contoso ในวันที่ 16 พฤษภาคม 2021 Debbie ใช้ API msdyn_SaveCalendar
เพื่อสร้างชั่วโมงการทำงานของ Tim
คำขอ
{
"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\"]"
}
แก้ไขการเกิดขึ้นประจำแบบกำหนดเองของชั่วโมงทำงาน
จากนั้นกำหนดการของ Tim ก็เปลี่ยนเป็นเวลาทำงานจาก วันพุธ 17:00 - 20:00 น. และวันพฤหัสบดี 10:00 - 12:00 น. วันจันทร์ถูกลบออกจากกำหนดการของ Tim Debbie ใช้ API 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 Tim จะทำงานได้เฉพาะเวลา 13:00 น. ถึง 19:00 น. Debbie ใช้ API 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\"]"
}
ลบการเกิดขึ้นประจำแบบกำหนดเองของชั่วโมงทำงาน
Tim ตัดสินใจลาออกจากบริษัทแล้วและต้องลบกำหนดการทั้งหมดของเขา Debbie ใช้ API 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\"]"
}
สร้างการลาหยุด
Tim จะลาพักร้อนกับครอบครัวเป็นเวลา 3 วัน เริ่มตั้งแต่วันที่ 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\"]"
}
สร้างชั่วโมงการทำงานตลอดทั้งวัน
Tim มีกะงาน 72 ชั่วโมง เริ่มตั้งแต่วันที่ 20 พฤษภาคม 2021 Debbie ใช้ API msdyn_SaveCalendar
เพื่อสร้างชั่วโมงการทำงานของ Tim
ส่งคำขอ
{
"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\"]"
}
คำถามที่ถามบ่อย
ฉันได้รับข้อผิดพลาด "StartTime ไม่สามารถมากกว่าหรือเท่ากับ EndTime"
ตรวจสอบให้แน่ใจว่าไม่มีการทับซ้อนกันในช่วงเวลาของกฎปฏิทินต่างๆ ตรวจสอบวันที่เพื่อให้แน่ใจว่า StartTime ไม่ช้ากว่า EndTime นอกจากนี้ ให้ตรวจสอบว่าเวลาเป็นไปตามรูปแบบ 24 ชั่วโมง
สามารถใช้ API เพื่อปรับปรุงเอนทิตี "เทมเพลตชั่วโมงทำงาน" ได้หรือไม่
ได้ คุณสามารถใช้ API นี้เพื่อสร้างและปรับปรุงเทมเพลตชั่วโมงทำงานนอกเหนือจากชั่วโมงทำงานของทรัพยากร
ฉันได้รับข้อผิดพลาด "มีข้อผิดพลาดในการยกเลิกการจัดเรียงแบบอนุกรมของวัตถุประเภท Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo แหล่งที่มาอินพุตมีรูปแบบไม่ถูกต้อง
or
คาดหวังสถานะ 'องค์ประกอบ'.. พบ 'ข้อความ' พร้อมชื่อ '' เนมสเปซ ''
ตรวจสอบให้แน่ใจว่าแยกวิเคราะห์สตริงอย่างถูกต้อง อาจมีวงเล็บเหลี่ยม จุลภาค หรืออัฒภาคหายไป
ฉันได้รับข้อผิดพลาด "รูปแบบการเกิดขึ้นประจำไม่ถูกต้อง โปรดดูคู่มือสำหรับรูปแบบที่รองรับ"
ขณะนี้เราสนับสนุนเฉพาะรูปแบบนี้: 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-4.1; 8.00-17.00 น. ET
สร้างกฎปฏิทินที่เกิดซ้ำครั้งที่สองสำหรับช่วงวันที่ที่ตัดกันในขณะที่ต้องแน่ใจว่าชั่วโมงทำงานไม่ตัดกับวันหรือเวลาก่อนหน้า ตัวอย่างเช่น: เกิดซ้ำวันพุธ, พฤหัสบดี; 1.1-4.1; 8.00-17.00 น. ET หรือ เกิดซ้ำวันจันทร์, อังคาร; 1.1-4.1; 17.00-20.00 น. ET
ผลลัพธ์: กฎของปฏิทินทั้งสองยังคงอยู่และอยู่ร่วมกัน
ตัวอย่างที่ 2 - ชั่วโมงการทำงานซ้ำ: บางวันที่ทับซ้อนกัน โดยวันที่ทับซ้อนกันทั้งหมดและกฎข้อที่สองเริ่มต้น/สิ้นสุดก่อนหรือหลังกฎข้อแรก
ช่างเทคนิคได้รับตารางการทำงานใหม่ ซึ่งจะมาแทนที่กำหนดการเดิมบางสัปดาห์ ตามสัญญา พวกเขาจะทำงานในวันเดียวกันทุกสัปดาห์
สร้างกฎปฏิทินที่เกิดซ้ำข้อแรกสำหรับช่วงวันที่ที่กำหนด ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 2.1-4.1; 8.00-17.00 น. ET
สร้างกฎปฏิทินการเกิดซ้ำครั้งที่สองสำหรับช่วงวันที่ที่ทับซ้อนกัน โดยที่ทั้งวันจะมีชั่วโมงทำงานที่ทับซ้อนกัน เลือกวันที่เริ่มต้น/สิ้นสุดสำหรับกฎใหม่นี้ที่อยู่ก่อนหรือหลังวันที่เริ่มต้น/สิ้นสุดสำหรับกฎบังคับ ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 3.1-5.1; 14.00-18.00 น. ET
ผลลัพธ์: กฎข้อแรกถูกตัดให้สั้นลงเพื่อรองรับวันที่เริ่มต้น/สิ้นสุดของกฎข้อที่สอง ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 12.1-2.28; 8.00-17.00 น. ET และ เกิดซ้ำวันจันทร์, อังคาร; 3.1-5.1; 14.00-20.00 น. ET
ตัวอย่างที่ 3 - ชั่วโมงการทำงานซ้ำ: วันที่ทับซ้อนกันทั้งหมด โดยมีวัน/เวลาที่ทับซ้อนกันบางส่วน
ช่างเทคนิคเป็นพนักงานสัญญาจ้างแบบกำหนดระยะเวลา 2 เดือน พวกเขาตกลงที่จะทำงานเพิ่มเติมในบางวัน พวกเขาต้องการเลื่อนเวลาทำงานของวันอังคารเป็นเวลาก่อนหน้า/หลัง
สร้างกฎปฏิทินการเกิดซ้ำบางส่วนสำหรับช่วงวันที่ที่กำหนด ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 2.1-4.1; 8.00-12.00 น. ET และ เกิดซ้ำวันอังคาร, พุธ; 2.1-4.1; 13.00-17.00 น. ET
สร้างกฎปฏิทินการเกิดซ้ำใหม่สำหรับช่วงวันที่เดียวกัน เลือกวัน/เวลาที่ทับซ้อนกับกฎเดิมบางส่วน ตัวอย่างเช่น: เกิดซ้ำวันอังคาร, พฤหัสบดี ; 2.1-4.1; 10.00-14.00 น. ET
ผลลัพธ์: กฎใหม่จะเขียนทับกฎเก่าที่มีการทับซ้อนกัน และปล่อยให้กฎอื่นๆ ไม่เปลี่ยนแปลง ตัวอย่างเช่น: เกิดซ้ำวันจันทร์; 2.1-4.1; 8.00-12.00 น. ET และ เกิดซ้ำวันพุธ; 2.1-4.1; 13.00-17.00 น. ET และ เกิดซ้ำวันอังคาร, พฤหัสบดี ; 2.1-4.1; 10.00-14.00 น. ET
ตัวอย่างที่ 4 - ชั่วโมงการทำงานซ้ำ: วันที่ของกฎใหม่อยู่ในกฎเก่า บางวัน/เวลาทับซ้อนกัน
ช่างเทคนิคทำงาน 8.00-17.00 น. จันทร์-ศุกร์ ทุกสัปดาห์ เพียงสองสัปดาห์ พวกเขาจะจัดการโครงการฉุกเฉินพิเศษทุกวันจันทร์-พุธ โดยมีชั่วโมงทำงานที่แตกต่างกัน 6.00-18.00 น.
สร้างกฎปฏิทินที่เกิดซ้ำข้อแรกสำหรับช่วงวันที่ที่กำหนด ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร, พุธ, พฤหัสบดี, ศุกร์; 1.1-ไม่มีวันสิ้นสุด; 8.00-17.00 น. ET
สร้างกฎปฏิทินการเกิดซ้ำครั้งที่สองซึ่งอยู่ภายในช่วงวันที่ด้านบน เลือกชั่วโมงทำงานที่ทับซ้อนกันในบางวัน ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร, พุธ; 5.1-5.14; 6.00-18.00 น. ET
ผลลัพธ์: ปฏิทินควรมีกฎการเกิดซ้ำสี่ข้อเมื่อสิ้นสุดแบบฝึกหัดนี้:
- ตัดกฎข้อแรกให้เป็นวันที่เริ่มต้นของกฎข้อที่สอง
- กฎปฏิทินข้อที่สอง
- สร้างกฎใหม่ที่คล้ายกับกฎข้อแรก แต่กำหนดให้วันที่ของกฎข้อที่สองเป็นวันที่ไม่ทับซ้อนกัน
- ตัดกฎข้อแรกให้เริ่มจากวันที่สิ้นสุดของกฎข้อที่สองโดยไม่มีวันที่สิ้นสุด
ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร, พุธ, พฤหัสบดี, ศุกร์; 1.1–4.30; 8.00-17.00 น. ET และ เกิดซ้ำวันจันทร์, อังคาร, พุธ; 5.1-5.14; 6.00-18.00 น. ET และ เกิดซ้ำวันพฤหัสบดี, ศุกร์ 5.1-5.14; 8.00-17.00 น. ET และ เกิดซ้ำวันจันทร์, อังคาร, พุธ, พฤหัสบดี, ศุกร์; 5.15–ไม่มีวันสิ้นสุด; 8.00-17.00 น. ET
ตัวอย่างที่ 5 - ชั่วโมงการทำงานที่ไม่เกิดซ้ำ (การเกิดขึ้น กฎอันดับ 1)
ช่างเทคนิคมีจำนวนวันที่ทำงานร่วมกันเป็นทีมซึ่งจะมีความสำคัญเหนืออินสแตนซ์ชั่วโมงทำงานอื่นๆ ทั้งหมดของวันนั้น
สร้างกฎปฏิทินการเกิดซ้ำสำหรับช่วงวันที่ที่กำหนด ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร, พุธ, พฤหัสบดี, ศุกร์; 1.1-ไม่มีวันสิ้นสุด; 8.00-17.00 น. ET
สร้างกฎปฏิทินการไม่เกิดซ้ำซึ่งอยู่ในช่วงวันที่ข้างต้น เลือกชั่วโมงทำงานที่ทับซ้อนกันในบางวัน ตัวอย่างเช่น: ไม่ซ้ำกัน 6.21; 7.00-13.00 น. ET
ผลลัพธ์: ปฏิทินควรมีกฎการไม่เกิดซ้ำ 1 ข้อ (เกิดขึ้น) เมื่อสิ้นสุดแบบฝึกหัด กฎการไม่เกิดซ้ำจะแทนที่เหตุการณ์ที่เกิดซ้ำที่ทับซ้อนกันตลอดทั้งวัน ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร, พุธ, พฤหัสบดี, ศุกร์; 1.1-ไม่มีวันสิ้นสุด ยกเว้น 6.21; ไม่เกิดซ้ำ; 6.21; 7.00-13.00 น. ET
กฎการทับซ้อน V1
- กฎอันดับ 1 มีลำดับความสำคัญสูงกว่ากฎอันดับ 0 ดังนั้น หากมีกฎสองข้อ (หนึ่งในแต่ละอันดับ) ในวันเดียวกัน เหตุการณ์รายวันหรือช่วงเวลาหยุดพักจะมีลำดับความสำคัญสูงกว่าการเกิดขึ้นประจำทุกสัปดาห์
- หากมีกฎสองข้อในระดับเดียวกัน กฎที่สร้าง/แก้ไขล่าสุดจะเป็นกฎที่พิจารณาสำหรับปฏิทินของทรัพยากร
- โปรดทราบว่าเหตุการณ์ที่เกิดขึ้นตลอดวันอยู่ในอันดับที่ 1 ดังนั้นคุณอาจต้องการพิจารณาเปลี่ยนเป็นการเกิดขึ้นประจำทุกสัปดาห์เพื่อที่จะสามารถเพิ่มชั่วโมงการทำงานที่เกิดขึ้นและได้รับการยอมรับ
- เมื่อมีชั่วโมงทำงานและมีการสร้างช่วงเวลาหยุดพักทับซ้อนกัน กฎจะแบ่งออกในลักษณะที่รับรองเวลาหยุดพัก และเวลาที่เหลือตามชั่วโมงทำงานจะยังคงเหมือนเดิม ตัวอย่างเช่น หากมีเวลาทำงานตั้งแต่ 8:00 น. ถึง 17:00 น. ในวันที่ 21 กันยายน และมีการเพิ่มช่วงเวลาหยุดพักตั้งแต่ 15:00 น. ถึง 19:00 น. ในวันที่ 21 กันยายน การดำเนินการนี้จะได้รับการแก้ไขเป็นเวลาทำงานตั้งแต่ 20:00 น. ถึง 15:00 น. และ หยุดเวลา 15:00 - 19:00 น. อย่างไรก็ตาม หากกฎถูกสร้างขึ้นในลำดับที่ตรงกันข้าม (สร้างช่วงเวลาหยุดพักก่อนแล้วจึงสร้างชั่วโมงทำงาน) โดยไม่คำนึงถึงช่วงเวลา ระบบจะเลือกใหม่เฉพาะชั่วโมงทำงานเท่านั้น ช่วงเวลาหยุดพักจะถูกแทนที่
รหัสโซนเวลา
Enum | เขตเวลา |
---|---|
12 | (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) ยูคอน |