我需要使用增强型SLA计算记录并记录总年龄。有可能吗?
年龄:记录有一个StartDate字段,StartDate的值是2016年3月1日,还有另一个名为EndDate的字段,EndDate的值是2016年3月31日,服务在此期间保持3天,所以年龄将是:31 - 3 = 28
总年龄:与上述示例相同,但不同之处在于我们不需要包含暂停日期,因此总年龄将为:31。
谢谢,
答案 0 :(得分:0)
我在这里找到了Aileen Gusni的这篇有趣的博客文章
Intercept Column/Field Value in CRM View using RetrieveMultiple Plugin C#
基本上她创建了一个新字段(在下面的示例中为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
字段不能包含在表单或报表中,因为它始终为 null pa_age
字段,但当然可以将其添加到高级查找结果中。其原因与以前相同:该值实际上并未保存在数据库中她的博客文章提供了更多关于它如何运作的信息和截图。我没有尝试过这种方法,但它可能对你有用