CRM 2011 - установить / получить рабочее время программно - PullRequest
2 голосов
/ 12 марта 2012

Я пытаюсь восстановить рабочие часы ресурсов для выполнения некоторой логики, которая мне нужна.Я понимаю, что механизм планирования CRM немного неуклюж в таких вещах, но я предположил, что смогу выяснить, как в итоге рабочее время хранилось в БД ...

Итак, ресурс связанкалендари и эти календари имеют связанные правила календаря и внутренние календари и т. д. Можно посмотреть начало / конец и частоту вышеупомянутых правил календаря и запросить их коды, чтобы выяснить, «работает» ли ресурс в течение определенного периода.Тем не менее, я не смог найти фактическое рабочее время, скажем, 9-5 в любом поле БД.

Я даже пробовал некоторые профилирования 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 Ответ

1 голос
/ 24 марта 2012

Если вы посмотрите в таблицу CalendarRuleBase, вы должны увидеть запись с данными, собранными в вашей трассировке. Вы также должны увидеть другую запись, созданную примерно в то же время, и у нее будет CalendarId, равный InnerCalendarId данных из трассировки. В этой записи есть значение - Смещение, которое, по-видимому, представляет количество минут после полуночи для времени начала. Есть еще одно значение - Продолжительность, которая представляется числом минут смены.

Я создал рабочие часы с 8-5. Мое смещение было 480 (480/60 = 8) 8 часов утра, а продолжительность была 540 (540/60 = 9) для 9-часовой смены.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...