แชร์ผ่าน


แก้ไขปฏิทินจำนวนชั่วโมงทำงานโดยใช้ 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 ไม่ คีย์นี้ใช้เฉพาะกับการเกิดขึ้นประจำแบบกำหนดเอง หากมีการสร้างหรือแก้ไขการเกิดขึ้นประจำแบบกำหนดเอง ควรป้อนหมายเลขใดหมายเลขหนึ่งต่อไปนี้:
  • (1) เพิ่มวันที่การเกิดขึ้นประจำ
  • (2) การลบวันออกจากการเกิดขึ้นประจำ
  • (3) แก้ไขเฉพาะวันที่หรือเวลาเริ่มต้นหรือสิ้นสุด หรือแก้ไขความสามารถรองรับ
  • (4) แก้ไขอย่างอื่นนอกจากคีย์ที่กล่าวถึงใน (3)

กฎ

ชื่อ พิมพ์ข้อความ ต้องมี รายละเอียด
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 ข้อยกเว้นเพียงอย่างเดียวคือ:
  • หากเป็นการเกิดขึ้นตลอดทั้งวัน ในกรณีนี้ ส่วนวันที่ควรสะท้อนถึงวันที่สิ้นสุดของการเกิดขึ้นตลอดทั้งวัน
  • เหตุการณ์สิ้นสุดเมื่อสิ้นสุดวัน นั่นคือ 00:00 น. ของวันถัดไป ในกรณีนี้ วันที่ควรเป็น \"2021-05-16T00:00:00.000Z\" หากต้องการระบุวันที่สิ้นสุดของการเกิดขึ้นประจำ ให้แก้ไขแอตทริบิวต์ RecurrenceEndDate
WorkHourType Integer ตกลง คีย์นี้ประกอบด้วยตัวเลขที่สอดคล้องกับหนึ่งในตัวเลือกต่อไปนี้:
  • (0) กำลังทำงาน
  • (1) หยุดพัก
  • (2) ไม่ทำงาน
  • (3) ลาหยุด
การดำเนินการ 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 เหล่านี้สามารถเรียกได้โดยใช้เบราว์เซอร์

  1. เปิดเบราว์เซอร์และองค์กรที่คุณต้องการเปลี่ยนแปลงปฏิทินเหล่านี้
  2. เปิดเครื่องมือสำหรับนักพัฒนา (เลือก Ctrl+Shift+I ใน Microsoft Edge เลือก F12 ใน Google Chrome)
  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_SaveCalendar หรือ msdyn_DeleteCalendar และแทนที่ data ด้วย CalendarEventInfo ที่เกี่ยวข้อง

ดูภาพหน้าจอต่อไปนี้สำหรับ Power Automate การเรียก msdyn_SaveCalendar ดำเนินการ: 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.1-4.1; 8.00-17.00 น. ET

  2. สร้างกฎปฏิทินที่เกิดซ้ำครั้งที่สองสำหรับช่วงวันที่ที่ตัดกันในขณะที่ต้องแน่ใจว่าชั่วโมงทำงานไม่ตัดกับวันหรือเวลาก่อนหน้า ตัวอย่างเช่น: เกิดซ้ำวันพุธ, พฤหัสบดี; 1.1-4.1; 8.00-17.00 น. ET หรือ เกิดซ้ำวันจันทร์, อังคาร; 1.1-4.1; 17.00-20.00 น. ET

ผลลัพธ์: กฎของปฏิทินทั้งสองยังคงอยู่และอยู่ร่วมกัน

ตัวอย่างที่ 2 - ชั่วโมงการทำงานซ้ำ: บางวันที่ทับซ้อนกัน โดยวันที่ทับซ้อนกันทั้งหมดและกฎข้อที่สองเริ่มต้น/สิ้นสุดก่อนหรือหลังกฎข้อแรก

ช่างเทคนิคได้รับตารางการทำงานใหม่ ซึ่งจะมาแทนที่กำหนดการเดิมบางสัปดาห์ ตามสัญญา พวกเขาจะทำงานในวันเดียวกันทุกสัปดาห์

  1. สร้างกฎปฏิทินที่เกิดซ้ำข้อแรกสำหรับช่วงวันที่ที่กำหนด ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 2.1-4.1; 8.00-17.00 น. ET

  2. สร้างกฎปฏิทินการเกิดซ้ำครั้งที่สองสำหรับช่วงวันที่ที่ทับซ้อนกัน โดยที่ทั้งวันจะมีชั่วโมงทำงานที่ทับซ้อนกัน เลือกวันที่เริ่มต้น/สิ้นสุดสำหรับกฎใหม่นี้ที่อยู่ก่อนหรือหลังวันที่เริ่มต้น/สิ้นสุดสำหรับกฎบังคับ ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 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 เดือน พวกเขาตกลงที่จะทำงานเพิ่มเติมในบางวัน พวกเขาต้องการเลื่อนเวลาทำงานของวันอังคารเป็นเวลาก่อนหน้า/หลัง

  1. สร้างกฎปฏิทินการเกิดซ้ำบางส่วนสำหรับช่วงวันที่ที่กำหนด ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร; 2.1-4.1; 8.00-12.00 น. ET และ เกิดซ้ำวันอังคาร, พุธ; 2.1-4.1; 13.00-17.00 น. ET

  2. สร้างกฎปฏิทินการเกิดซ้ำใหม่สำหรับช่วงวันที่เดียวกัน เลือกวัน/เวลาที่ทับซ้อนกับกฎเดิมบางส่วน ตัวอย่างเช่น: เกิดซ้ำวันอังคาร, พฤหัสบดี ; 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.1-ไม่มีวันสิ้นสุด; 8.00-17.00 น. ET

  2. สร้างกฎปฏิทินการเกิดซ้ำครั้งที่สองซึ่งอยู่ภายในช่วงวันที่ด้านบน เลือกชั่วโมงทำงานที่ทับซ้อนกันในบางวัน ตัวอย่างเช่น: เกิดซ้ำวันจันทร์, อังคาร, พุธ; 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.1-ไม่มีวันสิ้นสุด; 8.00-17.00 น. ET

  2. สร้างกฎปฏิทินการไม่เกิดซ้ำซึ่งอยู่ในช่วงวันที่ข้างต้น เลือกชั่วโมงทำงานที่ทับซ้อนกันในบางวัน ตัวอย่างเช่น: ไม่ซ้ำกัน 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) ยูคอน