在我们的Dynamic365中,对于每个项目,我们将显示在 date字段上创建的。此字段实质上表示创建项目的日期。

然而,我们应该展示项目的持续时间。
与许多地方一样,我们在Stackoverflow上也有这样的内容:
我们想要展示:
如何计算动态CRM 365中的项目工期?
发布于 2016-11-09 11:57:19
如果您只需要为显示目的计算字段,则可以执行以下操作
我的代码是在CRM中显示联系人记录时拦截它们。这意味着在网格、表单、仪表板等中,它将在现场计算时差,并将结果填充到字段中。然后在OutputParameters中填充实体对象,前端接收这些值,并在适当的地方显示它们。
这里唯一的缺点是,由于这些字段是在CRM中直接计算的,因此您将无法编写任何SSRS报告,因为数据不会被持久化到数据库。如果要实现这一点,然后对这些字段执行SQL查询,则会发现它们都为空。这些字段只是作为占位符。(见截图)
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();
}证据:


发布于 2017-02-15 11:15:02
我想你只需要在表格上写上这个。在DB中,您显然存储了实际创建的日期。
通常如何在网站上这样做,是根据给定的日期时间在JS中计算的。使用像这个http://timeago.yarp.com/这样的库
您如何在CRM中这样做是完全一样的。*创建一个简单的web资源,它从它的父节点获取所创建的内容,并使用上面的脚本显示"timeago“。*将造物放在表格上(可以隐藏,不重要)。*把网页资源放在表格上。添加一个标签,如果您希望它看起来像一个表单字段,那么将它变成1行。
https://stackoverflow.com/questions/40485948
复制相似问题