【发布时间】:2016-11-25 14:03:58
【问题描述】:
我有需要处理的特定情况。我有一个插件,可以在创建或更新发票详细信息时刷新发票上的特定汇总字段。 现在我需要在删除发票详细信息时刷新该字段。
分析这个问题,我意识到我无法在操作前刷新汇总字段,因为尚未删除发票详细记录,而在操作后我无法从该特定记录中检索发票 Guid,因为它已经消失了。
这里是处理创建/更新时汇总刷新的代码:
Entity invoiceDetail = service.Retrieve("invoicedetail", targetId, new ColumnSet(true));
Guid invoiceID = ((EntityReference)invoiceDetail["invoiceid"]).Id;
if (targetEntity.Attributes.Contains("extendedamount"))
{
Entity myEntity = service.Retrieve("invoice", invoiceID, new ColumnSet(true));
CalculateRollupFieldRequest rollupRequest = new CalculateRollupFieldRequest
{
Target = new EntityReference("invoice", invoiceID),
FieldName = "detailamount"
};
CalculateRollupFieldResponse response = (CalculateRollupFieldResponse)service.Execute(rollupRequest);
myEntity = response.Entity;
service.Update(myEntity);
}
你有什么建议吗?我要疯了,什么都想不出来……
【问题讨论】:
-
您使用的是什么版本的 CRM?
-
我正在使用 CRM 2016
-
bocasa 我想知道为什么你不能使用前置事件,在此之后记录将被删除,如果删除操作失败,它将回滚。
-
这是因为我想刷新发票上汇总字段中的值,该值是根据要删除的 invoicedetail 数据计算得出的。因此,如果我在预操作中执行此操作,我将刷新该值并且它会保持不变,因为尚未删除 invoicedetail。
标签: c# plugins dynamics-crm rollup