13.03.2019, 14:57 | #1 |
Участник
|
Service Restrictions
Добрый день.
Dynamics 365. Имеется задача: настроить триггерное создание и удаление ограничений сервиса. Нашел такую ссылку, которую беру за пример, как создавать эти записи. Единственное, что отличается - все работа идет через Entity, отдельные классы не генерируем для сущностей. И столкнулся с такой проблемой: Создание происходит успешно, в базе появляются записи идентичные тем, которые были созданы руками через Рабочие Часы пользователя (имеются в виду и записи в таблицах Calendar и в CalendarRule). Но эти записи: 1)не появляются в рабочих часах пользователя 2)эти записи не учитываются в штатном планировщике "Действий Сервиса" Собственно, само создание: X++: Entity newInnerCalendar1 = new Entity(); newInnerCalendar1.LogicalName = "calendar"; newInnerCalendar1["businessunitid"] = new EntityReference("businessunit", ((EntityReference)user["businessunitid"]).Id); newInnerCalendar1["primaryuserid"] = user.Id; newInnerCalendar1["type"] = new OptionSetValue(-1); Guid innerCalendarId1 = service.Create(newInnerCalendar1); Entity innerCalendar1 = service.Retrieve("calendar", innerCalendarId1, new ColumnSet(true)); Entity restrictionRule1 = new Entity(); restrictionRule1.LogicalName = "calendarrule"; restrictionRule1["duration"] = 60; restrictionRule1["issimple"] = true; restrictionRule1["offset"] = (serviceappointment.ScheduledStart.Value.Hour - 1) * 60 + serviceappointment.ScheduledStart.Value.Minute; restrictionRule1["rank"] = 0; restrictionRule1["subcode"] = 9;//service restrictions restrictionRule1["timecode"] = 3;//unavailable-filtered restrictionRule1["timezonecode"] = -1; restrictionRule1["serviceid"] = new EntityReference("service", crmService.Id); ((EntityCollection)innerCalendar1["calendarrules"]).Entities.Add(restrictionRule1); service.Update(innerCalendar1); |
|
13.03.2019, 19:11 | #2 |
Чайный пьяница
|
Я так понимаю, что у вас онпремис. Включите SQL Profiler и сравните запросы, которые уходят в SQL, при ручном создании и через API. Можно также воспользоваться подходом от обратного - запустите профайлер на момент вычитки данных о рабочих часах пользователя и раскапывайте от этого запроса - почему то, что вы создали через API не попадает в результаты. Удачи.
__________________
Эмо разработчик, сначала пишу код, потом плачу над его несовершенством. Подписывайтесь на мой блог, twitter и YouTube канал. Пользуйтесь моим Ultimate Workflow Toolkit |
|
|
|