我需要使用增强的 SLA 计算记录和记录总年龄。可能吗?
Age :一条记录有一个 StartDate 字段,StartDate 的值为 2016 年 3 月 1 日,还有一个名为 EndDate 的字段,EndDate 的值为 2016 年 3 月 31 日,并且在此期间服务保持 3 天,所以 Age将是:31 - 3 = 28
总年龄:与上述示例相同,但不同之处在于我们不需要包括保留天数,因此总年龄将为:31。
谢谢,
我需要使用增强的 SLA 计算记录和记录总年龄。可能吗?
Age :一条记录有一个 StartDate 字段,StartDate 的值为 2016 年 3 月 1 日,还有一个名为 EndDate 的字段,EndDate 的值为 2016 年 3 月 31 日,并且在此期间服务保持 3 天,所以 Age将是:31 - 3 = 28
总年龄:与上述示例相同,但不同之处在于我们不需要包括保留天数,因此总年龄将为:31。
谢谢,
我在这里找到了 Aileen Gusni 的这篇有趣的博客文章
基本上她创建了一个新字段(在下面的示例中是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
在高级查找(过滤器)中使用该字段,但您当然可以将其添加到高级查找结果中。原因和以前一样:这个值实际上并没有保存在数据库中她的博客文章包含更多信息和有关其工作原理的屏幕截图。我没有尝试过这种方法,但它可能对你有用