1

我需要使用增强的 SLA 计算记录和记录总年龄。可能吗?

Age :一条记录​​有一个 StartDate 字段,StartDate 的值为 2016 年 3 月 1 日,还有一个名为 EndDate 的字段,EndDate 的值为 2016 年 3 月 31 日,并且在此期间服务保持 3 天,所以 Age将是:31 - 3 = 28

总年龄:与上述示例相同,但不同之处在于我们不需要包括保留天数,因此总年龄将为:31。

谢谢,

4

1 回答 1

0

我在这里找到了 Aileen Gusni 的这篇有趣的博客文章

使用 RetrieveMultiple 插件 C# 在 CRM 视图中截取列/字段值

基本上她创建了一个新字段(在下面的示例中是pa_age),但她没有将其添加到表单或任何内容中

相反,她在插件中捕获Retrieve和消息并根据需要计算该字段。RetrieveMultiple

我在下面粘贴了她的代码

请注意 ,这不是我的代码,它是由 Aileen 编写的

public void Execute(IServiceProvider serviceProvider)
{
   #region must to have

   IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

   IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));

   // Create service with context of current user
   IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

   //create tracing service
   ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

   #endregion

   //this is to modify the Age column

   if (context.OutputParameters.Contains("BusinessEntityCollection"))
   {
       var retrievedResult = (EntityCollection)context.OutputParameters["BusinessEntityCollection"];
       foreach (Entity entity in retrievedResult.Entities)
       {                 
           if (entity.Contains("birthdate"))
           {
               var birthday = entity.GetAttributeValue<DateTime>("birthdate");
               int age = CalculateAgeYear(birthday);
               //modify the Age field
               entity.Attributes["pa_age"] = age;
            }
       }
   }
}

这种方法有几点需要考虑:

  • pa_age字段的值永远不会被设置。它仅添加到实体中,以便它可以包含在视图中
  • 这意味着该pa_age字段不能包含在表单或报告中,因为它始终为
  • 您不能pa_age在高级查找(过滤器)中使用该字段,但您当然可以将其添加到高级查找结果中。原因和以前一样:这个值实际上并没有保存在数据库中

她的博客文章包含更多信息和有关其工作原理的屏幕截图。我没有尝试过这种方法,但它可能对你有用

于 2016-06-03T01:08:40.593 回答