Dynamics crm 在Dynamics CRM 365中计算项目的工期
在Dynamics 365中,对于每个项目,我们将显示在日期字段上创建的日期字段。此字段基本上表示项目创建的日期 然而,我们应该显示项目的持续时间 像在许多地方一样,我们在Stackoverflow上有以下功能:Dynamics crm 在Dynamics CRM 365中计算项目的工期,dynamics-crm,dynamics-crm-365,Dynamics Crm,Dynamics Crm 365,在Dynamics 365中,对于每个项目,我们将显示在日期字段上创建的日期字段。此字段基本上表示项目创建的日期 然而,我们应该显示项目的持续时间 像在许多地方一样,我们在Stackoverflow上有以下功能: n分钟前问 一天前问 一周前问 一个月前问 等等 我们想展示: n分钟前创建的 创建于n天前 创建于n周前 创建于n个月前 等等 我们如何计算Dynamics CRM 365中的项目持续时间 如果您只需要为显示目的而计算的字段,您可以执行以下操作 创建新字段 在项目实体的Po
- n分钟前问
- 一天前问
- 一周前问
- 一个月前问
- 等等
- n分钟前创建的
- 创建于n天前
- 创建于n周前
- 创建于n个月前
- 等等
如果您只需要为显示目的而计算的字段,您可以执行以下操作
protectedvoid ExecutePreValidateContactRetrieve(localpluginontext localContext)
{
if(localContext==null)
{
抛出新ArgumentNullException(“localContext”);
}
IPluginExecutionContext pluginContext=localContext.PluginExecutionContext;
if(pluginContext.OutputParameters.Contains(“BusinessEntity”))
{
实体目标=(实体)pluginContext.OutputParameters[“BusinessEntity”];
PopulateKPIs(localContext.OrganizationService,target);
}
else if(pluginText.OutputParameters.Contains(“BusinessEntityCollection”))
{
EntityCollection联系人=(EntityCollection)localContext.PluginExecutionContext.OutputParameters[“BusinessEntityCollection”];
foreach(contacts.Entities中的实体c)
PopulateKPIs(localContext.OrganizationService,c);
}
}
公共无效PopulateKPIs(IOR组织服务或服务、实体联系人)
{
DateTime createdOn;
如果(!contact.Contains(“createdon”))
createdOn=orgService.Retrieve(contact.LogicalName,contact.Id,新列集(“createdOn”)).GetAttributeValue(“createdOn”);
其他的
createdOn=contact.GetAttributeValue(“createdOn”);
TimeSpan diff=DateTime.Now-createdOn;
联系人[“mst_secondssincecreation”]=数学地板(diff.TotalSeconds.ToString();
联系人[“mst_minutessincecreation”]=数学楼层(diff.TotalMinutes.ToString();
联系[“mst_hourssincecreation”]=数学楼层(差异总小时数).ToString();
}
证据:
我想您只需要在表单上填写这个。在数据库中,您显然存储了实际创建的日期 在网站上通常是如何做到这一点的,是在JS中根据给定的日期和时间进行计算的。使用像这样的库 您在CRM中如何做到这一点完全相同。 *创建一个简单的web资源,它从其父级获取createdon并使用上面的脚本显示“timeago”。 *将createdon放在表单上(可以隐藏,无所谓)。 *将web资源放在表单上。如果希望标签看起来像表单字段,请添加标签并将其设为1行
protected void ExecutePreValidateContactRetrieve(LocalPluginContext localContext)
{
if (localContext == null)
{
throw new ArgumentNullException("localContext");
}
IPluginExecutionContext pluginContext = localContext.PluginExecutionContext;
if (pluginContext.OutputParameters.Contains("BusinessEntity"))
{
Entity target = (Entity)pluginContext.OutputParameters["BusinessEntity"];
PopulateKPIs(localContext.OrganizationService, target);
}
else if (pluginContext.OutputParameters.Contains("BusinessEntityCollection"))
{
EntityCollection contacts = (EntityCollection)localContext.PluginExecutionContext.OutputParameters["BusinessEntityCollection"];
foreach (Entity c in contacts.Entities)
PopulateKPIs(localContext.OrganizationService, c);
}
}
public void PopulateKPIs(IOrganizationService orgService, Entity contact)
{
DateTime createdOn;
if (!contact.Contains("createdon"))
createdOn = orgService.Retrieve(contact.LogicalName, contact.Id, new ColumnSet("createdon")).GetAttributeValue<DateTime>("createdon");
else
createdOn = contact.GetAttributeValue<DateTime>("createdon");
TimeSpan diff = DateTime.Now - createdOn;
contact["mst_secondssincecreation"] = Math.Floor(diff.TotalSeconds).ToString();
contact["mst_minutessincecreation"] = Math.Floor(diff.TotalMinutes).ToString();
contact["mst_hourssincecreation"] = Math.Floor(diff.TotalHours).ToString();
}