Microsoft Dynamics CRM插件:从查找字段检索属性

本文关键字:查找 字段 检索 属性 Dynamics CRM 插件 Microsoft | 更新日期: 2023-09-27 18:22:28

im在CRM中是新的。我创建了两个实体:订单和产品。在订单实体上有一个向产品实体开火的查找字段。我试图通过查找字段从产品中获取产品数量,并将其粘贴到订单实体中的字段中。这是我尝试过的代码:

if (context.InputParameters.Contains("Target") && context.InputParameters["Target"] is Entity)
        {
            Entity entity = (Entity)context.InputParameters["Target"];

            if (entity.Attributes.Contains("new_productname"))
            {
                Entity productreference = service.Retrieve("new_callistyproduct", ((EntityReference)entity["new_productname"]).Id, new ColumnSet(true));
                if (productreference.Attributes.Contains("new_productquantity"))
                {
                    if (entity.Attributes.Contains("new_numberofproduct"))

                       entity["new_numberofproduct"] = productreference.GetAttributeValue<Decimal>("new_productquantity");
                   else
                     entity.Attributes.Add("new_numberofproduct", productreference.GetAttributeValue<Decimal>("new_productquantity"));

                }
            }

        }

每当我创建新记录时,我都希望这个插件能正常工作。所以我把这个插件注册为预创建事件。但是,当我试图创造一个记录。此插件未从productquantity字段中检索值。因此,我尝试将此插件作为预更新事件运行。在我之前创建的记录中,我将查找值从产品A更改为产品B。它的工作是,插件从产品B中检索产品数量值。

问题是,如果我想让这个插件也适用于预创建事件,我该怎么办。

感谢

Microsoft Dynamics CRM插件:从查找字段检索属性

如果你想更新目标实体,并让CRM为你执行更新,你必须在预创建或预更新上注册你的插件。如果你想对Post事件执行操作,你需要使用IOOrganizationService调用Update,仅仅更新Target是行不通的。你还需要确保你不会创建一个无限循环,在这个循环中,更新会触发插件,插件会执行另一个更新,触发同一个插件,插件又会执行一个更新。。。等等。