22.05.2015, 00:28 | #1 |
Участник
|
Incident Resolution In CRM Online 2013
Коллеги, добрый вечер!
Давно не писал под СРМ, хотелось бы узнать какое решение выбрать. Пытаемся внедрить ITIL, используем базовую сущность - Обращение (Incident). Добавил три кастомных поля: Факт. реакция, Дата Завершения и Затраченное время. Так вот, js заполняю поле Факт. реакция, а дату Завершения и Затраченное время устанавливаю в процессе закрытия обращения плагином
X++: using System; using System.Collections.Generic; using System.Linq; using System.Text; using Microsoft.Xrm.Sdk; using Microsoft.Crm.Sdk.Messages; using Microsoft.Xrm.Sdk.Query; using System.ServiceModel.Description; using System.ServiceModel; using System.Globalization; namespace AmicaPackage.SetCaseDurationPlugin { public class SetFactDuration : IPlugin { //Resolved public readonly int problemResolved = 5; public readonly int infoGranted = 1000; public void Execute(IServiceProvider ServiceProvider) { IPluginExecutionContext Context = (IPluginExecutionContext)ServiceProvider.GetService(typeof(IPluginExecutionContext)); IOrganizationServiceFactory ServiceFactory = (IOrganizationServiceFactory)ServiceProvider.GetService(typeof(IOrganizationServiceFactory)); IOrganizationService Service = ServiceFactory.CreateOrganizationService(Context.UserId); ITracingService tracingService = (ITracingService)ServiceProvider.GetService(typeof(ITracingService)); if (Context.PostEntityImages.Contains("PostImage") && Context.PostEntityImages["PostImage"] is Entity) { if (Context.Depth > 1) return; Entity incident = (Entity)Context.PostEntityImages["PostImage"]; var startDate = incident.GetAttributeValue<DateTime>("new_factreaction"); var dueDate = DateTime.Now; var statusCode = ((OptionSetValue)incident["statuscode"]).Value; if (statusCode == problemResolved || statusCode == infoGranted) { if (startDate != null) { var minutes = Math.Abs(Math.Round(((startDate - dueDate).TotalMinutes), 2)); incident.Attributes.Add("new_facttime", dueDate); incident.Attributes.Add("new_duedate", dueDate); incident.Attributes.Add("new_timediff", minutes); } } Service.Update(incident); } } } } Как правильно апдейтить поля после завершения кейса? Последний раз редактировалось GetLucky; 22.05.2015 в 00:42. |
|
|
|