AXForum  
Вернуться   AXForum > Microsoft Dynamics CRM > Dynamics CRM: Разработка
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 30.08.2018, 12:13   #1  
Дмитрий А.А. is offline
Дмитрий А.А.
Участник
Аватар для Дмитрий А.А.
 
173 / 19 (1) ++
Регистрация: 24.07.2015
Адрес: СПб
Рабочие часы в Dynamics 365
Доброго дня.
Возник следующий вопрос:
В Dyn365, как и в прошлых версиях CRM, у пользователя есть связанные "Рабочие часы".
Можно ли как-то на уровне плагинов или другими способами отлавливать изменения в этом объекте и, если да, то как правильно это делать.
Старый 31.08.2018, 08:43   #2  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Доброго времени суток. Ответ: да, можно, но не рекомендую. Расскажите, пожалуйста, о задаче. Возможно, есть более простой пусть ее решения.


Что-то мне подсказывает, что вам не рабочие часы нужны, а свободное время сотрудников.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
Старый 31.08.2018, 09:30   #3  
Дмитрий А.А. is offline
Дмитрий А.А.
Участник
Аватар для Дмитрий А.А.
 
173 / 19 (1) ++
Регистрация: 24.07.2015
Адрес: СПб
Задача следующая:
Есть круг менеджеров, которые занимаются работой на нескольких объектах. За каждой локацией закреплен отдельный менеджер, но, при необходимости, должны менять свою дислокацию и другие менеджеры по определенным правилам (условно если "ключевой" занят работой с клиентом, но на это же время записывается другой клиент, то подключаем менеджера с другой локации).
Доступность менеджеров планировалось обновлять исходя из их индивидуальных рабочих часов (у каждого они свои).
И возник один из кейсов: если у менеджера уже есть записанные клиенты (встречи в CRM), и ему, по какой-то необходимости, требуется изменить свой график (взять отгул, изменить время работы в конкретный день), то нам нужно отловить это событие (изменение его индивидуальных рабочих часов), и что-то сделать со встречами, которые уже есть на время, которое теперь становится недоступным.
Если коротко - то как-то так.
Старый 10.09.2018, 16:37   #4  
Дмитрий А.А. is offline
Дмитрий А.А.
Участник
Аватар для Дмитрий А.А.
 
173 / 19 (1) ++
Регистрация: 24.07.2015
Адрес: СПб
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
да, можно, но не рекомендую.
Подскажете, о каком способе идет речь?
Старый 10.09.2018, 18:00   #5  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Вы говорите о сценарии планирования сервиса. Тут, как и везде, первичный вопрос в том, что вы хотите: шашечки, или поехали? В вашем случае, он звучит: вы хотите спланировать рабочее время, или знать о его изменениях?


Чтобы спланировать сервис, есть 2 варианта:
  1. Классический модуль планирования сервиса. Прекрасно работает со встречами, но опирается на отдельный вид активности "действие сервиса". Этот функционал считается устаревшим и в далеком будущем будет удален
  2. Universal Resource Scheduling. Может работать на он-премис, но требует купить онлайн подписку
Оба варианта предлагают оператору (сотрудник отвечающий за планирование) интерактивные календарные представления расписаний сотрудников (ресурсов). Старый модуль имеет отдельное представление конфликтов расписания - как раз тот случай, когда вышло так, что появились две встречи в одно время, или какой-то из ресурсов больше не доступен.


Если нужно поймать изменения, тогда вам нужно работать с сущностями Calendar и CalendarRule. Я планировал написать серию постов по этой тебе, но забил так как эта область мало кому интересна. Если выберите этот пусть, я могу рассказать про это, но это корабль в бутылке. Геморрой я вам гарантирую.
__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional

Последний раз редактировалось Артем Enot Грунин; 11.09.2018 в 09:37.
За это сообщение автора поблагодарили: Дмитрий А.А. (1).
Старый 11.09.2018, 10:20   #6  
Дмитрий А.А. is offline
Дмитрий А.А.
Участник
Аватар для Дмитрий А.А.
 
173 / 19 (1) ++
Регистрация: 24.07.2015
Адрес: СПб
Цитата:
Сообщение от Артем Enot Грунин Посмотреть сообщение
Если нужно поймать изменения, тогда вам нужно работать с сущностями Calendar и CalendarRule. Я планировал написать серию постов по этой тебе, но забил так как эта область мало кому интересна. Если выберите этот пусть, я могу рассказать про это, но это корабль в бутылке. Геморрой я вам гарантирую.
Я правильно понимаю, что алгоритм работы должен быть примерно следующий:
1) так как сущностей Calendar и CalendarRule в явном виде у нас нет, то мы не можем их обработать плагином, поэтому нам в базе надо мониторить изменения в этих таблицах
2) при мониторинге мы видим, что появились какие-то новые записи, фиксирующие изменения календаря, и дергаем наш веб-сервис, в который передаем идентификатор пользователя, у которого изменился календарь и запускаем наш перерасчет по существующим встречам и другим связанным сущностям.

Если я не прав, поправьте меня пожалуйста.
Старый 11.09.2018, 11:19   #7  
Артем Enot Грунин is offline
Артем Enot Грунин
Moderator
Аватар для Артем Enot Грунин
MCBMSS
Злыдни
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,912 / 623 (28) +++++++
Регистрация: 16.08.2007
Адрес: Пермь!
Записей в блоге: 151
Все же вы решили пойти сложным путем?

Если так, вы можете отловить факт изменения календаря при помощи плагина. Вопрос в том, что дальше? Календарь устроен приблизительно следующим образом:

Нажмите на изображение для увеличения
Название: calendar.png
Просмотров: 245
Размер:	18.2 Кб
ID:	12092

Есть календарь который связан с пользователем, назовем его Root. Его отличает поле Type = 0. Далее у него есть атрибут CalendarRules типа EntityCollection. Это единственный объект, с таким полем, который я знаю. Как нетрудно догадаться, это набор "правил" который и определяет расписание.

Вот тут начинается интересное. Root календарь у пользователя один, но так как расписание может меняться, для хранения этой информации используются дочерние календари Type = -1. Поэтому все его правила CalendarRule имеют ссылку на InnerCalendar, а уже эти InnerCalendar, как раз определяют конечное расписание: или действующее в настоящий момент, или действовавшие в прошлом. Как правило, у дочернего календаря есть как минимум 2 правила: первое - это правило для рабочих дней, второе для рабочих часов.

Правило для рабочих дней хранится в формате iCalendar в строке вида FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,FR,SA. Правило для рабочих часов определятся полями Offset, Duration, TimeCode и Subcode.

Например, вы имеете рабочий день ПН-ПТ с 9 до 18. Правило дней будет: FREQ=WEEKLY;INTERVAL=1;BYDAY=MO,TU,WE,TH,FR. А правило рабочих часов будет Offset=540 (60 минут * 9 часов); Duration=480 (60 минут * 8 часов); TimeCode=0 (Avalable); SubCode=1 (Schedulable). Если есть перерыв, то это будет еще одно правило, у него тоже будет сдвиг, длинна, но другие TimeCode и SubCode, и более высокий приоритет - ExtentCode.

Не знаю, поможет ли вам это... Настоятельно рекомендую рассмотреть вариант с планированием сервиса вместо раскуривания "что поменялось".

__________________
http://fixrm.wordpress.com, снятие/наведение порчи. Быстро, дорого, гарантия.

MS Certified Dirty Magic Professional
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
powerobjects: Dynamics 365 as an Application Integration Platform Blog bot Dynamics CRM: Blogs 0 13.04.2018 02:16
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2013 Update Rollup 2 Blog bot Dynamics CRM: Blogs 0 15.04.2014 01:15
NAV Team: Validating Single Sign-on with Office 365 and Microsoft Dynamics NAV 2013 R2 Blog bot Dynamics CRM: Blogs 0 19.12.2013 15:00
crminthefield: Podcast and Overview: Microsoft Dynamics CRM 2011 Update Rollup 11 Blog bot Dynamics CRM: Blogs 0 06.10.2012 05:27
Platform updates overview - 3.70.B - NAV2009 R2 Blog bot Dynamics CRM: Blogs 0 07.02.2011 22:06
Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 08:08.
Powered by vBulletin® v3.8.5. Перевод: zCarot
Контактная информация, Реклама.