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

时间:2012-03-12 16:18:26

标签: sql calendar dynamics-crm dynamics-crm-2011

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

因此,资源具有关联的日历,并且这些日历具有关联的日历规则和内部日历等。可以查看上述日历规则的开始/结束和频率,并查询其代码以确定资源是否“正常工作” '在一定时期内。但是,我无法找到实际的工作时间,我们在数据库的任何一个字段中都要说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在这些工作时间内做了一些有趣的事情?

非常感谢任何想法,谢谢。

1 个答案:

答案 0 :(得分:1)

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

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