Sửa lịch giờ làm việc bằng API

Các tổ chức thường cần tạo, sửa hoặc xóa giờ làm việc ở dạng lập trình trên lịch của các nguồn lực của họ. Lịch hiển thị giờ làm việc, thời gian vắng mặt và giờ nghỉ giải lao để xác định tính sẵn có của nguồn lực tại thời điểm lên lịch công việc. Các nguồn lực đó phải được lên lịch theo các múi giờ cụ thể, có thể tuân theo thời gian đóng cửa của doanh nghiệp hoặc không và có thể có năng lực không giống nhau. Để biết thông tin về cách xác định giờ làm việc trong ứng dụng Field Service, hãy truy cập Thêm giờ làm việc vào nguồn lực có thể đặt trước.

Ngoài ứng dụng Field Service, bạn có thể sử dụng các API sau để sửa đổi quy tắc lịch cho các loại bản ghi đã chọn:

  • API Lưu lịch (msdyn_SaveCalendar) tạo hoặc cập nhật các bản ghi lịch trên một thực thể đã chọn, dựa trên thông tin đầu vào được chuyển theo yêu cầu.
  • API Xóa lịch (msdyn_DeleteCalendar) xóa tất cả quy tắc lịch bên trong của lịch trên thực thể đã chọn, dựa trên dữ liệu đầu vào được chuyển theo yêu cầu.
  • API Lưu/Xóa Lịch V2 (msdyn_SaveCalendar/msdyn_DeleteCalendar, chuyển cờ UseV2) cho phép lặp lại nhiều giờ làm việc đồng thời bằng cách thay đổi logic cho các quy tắc chồng chéo. Để biết thêm thông tin, hãy xem Điều gì xảy ra nếu có các quy tắc chồng chéo?.

Bài viết này chứa thông tin chi tiết về đầu vào (yêu cầu) và đầu ra (phản hồi) của từng API cũng như cách sử dụng chúng cùng với các ví dụ.

Điều kiện tiên quyết

  • Phiên bản nền tảng 9.2.21055 trở lên với phiên bản Lập lịch tài nguyên chung 3.12.45.7.
  • Cách sử dụng một trong các loại bản ghi sau:
    • Nguồn lực có thể đặt trước (bookableresource)
    • Yêu cầu tài nguyên (msdyn_resourcerequirement)
    • Mẫu giờ làm việc (msdyn_workhourtemplate)
    • Dự án (msdyn_project)

Các loại sự kiện lịch

Khi tạo lịch, bạn xác định số lần loại giờ làm việc xảy ra—một lần, cả ngày, hàng tuần hoặc hàng ngày hoặc bạn có thể tạo lịch lặp lại tùy chỉnh. Để biết thêm thông tin về các sự kiện lịch này, hãy xem các ví dụ ở phần sau của bài viết này.

Lần xuất hiện

Khi một loại giờ làm việc chỉ xuất hiện một lần trong lịch của thực thể, nó được gọi là lần xuất hiện.

Ví dụ: một nguồn lực làm việc từ 5h00 đến 10h00 ngày 26 tháng 5 năm 2021. Các API này chỉ hỗ trợ loại sự kiện này: bắt đầu và kết thúc trong cùng một ngày. Ví dụ khác: một nguồn lực làm việc từ 20h ngày 26 tháng 5 năm 2021 đến 10h00 ngày 27 tháng 5 năm 2021. Bạn không thể tạo ra sự cố này chỉ bằng cách sử dụng một lệnh gọi API msdyn_SaveCalendar ; thay vào đó bạn cần thực hiện hai cuộc gọi.

Sự kiện cả ngày

Khi loại giờ làm việc diễn ra trong một hoặc nhiều ngày, bắt đầu từ nửa đêm (12:00 sáng) của ngày bắt đầu, đó là diễn ra cả ngày. Thời hạn tối đa cho một sự kiện xảy ra cả ngày là năm năm.

Ví dụ: một nguồn lực làm việc cả ngày từ ngày 26 tháng 5 năm 2021 đến hết ngày 30 tháng 5 năm 2021. Đây là một sự kiện xảy ra cả ngày và kéo dài năm ngày.

Sự kiện lặp lại hằng tuần

Khi một loại giờ làm việc diễn ra cùng lúc vào những ngày đã chọn trong mỗi tuần, thì loại đó được gọi là lặp lại hàng tuần.

Ví dụ: một nguồn lực làm việc từ 5h00 đến 10h00 các ngày thứ Hai, thứ Ba và thứ Tư hằng tuần.

Sự kiện lặp lại hằng ngày

Khi một loại giờ làm việc diễn ra vào cùng một thời điểm mỗi ngày, nó được gọi là lặp lại hàng ngày.

Ví dụ: một nguồn lực làm việc từ 5h00 đến 10h00 mỗi ngày trong tuần.

Sự kiện lặp lại tùy chỉnh

Khi loại giờ làm việc diễn ra vào những thời điểm nhất định vào những ngày nhất định trong tuần nhưng thời gian khác nhau vào những ngày khác nhau, bạn có thể tạo lặp lại tùy chỉnh.

Ví dụ: một nguồn lực làm việc từ 5h00 đến 10h00 thứ Hai hằng tuần và từ 12h00 đến 15h00 thứ Tư hằng tuần.

Các loại giờ làm việc

Các API này hỗ trợ hoạt động tạo, cập nhật và xóa cho các loại giờ làm việc sau:

Số giờ làm việc

Giờ làm việc là khoảng thời gian mà một thực thể sẵn sàng thực hiện công việc.

Với các API này, bạn có thể:

  • Tạo, sửa hoặc xóa sự kiện giờ làm việc.
  • Tạo, sửa hoặc xóa sự kiện giờ làm việc lặp lại hằng ngày.
  • Tạo, sửa hoặc xóa sự kiện giờ làm việc lặp lại hằng tuần.
  • Tạo, sửa hoặc xóa sự kiện giờ làm việc lặp lại tùy chỉnh.
  • Tạo, sửa hoặc xóa mục giờ làm việc cả ngày.
  • Tạo hoặc sửa năng lực trong giờ làm việc.
  • Sửa một sự kiện giờ làm việc trong chuỗi sự kiện lặp lại.
  • Chỉnh sửa lần xuất hiện này và lần sau tái phát.
  • Thay đổi sự kiện giờ làm việc thành sự kiện lặp lại.
  • Thay đổi múi giờ của quy tắc lịch.

Với API này, bạn không thể:

  • Xóa sự kiện giờ làm việc khỏi chuỗi sự kiện lặp lại.
  • Tạo sự kiện kéo dài 24 giờ nhưng không bắt đầu và kết thúc lúc nửa đêm (0h).
  • Tạo, sửa hoặc xóa sự kiện lặp lại cả ngày.

Giờ không làm việc

Đây là những khoảng thời gian mà thực thể không sẵn sàng làm việc vì một lý do không xác định.

Với các API này, bạn có thể:

  • Tạo hoặc chỉnh sửa giờ không làm việc cả ngày.
  • Tạo hoặc chỉnh sửa sự cố ngoài giờ làm việc.
  • Thay đổi múi giờ của quy tắc lịch.

Với các API này, bạn không thể:

  • Tạo hoặc chỉnh sửa lặp lại giờ không làm việc.

Ngắt

Đây là những khoảng thời gian trong ngày làm việc mà thực thể nghỉ giải lao và không sẵn sàng làm việc. Giờ nghỉ giải lao không thể tồn tại nếu không có giờ làm việc, chúng phải xuất hiện giữa hai mục giờ làm việc trong một ngày. Giờ nghỉ giải lao không được chồng chéo với giờ làm việc.

Với các API này, bạn có thể:

  • Tạo hoặc sửa mục giờ nghỉ giải lao trong giờ làm việc.

Với các API này, bạn không thể:

  • Chỉ xóa mục giờ nghỉ giải lao khỏi một sự kiện giờ làm việc hoặc sự kiện lặp lại.

Thời gian rảnh

Đây là những khoảng thời gian mà thực thể nghỉ ngơi và không sẵn sàng làm việc. Lý do cho thời gian vắng mặt có thể được chỉ định.

Với các API này, bạn có thể:

  • Tạo hoặc sửa thời gian vắng mặt với nhãn.
  • Thay đổi múi giờ của quy tắc lịch.

Với các API này, bạn không thể:

  • Tạo hoặc sửa sự kiện giờ vắng mặt lặp lại.

Thời gian đóng cửa

Bạn có thể tạo các thực thể đóng cửa doanh nghiệp để xác định thời gian đóng cửa doanh nghiệp. Bằng cách sử dụng API msdyn_SaveCalendar , bạn có thể đặt cho mọi thực thể quan sát hoặc bỏ qua thời gian đóng cửa kinh doanh của tổ chức bằng cách sử dụng khóa ObserveClosure tùy chọn. Khi được thiết lập để tuân thủ các lần đóng này, các thực thể sẽ không có mặt để làm việc.

API Lưu lịch

Nhập dữ liệu

Yêu cầu chỉ chứa một thuộc tính—CalendarEventInfo, là loại String . Nó có một số thuộc tính khác đều được nhúng trong chuỗi này.

Lưu ý

Trong bảng sau, Loại biểu thị định dạng dự kiến ​​sẽ thực hiện yêu cầu thành công. Tuy nhiên, toàn bộ yêu cầu được phân tích cú pháp như một chuỗi duy nhất.

CalendarEventInfo

Tên Loại Yêu cầu Mô tả
EntityLogicalName String Có Khóa này mô tả thực thể chứa mục liên quan đến API được gọi. Lịch của thực thể này sẽ được tạo hoặc được sửa.
ID Lịch GUID Có Khóa này chứa ID lịch liên quan đến thực thể được mô tả ở trên. Khi bất kỳ thực thể nào trong số này được tạo, một bản ghi lịch cũng được tạo tự động. Các API này sẽ sửa bản ghi lịch đó bằng cách thêm quy tắc hoặc sửa quy tắc hiện có.
RulesAndRecurrences RulesAndRecurrences Có Khóa này là một mảng và mỗi phần tử chứa nhiều thuộc tính được liệt kê trong bảng ở phần sau. Mảng phải có ít nhất một phần tử.
IsVaried Boolean No Khóa này phải được đặt thành true cho các trường hợp lặp lại tùy chỉnh.
IsEdit Boolean No Khóa này phải được đặt thành true để chỉnh sửa các quy tắc hiện có.
TimeZoneCode Số nguyên No Khóa này nhận một giá trị nguyên tương ứng với múi giờ cho quy tắc lịch. Đối với ánh xạ, hãy chuyển tới Mã múi giờ ở phần sau của bài viết này. Giá trị mặc định là múi giờ của người dùng.
InnerCalendarDescription String No Khóa này chỉ cần thiết nếu quy tắc lịch là dành cho thời gian vắng mặt. Nó phải có lý do vắng mặt.
ObserveClosure Boolean No Khóa này là dành riêng cho các sự kiện lặp lại. Nếu được đặt thành true, thực thể sẽ quan sát việc đóng cửa doanh nghiệp.
RecurrenceEndDate Ngày giờ No Khóa này là dành riêng cho các sự kiện lặp lại. Nó chứa ngày kết thúc đối với sự kiện lặp lại. Nếu dấu thời gian là 08:00:00 hoặc sớm hơn, thì ngày kết thúc sự kiện lặp lại là một ngày trước ngày được chỉ định. Nếu dấu thời gian là 08:00:01 trở lên, thì ngày kết thúc sẽ là chính ngày đó. Giá trị mặc định cho sự kiện là null. Giá trị mặc định cho các lần lặp lại là ngày 30 tháng 12 năm 9999, 23:59:59 giờ, UTC.
RecurrenceSplit Boolean No Khóa này là dành riêng cho các sự kiện lặp lại. Nó được đặt thành true để chỉnh sửa "Lần này và lần xuất hiện tiếp theo" của lần lặp lại.
ResourceId GUID No Khóa này chứa SystemUserId hoặc ResourceId và chỉ được chuyển khi thực thể liên kết với lệnh gọi này là một tài nguyên có thể đặt trước thuộc loại SystemUser. Điều này là cần thiết để kiểm tra các đặc quyền của OwnCalendar trên tab Quản lý dịch vụ .
Sử dụngV2 Cờ No Việc chuyển cờ này sẽ kích hoạt phiên bản V2 của lịch giờ làm việc, với logic quy tắc chồng chéo nâng cao cho phép lặp lại nhiều lần. Để biết thêm thông tin, hãy xem Điều gì xảy ra nếu có các quy tắc chồng chéo?.

RulesAndRecurrences

Tên Loại Bắt buộc Description
Quy tắc Quy tắc Có Khóa này là một mảng và mỗi phần tử chứa nhiều thuộc tính được liệt kê trong bảng ở phần sau. Mảng phải có ít nhất một phần tử.
RecurrencePattern String No Khóa này là dành riêng cho các sự kiện lặp lại. Chúng tôi hiện chỉ hỗ trợ mẫu này: FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY có thể được thay đổi để bao gồm ít ngày hơn; tuy nhiên, FREQINTERVAL không thể thay đổi.
InnerCalendarId GUID No Khóa này là dành riêng cho hoạt động sửa. Nếu một quy tắc đang được chỉnh sửa, InnerCalendarId cần được chuyển đến đây. Nếu InnerCalendarId không được chuyển, API sẽ tạo quy tắc mới, ngay cả khi khóa IsEdit được đặt thành true.
Hành động Số nguyên No Khóa này là dành riêng cho sự kiện lặp lại tùy chỉnh. Nếu sự kiện lặp lại tùy chỉnh được tạo hoặc sửa, thì bạn nên nhập một trong các số sau:
  • (1) Thêm ngày vào sự kiện lặp lại
  • (2) Xóa một ngày khỏi lần lặp lại
  • (3) Chỉ sửa ngày hoặc giờ bắt đầu hoặc kết thúc hoặc sửa năng lực
  • (4) Sửa mục không phải là các khóa được đề cập ở (3)

Quy tắc

Tên Loại Bắt buộc Mô tả
StartTime Ngày giờ Có Khóa này chứa mục nhập datetime ở định dạng ISO. Ví dụ, \"2021-05-15T12:00:00.000Z\". Phần giờ xác định thời điểm bắt đầu của giờ làm việc trong múi giờ đã chỉ định từ trước. Phần ngày xác định ngày bắt đầu của giờ làm việc. Ở đây, ngày 15 tháng 5 năm 2021 là ngày xảy ra sự kiện hoặc ngày bắt đầu của sự kiện lặp lại. Nếu mẫu là BYDAY=TU,WE nhưng ngày 15 tháng 5 (thứ Bảy) là ngày, API sẽ tự động tạo hoặc chỉnh sửa quy tắc cho tất cả các ngày thứ Ba và thứ Tư sau ngày 15 tháng 5. Đây là trường hợp quy tắc không bắt buộc phải có giá trị ngày tương ứng với thứ.
EndTime Ngày giờ Có Điều này chứa một mục nhập datetime ở định dạng ISO. Ví dụ, \"2021-05-15T12:00:00.000Z\". Phần giờ xác định thời điểm kết thúc của giờ làm việc trong múi giờ đã chỉ định từ trước. Phần ngày phải chứa cùng ngày với phần ngày của Thời gian bắt đầu. Trường hợp ngoại lệ duy nhất là:
  • Nếu đây là sự kiện xảy ra cả ngày. Trong trường hợp này, phần ngày phải phản ánh ngày kết thúc của sự kiện xảy ra cả ngày.
  • Sự kiện kết thúc vào cuối ngày, tức là 0h hôm sau. Trong trường hợp này, ngày nên được \"2021-05-16T00:00:00.000Z\". Để chỉ định ngày kết thúc lặp lại, hãy sửa đổi thuộc tính RecurrenceEndDate .
WorkHourType Số nguyên Có Khóa này chứa một số tương ứng với một trong các tùy chọn sau:
  • (0) Làm việc
  • (1) Nghỉ giải lao
  • (2) Không làm việc
  • (3) Thời gian vắng mặt
Nhân công Số nguyên No Khóa này xác định năng lực của thực thể. Nó phải là số nguyên. Giá trị mặc định là 1.

Kết quả

API POST này tạo hoặc sửa đổi các bản ghi quy tắc lịch cho thực thể đã chọn. Nó cũng cho dữ liệu đầu ra sau đây.

Tên Loại Mô tả
InnerCalendarIds String Một mảng các GUID InnerCalendarIds là kết quả của thao tác POST.

API Xóa lịch

Nhập dữ liệu

Tên Loại Bắt buộc Mô tả
EntityLogicalName String Có Trường này mô tả thực thể có các quy tắc lịch sẽ bị xóa.
InnerCalendarId GUID Có Trường này mô tả ID của InnerCalendarId cần được xóa. Nếu có nhiều InnerCalendarId được liên kết với một quy tắc duy nhất, bất kỳ một ID nào cũng đủ ở đây. Thông tin thêm về lịch bên trong và bên ngoài: Thực thể lịch
ID Lịch GUID Có Trường này mô tả CalendarId của thực thể.
IsVaried Boolean No Trường này dành riêng cho các lần lặp lại và được đặt thành yes nếu quy tắc lặp lại tùy chỉnh đang bị xóa.
Sử dụngV2 Cờ No Việc chuyển cờ này sẽ kích hoạt phiên bản V2 của lịch giờ làm việc, với logic quy tắc chồng chéo nâng cao cho phép lặp lại nhiều lần. Để biết thêm thông tin, hãy xem Điều gì xảy ra nếu có các quy tắc chồng chéo?.

Kết quả

API POST này xóa các bản ghi quy tắc lịch cho thực thể đã chọn. Ngoài ra, nó cũng cho dữ liệu đầu ra sau đây.

Tên Loại Mô tả
InnerCalendarIds String Một mảng các GUID InnerCalendarIds là kết quả của thao tác POST.

Tải API Lịch

Nhập dữ liệu

Tên: msdyn_LoadCalendars
Kiểu: Hành động
Mô tả: Trả về lịch cho Đầu vào LoadCalendarsInput.

Tên: msdyn_LoadCalendars.LoadCalendarsInput
Kiểu: Tham số
Mô tả: Chuỗi ở định dạng JSON sau:

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

Tên: msdyn_LoadCalendarsResponse
Kiểu: ComplexType
Mô tả: Chứa phản hồi từ hành động msdyn_loadCalendars.

Tên: msdyn_LoadCalendarsResponse.CalendarEvents
Kiểu: Bất động sản
Mô tả: Chuỗi ở định dạng JSON sau:

{
"calendarId": CalendarEventSlot[]
}

Trong đó calendarId là một guid thích hợp đại diện cho Guid của Lịch và CalendarEventSlot là một đối tượng có định dạng sau:

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

Cách gọi API

Các API này có thể được gọi qua trình duyệt.

  1. Mở trình duyệt và mở tổ chức có lịch mà bạn cần thay đổi.
  2. Mở Công cụ dành cho nhà phát triển (chọn Ctrl+Shift+I in Microsoft Edge, chọn F12 trong Google Chrome).
  3. Trong bảng điều khiển, hãy nhập hàm sau, sau khi thay thế [tên tổ chức] bằng chi tiết tổ chức (ví dụ: 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. Sau khi hàm này được xác định, bạn có thể gọi nó để tạo, sửa hoặc xóa lịch bằng API. Nhập lệnh gọi sau để lưu lịch:
       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
                   }]
               }]
           }"
       })

Nhập lệnh gọi sau để xóa lịch:

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

Xem phần sau để biết các ví dụ về cách thực hiện các lệnh gọi khác nhau theo nhu cầu của bạn. Thay thế lệnh action gọi hàm trong bước 3 bằng msdyn_SaveCalendar or msdyn_DeleteCalendar và thay thế data bằng lệnh gọi có liên quan CalendarEventInfo.

Ngoài ra, hãy xem ảnh chụp màn hình sau để biết lời Power Automate kêu gọi msdyn_SaveCalendar hành động: Power Automate kêu gọi hành động msdyn_SaveCalendar.

Các tình huống ví dụ cho việc sử dụng API

Ta hãy xem qua một số trường hợp mà bạn có thể sử dụng các API này.

Bob và Tim là tài xế xe tải giao hàng cho Contoso Enterprises ở Bellevue, Washington. Người điều phối của họ, Debbie, chịu trách nhiệm thay đổi lịch làm việc của họ. Debbie thực hiện những thay đổi này bằng cách sử dụng msdyn_SaveCalendar API và msdyn_DeleteCalendar .

Tạo sự kiện giờ làm việc.

Bob được lên lịch lái xe giao hàng từ 9h00 đến 5h00 chiều ngày 15 tháng 5 năm 2021. Debbie sử dụng msdyn_SaveCalendar API.

Yêu cầu

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

Phản hồi

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

Sửa sự kiện giờ làm việc.

Sau đó, lịch trình của Bob thay đổi thành bắt đầu lúc 10h00 ngày 15 tháng 5 năm 2021. Debbie sử dụng msdyn_SaveCalendar API.

Yêu cầu

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

Phản hồi

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

Xóa sự kiện giờ làm việc.

Một trường hợp khẩn cấp của gia đình xảy ra, và Bob cần phải hủy bỏ cả ngày làm việc. Debbie sử dụng msdyn_DeleteCalendar API.

Yêu cầu

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

Phản hồi

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

Tạo sự kiện giờ làm việc lặp lại hằng ngày

Bắt đầu từ ngày 20 tháng 5 năm 2021, Bob quyết định làm việc với Contoso cả tuần từ 8:00 sáng đến 5:00 chiều và sẽ ngừng làm việc ở đó vào ngày 15 tháng 7 năm 2021.

Yêu cầu

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

Phản hồi

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

Sửa sự kiện giờ làm việc lặp lại hằng ngày với năng lực tăng lên

Bob quyết định ngừng làm việc cả tuần của Tháng Sáu 15, 2021 để nghỉ ngơi. Cho đến lúc đó, Bob sẽ tiếp tục lịch trình cả tuần như đã thỏa thuận trước đó. Debbie thực hiện những thay đổi này bằng cách sử dụng msdyn_SaveCalendar API.

Yêu cầu

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

Phản hồi

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

Tạo sự kiện giờ làm việc lặp lại hằng tuần

Bắt đầu từ ngày 16 tháng 6 năm 2021, Bob sẽ làm việc từ 8:00 sáng đến 5:00 chiều vào thứ Tư và thứ Sáu, và sẽ nghỉ từ 12:00 trưa đến 12:30 trưa để ăn trưa. Debbie sử dụng msdyn_SaveCalendar API, nhưng mắc lỗi và lên lịch nghỉ từ 12:00 trưa đến 1:00 chiều.

Yêu cầu

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

Phản hồi

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

Sửa thời gian nghỉ giải lao trong một sự kiện giờ làm việc lặp lại hằng tuần

Debbie sau đó sửa lỗi và thay đổi thời gian nghỉ xảy ra từ 12:00 PM đến 12:30 PM bằng cách sử dụng msdyn_SaveCalendar API.

Yêu cầu

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

Phản hồi

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

Tạo sự kiện giờ làm việc lặp lại tùy chỉnh

Tim làm việc cho Contoso vào thứ Hai từ 8:00 sáng đến 5:00 chiều và thứ Tư từ 11:00 sáng đến 3:00 chiều. Tim bắt đầu làm việc cho Contoso vào ngày 16 tháng 5 năm 2021. Debbie sử dụng msdyn_SaveCalendar API để tạo giờ làm việc của Tim.

Yêu cầu

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

Phản hồi

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

Sửa sự kiện giờ làm việc lặp lại tùy chỉnh

Lịch trình của Tim sau đó thay đổi thành giờ làm việc từ Thứ Tư 5:00 PM đến 8:00 PM và Thứ Năm 10:00 AM đến 12:00 PM. Thứ Hai bị xóa khỏi lịch trình của Tim. Debbie sử dụng msdyn_SaveCalendar API để đạt được điều này.

Yêu cầu

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

Phản hồi

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

Sửa một sự kiện giờ làm việc trong chuỗi sự kiện lặp lại

Ngày 26 tháng 5 năm 2021, Tim chỉ có thể làm việc từ 13h00 đến 19h00. Debbie sử dụng API ở msdyn_SaveCalendar đây.

Yêu cầu

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

Phản hồi

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

Xóa sự kiện giờ làm việc lặp lại tùy chỉnh

Tim đã quyết định rời công ty và phải xóa toàn bộ lịch trình của họ. Debbie sử dụng API ở msdyn_DeleteCalendar đây.

Yêu cầu

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

Phản hồi

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

Tạo thời gian vắng mặt

Tim sẽ xin nghỉ ba ngày để đi chơi cùng gia đình từ ngày 9 tháng 6 năm 2021.

Yêu cầu

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

Phản hồi

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

Tạo giờ làm việc cả ngày

Tim có một ca làm việc kéo dài 72 giờ từ ngày 20 tháng 5 năm 2021. Debbie sử dụng msdyn_SaveCalendar API để tạo giờ làm việc của Tim.

Yêu cầu

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

Phản hồi

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

Câu hỏi thường gặp về

Tôi gặp lỗi, "StartTime can't be greater or equal to EndTime."

Bảo đảm không có sự chồng chéo giữa các khung thời gian của các quy tắc lịch khác nhau. Kiểm tra ngày để đảm bảo StartTime không muộn hơn EndTime. Ngoài ra, hãy xác minh rằng định dạng thời gian là dạng 24 giờ.

Có thể sử dụng API để cập nhật thực thể "Mẫu giờ làm việc" không?

Có, bạn có thể sử dụng API này để tạo và cập nhật các mẫu giờ làm việc bên cạnh giờ làm việc của nguồn lực.

Tôi gặp lỗi, "Đã xảy ra lỗi deserializing đối tượng loại Microsoft.Dynamics.UCICalendar.Plugins.SaveCalendarContract+CalendarEventInfo. Nguồn đầu vào không được định dạng đúng.
or
Trạng thái mong đợi 'Nguyên tố'.. Gặp phải 'Văn bản' với tên '', không gian tên ''."

Bảo đảm rằng chuỗi được phân tích cú pháp chính xác. Có thể thiếu dấu ngoặc, dấu phẩy hoặc dấu chấm phẩy.

Tôi gặp lỗi "Mẫu tái phát không hợp lệ. Tham khảo tài liệu để biết các mẫu được hỗ trợ."

Chúng tôi hiện chỉ hỗ trợ mô hình này: FREQ=DAILY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA. BYDAY có thể được thay đổi để bao gồm ít ngày hơn; tuy nhiên, FREQINTERVAL không thể thay đổi. Bảo đảm rằng không có khoảng trống trong mẫu.

Làm thế nào để chúng ta có được thông tin của CalendarId và InnerCalendarId của tài nguyên?

CalendarId thể được lấy từ các thuộc tính tài nguyên. Thực hiện cuộc gọi này để nhận thông tin này: [org-url]/api/data/v9.1/bookableresources([bookableresourceGUID]).

Một ví dụ về cuộc gọi trước đó sẽ là [org-url]/api/data/v9.1/bookableresources(7bb0224b-6712-ec11-94f9-000d3a6d888e).

InnerCalendarId thể được truy xuất từ các thuộc tính lịch. Thực hiện cuộc gọi này để nhận thông tin này: [org-url]/api/data/v9.1/calendars([calendar-id-from-above-call])?$expand=calendar_calendar_rules.

Một ví dụ về cuộc gọi trước đó là [org-url]/api/data/v9.1/calendars(02481736-1b6a-4d49-9ebd-a5bd041c1c99)?$expand=calendar_calendar_rules.

Điều gì xảy ra nếu có các quy tắc chồng chéo?

Có một số cấp bậc khác nhau tuân theo các quy tắc:

  • Xếp hạng 1 - xảy ra hàng ngày (làm việc / không làm việc) và thời gian nghỉ xảy ra.
  • Xếp hạng 0 - tái phát hàng tuần (làm việc / không làm việc).

Quy tắc chồng chéo V2

  • Các quy tắc Xếp hạng 1 có mức độ ưu tiên cao hơn các quy tắc Xếp hạng 0. Nếu có hai quy tắc (một trong mỗi cấp bậc) trong cùng một ngày, sự xuất hiện hàng ngày hoặc thời gian nghỉ sẽ được ưu tiên hơn lần lặp lại hàng tuần.
  • Khi có nhiều quy tắc Xếp hạng 0 trong cùng một khoảng ngày:
    • Nếu thời gian không giao nhau, cả hai sẽ vẫn còn trên lịch.
    • Nếu thời gian giao nhau, quy tắc được tạo/sửa đổi gần đây nhất là quy tắc được xem xét cho lịch của tài nguyên. Tất cả các quy tắc giao nhau khác trong khoảng ngày sẽ bị xóa. Nếu một số quy tắc xếp hạng 0 có giao điểm vào một số ngày nhưng không phải vào các ngày khác, quy tắc sẽ được ghép để giữ lại các phần không giao nhau, trong khi các phần giao nhau bị loại bỏ.

Ví dụ về hành vi lịch V2:

Ví dụ 1 - Giờ làm việc lặp lại: Ngày trùng nhau, không có ngày/giờ trùng lặp

Trong một khoảng thời gian nhất định, một kỹ thuật viên làm việc ca sáng, chiều hoặc đêm trong các ngày khác nhau.

  1. Tạo quy tắc lịch lặp lại đầu tiên cho một phạm vi ngày nhất định. Ví dụ: Lặp lại Thứ Hai, Thứ Ba; 1.1-4.1; 8 giờ sáng - 5 giờ chiều theo giờ ET.

  2. Tạo quy tắc lịch lặp lại thứ hai cho phạm vi ngày giao nhau, đồng thời đảm bảo rằng giờ làm việc không giao nhau với các ngày hoặc thời gian trước đó. Ví dụ: Lặp lại Thứ Tư, Thu; 1.1-4.1; 8 giờ sáng - 5 giờ chiều theo giờ ET hoặc Lặp lại Thứ Hai, Thứ Ba; 1.1-4.1; 5 giờ chiều - 8 giờ tối theo giờ ET.

Kết quả: Cả hai quy tắc lịch vẫn còn và cùng tồn tại song song với nhau.

Ví dụ 2 - Giờ làm việc lặp lại: Một số ngày trùng lặp, với tất cả các ngày trùng lặp và quy tắc thứ hai bắt đầu/kết thúc trước hoặc sau quy tắc đầu tiên

Một kỹ thuật viên nhận được một lịch trình làm việc mới, thay thế một số tuần trong lịch trình cũ của họ. Theo hợp đồng, họ luôn làm việc cùng một ngày mỗi tuần.

  1. Tạo quy tắc lịch lặp lại đầu tiên cho một phạm vi ngày nhất định. Ví dụ: Lặp lại Thứ Hai, Thứ Ba; 2.1-4.1; 8 giờ sáng - 5 giờ chiều theo giờ ET.

  2. Tạo quy tắc lịch lặp thứ hai cho phạm vi ngày chồng chéo, trong đó tất cả các ngày đều có giờ làm việc chồng chéo. Chọn ngày bắt đầu/kết thúc cho quy tắc mới này trước hoặc sau ngày bắt đầu/kết thúc cho quy tắc nắm tay. Ví dụ: Lặp lại Thứ Hai, Thứ Ba; 3.1-5.1; 1 giờ chiều - 8 giờ tối theo giờ ET.

Kết quả: Quy tắc đầu tiên bị cắt bớt để phù hợp với ngày bắt đầu/kết thúc của quy tắc thứ hai. Ví dụ: Lặp lại Thứ Hai, Thứ Ba; 2.1-2.28; 8 giờ sáng - 5 giờ chiều theo giờ ETLặp lại Thứ Hai, Thứ Ba; 3.1-5.1; 1 giờ chiều - 8 giờ tối theo giờ ET.

Ví dụ 3 - Giờ làm việc lặp lại: Tất cả các ngày trùng lặp, với một số ngày/giờ trùng lặp

Kỹ thuật viên là nhân viên hợp đồng trong thời gian 2 tháng cố định. Họ đã đồng ý nhận thêm công việc vào một số ngày. Họ muốn chuyển giờ làm việc thứ Ba sang thời gian sớm hơn / muộn hơn.

  1. Tạo một số quy tắc lịch lặp lại cho một phạm vi ngày nhất định. Ví dụ: Lặp lại Thứ Hai, Thứ Ba; 2.1-4.1; 8 giờ sáng - 12 giờ trưa theo giờ ETLặp lại Thứ Ba, Thứ Tư; 2.1-4.1, 1 giờ chiều - 5 giờ chiều theo giờ ET.

  2. Tạo quy tắc lịch lặp mới cho cùng một phạm vi ngày. Chọn ngày/giờ trùng lặp một phần với các quy tắc ban đầu. Ví dụ: Lặp lại Thứ Ba, Thứ Năm; 2.1-4.1; 10am-2pm ET.

Kết quả: Quy tắc mới ghi đè lên quy tắc cũ khi có sự chồng chéo và giữ nguyên các quy tắc khác. Ví dụ: Lặp lại Thứ Hai; 2.1-4.1; 8 giờ sáng - 12 giờ trưa theo giờ ETLặp lại Thứ Tư; 2.1-4.1; 1 giờ chiều - 5 giờ chiều theo giờ ETLặp lại Thứ Ba, Thứ Năm; 2.1-4.1; 10 giờ sáng - 2 giờ chiều theo giờ ET.

Ví dụ 4 - Giờ làm việc lặp lại: Ngày quy tắc mới có trong quy tắc cũ, một số ngày/giờ trùng lặp

Một kỹ thuật viên làm việc từ 8 giờ sáng đến 5 giờ chiều, Thứ Hai-Thứ Sáu hàng tuần. Chỉ trong hai tuần, họ sẽ xử lý một dự án khẩn cấp đặc biệt vào mỗi Thứ Hai-Thứ Tư với các giờ làm việc khác nhau từ 6 giờ sáng đến 6 giờ chiều.

  1. Tạo quy tắc lịch lặp lại đầu tiên cho một phạm vi ngày nhất định. Ví dụ: Lặp lại Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu; 1.1-Không có Ngày Kết thúc; 8 giờ sáng - 5 giờ chiều theo giờ ET.

  2. Tạo quy tắc lịch lặp lại thứ hai có trong phạm vi ngày ở trên, chọn giờ làm việc trùng lặp vào một số ngày. Ví dụ: Lặp lại Thứ Hai, Thứ Ba, Thứ Tư; 5.1-5.14; 6 giờ sáng - 6 giờ chiều theo giờ ET.

Kết quả: Lịch nên có bốn quy tắc lặp lại vào cuối bài tập này:

  • Cắt ngắn quy tắc đầu tiên đến ngày bắt đầu của quy tắc thứ hai
  • Quy tắc lịch thứ hai
  • Tạo một quy tắc mới tương tự như quy tắc đầu tiên nhưng với ngày của quy tắc thứ hai cho những ngày không trùng lặp
  • Cắt bớt quy tắc đầu tiên để bắt đầu từ ngày kết thúc của quy tắc thứ hai, không có ngày kết thúc

Ví dụ: Lặp lại Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu; 1.1–4.30; 8am-5pm ETLặp lại Thứ Hai, Thứ Ba, Thứ Tư; 5.1-5.14; 6am-6pm ETlặp lại Thứ Năm, Thứ Sáu, 5.1-5.14; 8am-5pm ETlặp lại Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu; 5.15–Không có ngày kết thúc; 8 giờ sáng - 5 giờ chiều theo giờ ET

Ví dụ 5 - Giờ làm việc không lặp lại (sự xuất hiện, quy tắc xếp hạng 1)

Một kỹ thuật viên có một số ngày gắn kết nhóm, được ưu tiên hơn tất cả các trường hợp giờ làm việc khác trong ngày.

  1. Tạo quy tắc lịch lặp lại cho một phạm vi ngày nhất định. Ví dụ: Lặp lại Thứ Hai, Thứ Ba, Thứ Tư, Thứ Năm, Thứ Sáu; 1.1-Không có Ngày Kết thúc; 8 giờ sáng - 5 giờ chiều theo giờ ET.

  2. Tạo quy tắc lịch không lặp lại có trong phạm vi ngày ở trên. Chọn giờ làm việc trùng nhau vào một số ngày. Ví dụ: Không lặp lại; 6.21; 7am-1pm ET.

Kết quả: Lịch nên có 1 quy tắc không lặp lại (xảy ra) vào cuối bài tập. Quy tắc không lặp lại sẽ ghi đè sự kiện lặp lại chồng chéo trong cả ngày. Ví dụ: Lặp lại Thứ Hai, Thứ Ba, Thứ Tư, Thứ Thu, Thứ Sáu; 1.1-Không có Ngày Kết thúc ngoại trừ 6.21; không lặp lại; 6.21; 7am-1pm ET.

Quy tắc chồng chéo V1

  • Các quy tắc Xếp hạng 1 có mức độ ưu tiên cao hơn các quy tắc Xếp hạng 0. Vì vậy, nếu có hai quy tắc (một trong mỗi cấp bậc) trong cùng một ngày, sự xuất hiện hàng ngày hoặc thời gian nghỉ sẽ được ưu tiên hơn lần lặp lại hàng tuần.
  • Nếu có hai quy tắc cùng thứ hạng, quy tắc được tạo/sửa đổi gần đây nhất sẽ là quy tắc được xem xét cho lịch của tài nguyên.
  • Hãy nhớ rằng sự kiện cả ngày là Hạng 1, vì vậy bạn có thể muốn xem xét thay đổi nó thành lặp lại hàng tuần để có thể thêm giờ làm việc sự kiện và chúng được chú ý.
  • Khi một giờ làm việc tồn tại và sự kiện thời gian nghỉ được tạo chồng chéo lên nhau, các quy tắc sẽ phân chia theo cách đảm bảo thời gian nghỉ được chú ý và mọi thời gian còn lại dưới dạng giờ làm việc sẽ được giữ nguyên. Ví dụ: nếu có giờ làm việc từ 8 giờ sáng đến 5 giờ chiều vào ngày 21 tháng 9 và thời gian nghỉ được thêm vào từ 3 giờ chiều đến 7 giờ tối vào ngày 21 tháng 9, điều này sẽ được giải quyết là giờ làm việc từ 8 giờ tối đến 3 giờ chiều và thời gian nghỉ từ 3 giờ chiều đến 7 giờ tối. Tuy nhiên, nếu các quy tắc được tạo theo thứ tự ngược lại (thời gian nghỉ được tạo trước và sau đó giờ làm việc được tạo) bất kể khoảng thời gian, chỉ giờ làm việc sẽ được chọn lại. Thời gian nghỉ sẽ bị ghi đè.

Mã múi giờ

Enum Múi giờ
0 (GMT-12:00) Đường đổi ngày quốc tế miền Tây
1 (GMT+13:00) Samoa
2 (GMT-10:00) Hawaii
3 (GMT-09:00) Alaska
Tệp 4 (GMT-08:00) Giờ Thái Bình Dương (Hoa Kỳ và Canada)
5 (GMT-08:00) Baja California
6 (GMT-11:00) Giờ Phối hợp Quốc tế-11
7 (GMT-10:00) Quần đảo Aleutian
8 (GMT-09:30) Quần đảo Marquesas
9 (GMT-09:00) Giờ Phối hợp Quốc tế-09
10 (GMT-07:00) Giờ miền núi (Hoa Kỳ và Canada)
11 (GMT-08:00) Giờ Phối hợp Quốc tế-08
12 (GMT-07:00) Chihuahua, La Paz, Mazatlan
15 (GMT-07:00) Arizona
20 (GMT-06:00) Giờ miền Trung (Hoa Kỳ và Canada)
25 (GMT-06:00) Saskatchewan
29 (GMT-06:00) Guadalajara, Mexico City, Monterrey
33 (GMT-06:00) Trung Mỹ
34 (GMT-06:00) Đảo Phục Sinh
35 (GMT-05:00) Giờ miền Đông (Hoa Kỳ và Canada)
40 (GMT-05:00) Indiana (Miền Tây)
43 (GMT-05:00) Haiti
44 (GMT-05:00) Havana
45 (GMT-05:00) Bogota, Lima, Quito, Rio Branco
47 (GMT-04:00) Caracas
50 (GMT-04:00) Giờ Đại Tây Dương (Canada)
51 (GMT-05:00) Turks và Caicos
55 (GMT-04:00) Georgetown, La Paz, San Juan
56 (GMT-04:00) Santiago
58 (GMT-04:00) Cuiaba
59 (GMT-04:00) Asuncion
60 (GMT-03:30) Newfoundland
65 (GMT-03:00) Brasilia
69 (GMT-03:00) Buenos Aires
70 (GMT-03:00) Cayenne, Fortaleza
71 (GMT-03:00) Salvador
72 (GMT-03:00) Saint Pierre và Miquelon
73 (GMT-03:00) Greenland
74 (GMT-03:00) Montevideo
75 (GMT-02:00) Trung Đại Tây Dương
76 (GMT-02:00) Giờ Phối hợp Quốc tế-02
77 (GMT-03:00) Araguaina
80 (GMT-01:00) Azores
83 (GMT-01:00) Đảo Cabo Verde
84 (GMT+01:00) Casablanca
85 (GMT+00:00) Dublin, Edinburgh, Lisbon, London
90 (GMT+00:00) Monrovia, Reykjavik
92 (GMT) Giờ Phối hợp Quốc tế
95 (GMT+01:00) Belgrade, Bratislava, Budapest, Ljubljana, Prague
100 (GMT+01:00) Sarajevo, Skopje, Warsaw, Zagreb
105 (GMT+01:00) Brussels, Copenhagen, Madrid, Paris
110 (GMT+01:00) Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna
113 (GMT+01:00) Trung Tây Phi
115 (GMT+02:00) Chisinau
120 (GMT+02:00) Cairo
125 (GMT+02:00) Helsinki, Kyiv, Riga, Sofia, Tallinn, Vilnius
129 (GMT+02:00) Amman
130 (GMT+02:00) Athens, Bucharest
131 (GMT+02:00) Beirut
133 (GMT+02:00) Damascus
134 (GMT+03:00) Istanbul
135 (GMT+02:00) Jerusalem
140 (GMT+02:00) Harare, Pretoria
141 (GMT+02:00) Windhoek
142 (GMT+02:00) Gaza, Hebron
145 (GMT+03:00) Moscow, St. Petersburg
150 (GMT+03:00) Kuwait, Riyadh
151 (GMT+03:00) Minsk
155 (GMT+03:00) Nairobi
158 (GMT+03:00) Baghdad
159 (GMT+02:00) Kaliningrad
160 (GMT+03:30) Tehran
165 (GMT+04:00) Abu Dhabi, Muscat
169 (GMT+04:00) Baku
170 (GMT+04:00) Yerevan
172 (GMT+04:00) Port Louis
173 (GMT+04:00) Tbilisi
174 (GMT+04:00) Izhevsk, Samara
175 (GMT+04:30) Kabul
176 (GMT+04:00) Astrakhan, Ulyanovsk
180 (GMT+05:00) Ekaterinburg
184 (GMT+05:00) Islamabad, Karachi
185 (GMT+05:00) Toshkent
190 (GMT+05:30) Chennai, Kolkata, Mumbai, New Delhi
193 (GMT+05:45) Kathmandu
195 (GMT+06:00) Astana
196 (GMT+06:00) Dhaka
197 (GMT+06:00) Omsk
200 (GMT+05:30) Sri Jayawardenepura
201 (GMT+07:00) Novosibirsk
203 (GMT+06:30) Yangon (Rangoon)
205 (GMT+07:00) Băng Cốc, Hà Nội, Jakarta
207 (GMT+07:00) Krasnoyarsk
208 (GMT+07:00) Barnaul, Gorno-Altaysk
209 (GMT+07:00) Hovd
210 (GMT+08:00) Bắc Kinh, Trùng Khánh, Hồng Kông, Tân Cương
211 (GMT+07:00) Tomsk
215 (GMT+08:00) Kuala Lumpur, Singapore
220 (GMT+08:00) Đài Bắc
225 (GMT+08:00) Perth
227 (GMT+08:00) Irkutsk
228 (GMT+08:00) Ulaanbaatar
229 (GMT+09:00) Bình Nhưỡng
230 (GMT+09:00) Seoul
231 (GMT+08:45) Eucla
235 (GMT+09:00) Osaka, Sapporo, Tokyo
240 (GMT+09:00) Yakutsk
241 (GMT+09:00) Chita
245 (GMT+09:30) Darwin
250 (GMT+09:30) Adelaide
255 (GMT+10:00) Canberra, Melbourne, Sydney
260 (GMT+10:00) Brisbane
265 (GMT+10:00) Hobart
270 (GMT+10:00) Vladivostok
274 (GMT+10:30) Đảo Lord Howe
275 (GMT+10:00) Guam, Port Moresby
276 (GMT+11:00) Đảo Bougainville
277 (GMT+11:00) Đảo Norfolk
278 (GMT+11:00) Sakhalin
279 (GMT+11:00) Chokurdakh
280 (GMT+11:00) Đảo Solomon, New Caledonia
281 (GMT+11:00) Magadan
284 (GMT+12:00) Giờ Phối hợp Quốc tế+12
285 (GMT+12:00) Fiji
290 (GMT+12:00) Auckland, Wellington
295 (GMT+12:00) Anadyr, Petropavlovsk-Kamchatsky
299 (GMT+12:45) Quần đảo Chatham
300 (GMT+13:00) Nuku'alofa
301 (GMT-05:00) Chetumal
302 (UTC+02:00) Khartoum
303 (GMT-03:00) Punta Arenas
304 (GMT+04:00) Volgograd
305 (GMT-07:00) Yukon