Sql CRM 2011-以编程方式设置/检索工作时间

Sql CRM 2011-以编程方式设置/检索工作时间,sql,calendar,dynamics-crm,dynamics-crm-2011,Sql,Calendar,Dynamics Crm,Dynamics Crm 2011,我正在尝试检索一个资源工作时间,以执行一些我需要的逻辑。我知道CRM调度引擎在这些事情上有点笨拙,但我假设我最终能够找出工作时间是如何存储在数据库中的 因此,资源具有关联的日历,而这些日历具有关联的日历规则和内部日历等。可以查看上述日历规则的开始/结束和频率,并查询其代码,以确定资源在给定时间段内是否“工作”。然而,我还没有找到实际的工作时间,在DB的任何领域,我们应该说是9-5小时 在通过UI为资源创建新计划时,我甚至尝试了一些SQL评测,但结果没有显示任何传递到SQL的工作时间。对于有耐心的

我正在尝试检索一个资源工作时间,以执行一些我需要的逻辑。我知道CRM调度引擎在这些事情上有点笨拙,但我假设我最终能够找出工作时间是如何存储在数据库中的

因此,资源具有关联的日历,而这些日历具有关联的日历规则和内部日历等。可以查看上述日历规则的开始/结束和频率,并查询其代码,以确定资源在给定时间段内是否“工作”。然而,我还没有找到实际的工作时间,在DB的任何领域,我们应该说是9-5小时

在通过UI为资源创建新计划时,我甚至尝试了一些SQL评测,但结果没有显示任何传递到SQL的工作时间。对于有耐心的人,截取的SQL语句如下:-

EXEC Sp_executesql
  N'update [CalendarRuleBase] set [ModifiedBy]=@ModifiedBy0, [EffectiveIntervalEnd]=@EffectiveIntervalEnd0, [Description]=@Description0, [ModifiedOn]=@ModifiedOn0, [GroupDesignator]=@GroupDesignator0, [IsSelected]=@IsSelected0, [InnerCalendarId]=@InnerCalendarId0, [TimeZoneCode]=@TimeZoneCode0, [CalendarId]=@CalendarId0, [IsVaried]=@IsVaried0, [Rank]=@Rank0, [ModifiedOnBehalfBy]=NULL, [Duration]=@Duration0, [StartTime]=@StartTime0, [Pattern]=@Pattern0 where ([CalendarRuleId] = @CalendarRuleId0)',
  N'@ModifiedBy0 uniqueidentifier,@EffectiveIntervalEnd0 datetime,@Description0 ntext,@ModifiedOn0 datetime,@GroupDesignator0 ntext,@IsSelected0 bit,@InnerCalendarId0 uniqueidentifier,@TimeZoneCode0 int,@CalendarId0 uniqueidentifier,@IsVaried0 bit,@Rank0 int,@Duration0 int,@StartTime0 datetime,@Pattern0 ntext,@CalendarRuleId0 uniqueidentifier',
  @ModifiedBy0='EB04662A-5B38-E111-9889-00155D79A113',
  @EffectiveIntervalEnd0='2012-01-13 00:00:00',
  @Description0=N'Weekly Single Rule',
  @ModifiedOn0='2012-03-12 16:02:08',
  @GroupDesignator0=N'FC5769FC-4DE9-445d-8F4E-6E9869E60857',
  @IsSelected0=1,
  @InnerCalendarId0='3C806E79-7A49-4E8D-B97E-5ED26700EB14',
  @TimeZoneCode0=85,
  @CalendarId0='E48B1ABF-329F-425F-85DA-3FFCBB77F885',
  @IsVaried0=0,
  @Rank0=2,
  @Duration0=1440,
  @StartTime0='2000-01-01 00:00:00',
  @Pattern0=N'FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA',
  @CalendarRuleId0='0A00DFCF-7D0A-4EE3-91B3-DADFCC33781D'
语句中的关键部分是模式的设置:-

    @Pattern0=N'FREQ=WEEKLY;INTERVAL=1;BYDAY=SU,MO,TU,WE,TH,FR,SA'
但是,如上所述,未显示设定的工作时间

我的想法是否有误,或者CRM是否在这些工作时间做了一些有趣的事情


非常感谢您的任何想法。

如果您查看CalendarRuleBase表,您应该会看到一条记录,其中包含您在跟踪中收集的数据。您还应该看到大约在同一时间创建的另一条记录,它的CalendarId等于跟踪中数据的InnerCalendarId。在该记录中,有一个值偏移量,它表示开始时间午夜后的分钟数。还有另一个值-Duration,它似乎是班次的分钟数


我创造了8-5小时的工作时间。我的偏移量为480(480/60=8)上午8点开始时间,9小时轮班的持续时间为540(540/60=9)

谢谢@jasonlattimer我明天会调查此事,让你知道我进展如何。