Dynamics crm 未执行报价产品的动态CRM 2013预操作插件

Dynamics crm 未执行报价产品的动态CRM 2013预操作插件,dynamics-crm,dynamics-crm-2013,Dynamics Crm,Dynamics Crm 2013,编辑 问题解决了。我创建了一个名称中没有下划线的新项目。所以,在注销旧程序集和注册新程序集之后,插件被执行。同样在新的项目中,我用没有密码的密钥签署了dll。有益的神秘消失了。谢谢大家抽出时间 ================================================================================================================================= 插件的上下文是:销售部门正在创建报价并向报价中

编辑


问题解决了。我创建了一个名称中没有下划线的新项目。所以,在注销旧程序集和注册新程序集之后,插件被执行。同样在新的项目中,我用没有密码的密钥签署了dll。有益的神秘消失了。谢谢大家抽出时间

=================================================================================================================================

插件的上下文是:销售部门正在创建报价并向报价中添加产品。引号中有一列LineItemNumber。所以,当用户想要将产品移动到3个位置时,它只需将LineItemNumber更改为3(例如8)。所以,插件正在重写LineItemNumber。所以,3变为4,4=>5,依此类推。 以下是插件代码:

using System;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;

namespace plugin_fix_line_item_number
{
    public class FixLineItemNumbers : IPlugin
    {
        public void Execute(IServiceProvider serviceProvider)
        {
            // Obtain the execution context from the service provider.
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));

            // Get a reference to the Organization service.
            IOrganizationServiceFactory factory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = factory.CreateOrganizationService(context.UserId);

            if (context.InputParameters != null)
            {

                //Get Target - includes everything changed
                Entity entity = (Entity)context.InputParameters["Target"];

                //Get Pre Image
                Entity image = context.PreEntityImages["PreImage"];

                // post image
                //Entity imagePost = context.PostEntityImages["PostImage"];

                int? new_lin = null; //lineitemnumber
                int? old_lin = null;

                if (entity.Attributes.Contains("lineitemnumber"))
                {
                    new_lin = (int)entity.Attributes["lineitemnumber"];
                    old_lin = (int)image.Attributes["lineitemnumber"];

                    if (new_lin < 1) return; 

                    if (new_lin != null && old_lin != null)
                    {
                        if (new_lin != old_lin)
                        {
                            bool pieskaitiit = true; //by default, count lineItemNumber up
                            EntityCollection products = new EntityCollection();
                            QueryExpression q = new QueryExpression("quotedetail");
                            q.ColumnSet = new ColumnSet(new string[] { "lineitemnumber" });
                            q.Criteria.FilterOperator = LogicalOperator.And;

                            Guid quote_id = ((EntityReference)image.Attributes["quoteid"]).Id;

                            q.Criteria.AddCondition("quoteid", ConditionOperator.Equal, quote_id);
                            if (new_lin > old_lin) // 2 pozīcija pārtop par 5    2 => 5
                            {
                                q.Criteria.AddCondition("lineitemnumber", ConditionOperator.LessEqual, new_lin);
                                q.Criteria.AddCondition("lineitemnumber", ConditionOperator.GreaterThan, old_lin);
                                pieskaitiit = false; // here must count down
                            }
                            else{ // 5 pozīcija pārvietojas uz otro    5 => 2
                                q.Criteria.AddCondition("lineitemnumber",ConditionOperator.LessThan, old_lin);
                                q.Criteria.AddCondition("lineitemnumber",ConditionOperator.LessThan, old_lin);
                            }
                            products = service.RetrieveMultiple(q);
                            foreach(Entity e in products.Entities)
                            {
                                int lin = e.GetAttributeValue<int>("lineitemnumber");
                                if (pieskaitiit) lin++; else lin--;
                                e.Attributes["lineitemnumber"] = 9;
                                service.Update(e);
                            }

                        }
                    }
                }
            }
        }//
    }
}
我在谷歌上搜索发现: 所以,如果我禁用了
ActivityFeeds.Plugins.ActivityClose
步骤,则在保存表单时,不会(通过插件)更改数据库。即使我添加行
抛出新异常(“大错误”)
在第一个if之前,也就是说什么都没有发生,表单正在保存数据,但插件没有执行

我也尝试过插件分析器()。我跑得很好。如果禁用了
ActivityFeeds.Plugins.ActivityClose
步骤,然后运行探查器,然后进行调试,则会引发异常

这个插件只有一个,是在操作前执行的


我还能调查什么?一些系统配置问题?也许有人有一些想法,我还可以试试。谢谢。

问题解决了。我创建了一个新的C#项目,名称中没有下划线。所以,在crm中注销旧程序集并注册新程序集之后,插件被执行。同样在新的项目中,我用没有密码的密钥签署了dll。有益的神秘消失了。另外
ActivityFeeds.Plugins.ActivityClose:任何实体的更新
步骤一禁用。
感谢大家抽出时间。

最终目标是以特定方式订购报价行项目吗?@JasonFaulkner,是的。
Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=6.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: An error occurred. Contact a system administrator or refer to the Microsoft Dynamics CRM SDK troubleshooting guide.Detail: 
<OrganizationServiceFault xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.microsoft.com/xrm/2011/Contracts">
  <ErrorCode>-2147220891</ErrorCode>
  <ErrorDetails xmlns:d2p1="http://schemas.datacontract.org/2004/07/System.Collections.Generic">
    <KeyValuePairOfstringanyType>
      <d2p1:key>OperationStatus</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">0</d2p1:value>
    </KeyValuePairOfstringanyType>
    <KeyValuePairOfstringanyType>
      <d2p1:key>SubErrorCode</d2p1:key>
      <d2p1:value xmlns:d4p1="http://www.w3.org/2001/XMLSchema" i:type="d4p1:string">-2146233088</d2p1:value>
    </KeyValuePairOfstringanyType>
  </ErrorDetails>
  <Message>An error occurred. Contact a system administrator or refer to the Microsoft Dynamics CRM SDK troubleshooting guide.</Message>
  <Timestamp>2014-12-11T15:38:01.0167124Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

[ActivityFeeds.Plugins: ActivityFeeds.Plugins.ActivityClose]
[6213e0c9-2881-e411-9ac4-0050569aa6cf: ActivityFeeds.Plugins.ActivityClose: Update of  any Entity]


</TraceText>
</OrganizationServiceFault>