Plugins 动态客户关系管理&x2B;插件代码,用于计算记录中的字段总数并在另一个记录中更新

Plugins 动态客户关系管理&x2B;插件代码,用于计算记录中的字段总数并在另一个记录中更新,plugins,dynamics-crm,dynamics-crm-2011,dynamics-crm-2013,dynamics-crm-online,Plugins,Dynamics Crm,Dynamics Crm 2011,Dynamics Crm 2013,Dynamics Crm Online,我有以下要求,需要在一个实体(比如“实体a”)上的插件代码中实现- 以下是“实体A”中的数据 用字段值记录1 价格=100 数量=4 记录2和字段值 价格=200 数量=2 我需要添加字段的值并在新记录中更新它。示例如下所示- 记录3 价格=100+200=300 数量=4+2=6 实体A有一个名为“执行添加”的按钮,单击该按钮将触发插件代码 我需要一些关于如何实现这一点的想法/伪代码。上面解释的示例只是我的实体的一个简单版本。实际上,实体上有60多个字段,对于每个字段,我需要在第三

我有以下要求,需要在一个实体(比如“实体a”)上的插件代码中实现-

以下是“实体A”中的数据

用字段值记录1

  • 价格=100
  • 数量=4
记录2和字段值

  • 价格=200
  • 数量=2
我需要添加字段的值并在新记录中更新它。示例如下所示-

记录3

  • 价格=100+200=300
  • 数量=4+2=6
实体A有一个名为“执行添加”的按钮,单击该按钮将触发插件代码

我需要一些关于如何实现这一点的想法/伪代码。上面解释的示例只是我的实体的一个简单版本。实际上,实体上有60多个字段,对于每个字段,我需要在第三个字段中执行求和和和更新。此外,将对其执行添加的记录数可以超过2

因此,记录的数量越多,我就越需要遍历每个记录并执行求和,我想知道是否有更简单更好的方法来编写这个逻辑

只是需要关于如何编写逻辑的指导。 任何帮助都将不胜感激

解决方案:

尝试了下面的代码,它按照答案的建议工作-

AttributeList是我需要对其执行求和的字段列表。所有字段均为十进制

Entity EntityA = new EntityA();
EntityA.Id = new Guid({"Guid String"});

var sourceEntityDataList = service.RetrieveMultiple(new FetchExpression(fetchXml)).Entities;

          foreach (var value in AttributeList)
            {
                EntityA[value]= sourceEntityDataList.Sum(e => e.Contains(value) ? e.GetAttributeValue<Decimal>(value) : 0);
            }

service.Update(EntityA);
Entity EntityA=new EntityA();
EntityA.Id=新Guid({“Guid字符串”});
var sourceEntityDataList=service.RetrieveMultiple(新的FetchExpression(fetchXml)).Entities;
foreach(属性列表中的var值)
{
EntityA[value]=sourceEntityDataList.Sum(e=>e.Contains(value)→e.GetAttributeValue(value):0);
}
服务更新(EntityA);

我最近为一个客户做了类似的事情。我们研究了使用汇总字段,但他们希望结果能在12小时内得到

包含我们求和的值的记录是子记录,包含结果的记录是父记录

它的工作方式是:

  • 从插件的目标实体中,获取父id
  • 检索父对象
  • 检索其子级(通过LINQ、FetchXML或QueryExpression)
  • 对子项的值求和。因为有很多字段要求和,所以可以创建一个字段名列表,然后使用这样的方法(假设它们都是
    Money
    fields)
    private decimal sum(字符串字段)=>Records.sum(b=>b.GetAttributeValue(字段)?.Value??0)
    如果字段是不同的类型,您还可以创建不同的
    sum
    方法,如
    coursey
    sumInt
    等。然后您需要按类型分隔字段,并将它们传递给相应的方法
  • 在父
    实体上填充结果
  • 更新动力学中的父记录

  • 如果信息对时间不敏感,可以查看开箱即用汇总字段。

    到目前为止您尝试了什么?应该是一个回答特定问题的地方,而不是一个你可以请其他人为你做工作的地方。谢谢你的帮助,并对之前的评论表示歉意。这起作用了。我还有另一个问题,我已经在这里发布了,你能不能高兴地听到这个问题得到了解决。谢谢你接受答案。