我的 Dynamics 365 ORG 中有几个 SLA。每个 SLA 都有不同的营业时间。
我有一个需要以编程方式获取 SLA 中营业时间的详细信息(在插件/自定义工作流中调用)。
我需要的详细信息是:
曾尝试使用retrievemultiple 和CRM Message,如QueryScheduleRequest 和ExpandCalendarRequest,但到目前为止还没有设法获得所有详细信息。
您可以手动获取营业时间(日历)详细信息,但有很多步骤。我在下面粗略地概述了它们,但我建议您创建一个快速控制台应用程序来实时调试和逐步浏览可用的属性。
首先查询所需的 SLA。如果您有 ID,请使用:
var sla = service.Retrieve("sla", ID, new ColumnSet(new string[] { "businesshoursid" });
然后获取与 SLA 关联的营业时间的 ID:
var businessHoursId = sla.GetAttributeValue<EntityReference>("businesshoursid").Id;
然后检索营业时间(日历)本身:
var calendar = service.Retrieve("calendar", businessHoursId, new ColumnSet(true));
一个日历可以有多个规则。使用以下方法检索它们:
var calendarRules = calendar.GetAttributeValue<EntityCollection>("calendarrules");
这些外部日历规则将具有您可以使用的模式
var firstRulePattern = calendarRules[0].GetAttributeValue<string>("pattern");
// FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR
但是要获得每天的工作时间,您需要内部日历。以第一条规则为例:
var innerCalendarId = calendarRules[0].GetAttributeValue<EntityReference>("innercalendarid").Id;
var innerCalendar = service.Retrieve("calendar", innerCalendarId, new ColumnSet(true);
var innnerCalendarRule = innerCalendar.GetAttributeValue<EntityCollection>("calendarrules").Entities.FirstOrDefault();
根据您的内在规则,请注意属性duration
和offset
。这些值以分钟为单位,将为您提供每天的工作时间。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句