CRM 2011:用于创建重复记录的插件

时间:2014-02-03 15:06:08

标签: plugins dynamics-crm-2011

我创建了一个简单的插件来创建引用父记录的重复记录。

这是我的代码

        var pluginExecutionContext = localContext.PluginExecutionContext;

        IOrganizationService service = localContext.OrganizationService;

        abc= pluginExecutionContext.InputParameters["Target"] as Entity;

        if (pluginExecutionContext.Depth == 1)
        {
            Guid abcId = abc.Id;
            Entity abcCopy = new Entity("mcg_abc");


            if (abc.Attributes.Contains("mcg_abccategoryoptioncode"))
            {
                abcCopy.Attributes["mcg_abccategoryoptioncode"] = abc.GetAttributeValue<OptionSetValue>("mcg_abccategoryoptioncode");
            }

            if (abc.Attributes.Contains("mcg_effectivedate"))
            {
                abcCopy.Attributes["mcg_effectivedate"] = isp.GetAttributeValue<DateTime>("mcg_effectivedate");
            }

            if (abc.Attributes.Contains("mcg_startdate"))
            {
                abcCopy.Attributes["mcg_startdate"] = isp.GetAttributeValue<DateTime>("mcg_startdate");
            }

            if (abc.Attributes.Contains("mcg_enddate"))
            {
                abcCopy.Attributes["mcg_enddate"] = isp.GetAttributeValue<DateTime>("mcg_enddate");
            }

            if (abc.Attributes.Contains("mcg_amendeddate"))
            {
                abcCopy.Attributes["mcg_amendeddate"] = isp.GetAttributeValue<DateTime>("mcg_amendeddate");
            }
             if ((abc.GetAttributeValue<OptionSetValue>("mcg_abccategoryoptioncode").Value) == 803870001)
                {
              //Some more fields;     

                }
               else
               {
              //Some more fields;    
               }
            // SOme more fields;
            abcCopy.Attributes["mcg_parentabc"] = new EntityReference("mcg_abc", abc.Id);
             service.Create(abcCopy);

}

现在问题是以下检查之前的所有字段都被复制了

 if ((abc.GetAttributeValue<OptionSetValue>("mcg_abccategoryoptioncode").Value) == 803870001)

但是,此检查后的字段不会被复制。

如果有人能说出我犯了什么错误,请。

2 个答案:

答案 0 :(得分:0)

如果您从Target获取字段 -​​ 此字段已在客户端更新。如果字段未更新 - 它不会在Target中。您应该使用Images来获取未更改字段的值。

答案 1 :(得分:0)

该字段必须为空,因此可能会出现异常。尝试使用插件图像或以这种方式更改代码:

if (abc.Attributes.Contains("mcg_abccategoryoptioncode")){
  if ((abc.GetAttributeValue<OptionSetValue>("mcg_abccategoryoptioncode").Value) == 803870001)
....