none
plug in 问题请教4大MVP RRS feed

  • 问题

  • 我的“客户”有个属性,叫“审核状态”,如果此“客户”已经“审核”,那么不允许删除。
    我写了一个plug in,代码如下:
    using System;
    using System.Collections.Generic;
    using System.Text;
    using Systom.QhCRM.Data;
    using Systom.QhCRM.Data.CrmSDK;
    using Microsoft.Crm.Sdk;
    using Microsoft.Crm.SdkTypeProxy;
    namespace Systom.QhCRM.PlugIn
    {
        public class PlugIn : IPlugin
        {

            public void Execute(IPluginExecutionContext context)
            {

     

                Systom.QhCRM.Data.CrmSDK.DynamicEntity entity = null;

                // Check if the input parameters property bag contains a target
                // of the create operation and that target is of type DynamicEntity.
                if (context.InputParameters.Properties.Contains("Target") && context.InputParameters.Properties["Target"] is Systom.QhCRM.Data.CrmSDK.DynamicEntity)
                {

                    // Obtain the target business entity from the input parmameters.
                    entity = (Systom.QhCRM.Data.CrmSDK.DynamicEntity)context.InputParameters.Properties["Target"];

                    //// Verify that the entity represents an account.
                    //if (entity.Name != EntityName.account.ToString())
                    //{
                    //    return;
                    //}
                    if (context.MessageName.ToLower() == MessageName.Delete.ToString().ToLower())
                    {
                        if (CancelAuditing(entity))

                            throw new InvalidPluginExecutionException("已审核数据不允许删除!");

                    }
                }
                else
                {
                    return;
                }
            }
            /// <summary>
            /// 是否取消删除操作
            /// </summary>
            /// <param name="e">Systom.QhCRM.Data.CrmSDK.DynamicEntity</param>
            /// <returns>true:取消删除操作;false:继续删除操作</returns>
            bool CancelAuditing(Systom.QhCRM.Data.CrmSDK.DynamicEntity e)
            {
                try
                {
                    switch (e.Name.ToLower())
                    {
                        case "account":
                            {

                                Systom.QhCRM.Data.CrmSDK.account a = ((e as Systom.QhCRM.Data.CrmSDK.BusinessEntity) as Systom.QhCRM.Data.CrmSDK.account);

                               

                                if (a.new_shenhe.Value == 1)
                                    return true;
                            }
                            break;
                    }
                }
                catch
                {
                    return false;
                }

                return false;
            }
        }
    }

    其中引用了除"microsoft.crm.sdk.dll"和"microsoft.crm.sdktypeproxy.dll“这个两个文件外的第三个自己写的DLL“Systom.QhCRM.Data.dll”.现在,我把这4个DLL全部都拷贝到注册工具的文件夹下,顺利注册这个PLUG IN。但是在程序运行的时候,点击了“客户”实体上的“删除”按钮后,CRM报错:
    提示“Systom.QhCRM.Data”这个文件或程序集没有被发现。
    现在请教一下各位老大
    1、plug in中是否不能引用出SDK提供的俩个dll外的其他DLL。如果不能引用,那么“客户”实体自定义的属性在plug in中如何使用。
    3、如果可以引用其他DLL,那么在注册或者编写的时候有什么应该注意的地方。
    请各位老大指点。

    2009年8月21日 3:10

答案

  • 注册plug in的时候选 pre stage 不要选 post stage


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com
    • 已标记为答案 杨五之 2009年8月24日 2:11
    2009年8月21日 10:28

全部回复

  • 请将 你自己的写 Systom.QhCRM.Data 类

    放入 CRM的bin中

    注意是网站bin
    Eirc's Yang(杭州-天天) cnblog:http://www.cnblogs.com/ericqyang/ MSN:yqing630@hotmail.com
    2009年8月21日 6:55
  • 再次请教一下,如何终止目前的删除操作呢?我抛出了这个 throw new InvalidPluginExecutionException("已审核数据不允许删除!")异常,但是删除操作仍然执行了。

    2009年8月21日 9:16
  • 再次请教一下,如何终止目前的删除操作呢?我抛出了这个 throw new InvalidPluginExecutionException("已审核数据不允许删除!")异常,但是删除操作仍然执行了。

    2009年8月21日 9:16
  • 注册plug in的时候选 pre stage 不要选 post stage


    星吧客 | Josh Liang | 梁祝权 | Blog:http://xingbake.cnblogs.com
    • 已标记为答案 杨五之 2009年8月24日 2:11
    2009年8月21日 10:28
  • 问题解决了吗?
    Darren Liu | 刘嘉鸿 | MS CRM MVP | English Blog: http://msdynamicscrm-e.blogspot.com | Chinese Blog: http://liudarren.spaces.live.com
    2009年8月22日 6:21
    版主
  • 谢谢josh-星吧客。问题解决。

    2009年8月24日 0:36