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

时间:2015-11-19 08:49:52

标签: c# dynamics-crm crm dynamics-crm-online

我是CRM的新手。我创建了两个实体:订单和产品。在订单实体上有查找产品实体的字段。我尝试从产品到查找字段获取productquantity并将其粘贴到订单实体中的字段。这是我试过的代码:

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字段中检索值。 所以,我试图将此插件作为Pre-Update事件运行。在我之前创建的记录中,我将查找值从产品A更改为产品B.并且其工作,插件从产品B检索产品数量值。

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

由于

1 个答案:

答案 0 :(得分:1)

如果您想更新目标实体,让CRM为您执行更新,则必须在预创建或预更新中注册您的插件。如果要对Post事件执行操作,则需要使用IOrganizationService调用Update,只需更新Target即可。您还需要确保不创建无限循环,其中更新触发插件,该插件执行另一个触发相同插件的更新,执行另一个更新......等等。