none
插件:請問在Opportunity轉Quote時,可以在QuoteDetaile取得Opportunity裡的自訂Attributes RRS feed

  • 问题

  • 各位前輩請問一下:

    我需要在Opportunity轉Quote時,

    在QuoteDetaile取得Opportunity的自訂Attributes。

    在插件要在那裡註冊才能取得上述值

     

    2010年9月27日 8:52

全部回复

  • Message:Create 

    Triggering:Child Pipeline


    刀客 | MSN:caims@techsun.com | BLOG:http://caims.cnblogs.com

    2010年9月27日 9:23
    版主
  • 感謝Batistuta Cai

    再請教 Child Pipeline 裡面可以使用 CrmService 再進行一次查詢嗎?

    我在 Child Pipeline 裡面再做子查詢時會發生錯誤!

    下列是我在Child Pipeline 所寫的代碼:

    l

    /// <summary>
    /// Creates a CrmService proxy for plug-ins that execute in the child pipeline.
    /// </summary>
    /// <param name="context">The execution context that was passed to the plug-ins Execute method.</param>
    /// <param name="flag">Set to True to use impersontation.</param>
    /// <returns>A CrmServce instance.</returns>
    private static CrmService CreateCrmService(IPluginExecutionContext context, Boolean flag)
    {
      var authToken = new CrmAuthenticationToken { AuthenticationType = 0, OrganizationName = context.OrganizationName, CallerId = (flag ? context.UserId : context.InitiatingUserId) };
    
      var corToken = new CorrelationToken { CorrelationId = context.CorrelationId, CorrelationUpdatedTime = context.CorrelationUpdatedTime, Depth = context.Depth };
    
      var regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM", false);
    
      var service = new CrmService
      {
        CrmAuthenticationTokenValue = authToken,
        UseDefaultCredentials = true,
        Url = String.Concat(regkey.GetValue("ServerUrl").ToString(), "/2007/crmservice.asmx"),
        CorrelationTokenValue = corToken
      };
    
      return service;
    }
    // For a plug-in running in the child pipeline, use this statement.
    // CrmService crmService = CreateCrmService(context, true);

    上述代碼我是參考這文章

    http://crmscape.blogspot.com/2009/02/ms-crm-40-plug-in-stages-pipelines-and.htm

    因為文章最後有下列這段,所以是否代表在Child Pipeline 無法再進行查詢的動作呢?

     

    A CrmService running Synchronously in a child pipeline is limited to the following:

    • Create
    • Delete
    • Update
    • RetrieveExchangeRate

     

     

    2010年9月27日 9:31
  • retrieve, retrievemultiple is available
    2010年9月29日 1:13
  • 可以!

     但是,如果您是为子管道中使用的插件编写代码,则请勿使用 IPluginExecutionContext.CreateCrmService 或 IPluginExecutionContext.CreateMetadataService 方法。在子管道中,您必须手动实例化 CrmService 或 MetadataService。

    以下代码示例演示如何为子管道中执行的插件创建 CrmService 代理。

    [C#]
    /// <param name="context">The execution context that was passed to the plug-in's Execute method.</param>
    /// <param name="flag">Set to True to use impersonation.</param>
    /// <returns>A CrmServce instance.</returns>
    private CrmService CreateCrmService(IPluginExecutionContext context, Boolean flag)
    {
      CrmAuthenticationToken authToken = new CrmAuthenticationToken();
      authToken.AuthenticationType = 0;
      authToken.OrganizationName = context.OrganizationName;
    
      // Include support for impersonation.
      if (flag)
        authToken.CallerId = context.UserId;
      else
        authToken.CallerId = context.InitiatingUserId;
    
      CrmService service = new CrmService();
      service.CrmAuthenticationTokenValue = authToken;
      service.UseDefaultCredentials = true;
    
       // Include support for infinite loop detection.
      CorrelationToken corToken = new CorrelationToken();
      corToken.CorrelationId = context.CorrelationId;
      corToken.CorrelationUpdatedTime = context.CorrelationUpdatedTime;
      corToken.Depth = context.Depth;
    
      RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM");
    
      service.Url = String.Concat(regkey.GetValue("ServerUrl").ToString(), "/2007/crmservice.asmx");
      service.CorrelationTokenValue = corToken;
    
      return service;
    }

    刀客 | MSN:caims@techsun.com | BLOG:http://caims.cnblogs.com
    2010年9月30日 2:44
    版主
  • 感謝 Batistuta Cai 與 Jeff.Han 兩位前輩:

    兩位前輩不好意思我沒把問題說清楚。

    我了解如何:

    1、在子管道如何新增CrmService

    2、也知道利用message裡 retrieve, retrievemultiple

       去取得Opportunity裡的自訂Attributes

    ---------------------------------------

    我遇到的問題是當Opportunity轉Quote時,我希望能

    能在QuoteDetaile Create時取得Opportunity裡的自訂Attributes。

     

    插件我是注冊在QuoteDetaile,子管道,Create。

    我在插件裡面使用retrieve, retrievemultiple

    等message時,會出現SQL server錯誤。

     

    我想問子道管似乎是有所限制,不可以在子管道裡面使用

    retrieve, retrievemultiple,只能使用下列4個message:

    1、Create, 

    2、Delete, 

    3、Update, 

    4、RetrieveExchangeRate

    問題有點長感謝各位前輩耐心看完我的問題。

     

     




    2010年9月30日 14:36
  • 以下代码示例演示如何为子管道中执行的插件创建 CrmService 代理。

    [C#]
    /// <param name="context">The execution context that was passed to the plug-in's Execute method.</param>
    /// <param name="flag">Set to True to use impersonation.</param>
    /// <returns>A CrmServce instance.</returns>
    private CrmService CreateCrmService(IPluginExecutionContext context, Boolean flag)
    {
     CrmAuthenticationToken authToken = new CrmAuthenticationToken();
     authToken.AuthenticationType = 0;
     authToken.OrganizationName = context.OrganizationName;
    
     // Include support for impersonation.
     if (flag)
      authToken.CallerId = context.UserId;
     else
      authToken.CallerId = context.InitiatingUserId;
    
     CrmService service = new CrmService();
     service.CrmAuthenticationTokenValue = authToken;
     service.UseDefaultCredentials = true;
    
      // Include support for infinite loop detection.
     CorrelationToken corToken = new CorrelationToken();
     corToken.CorrelationId = context.CorrelationId;
     corToken.CorrelationUpdatedTime = context.CorrelationUpdatedTime;
     corToken.Depth = context.Depth;
    
     RegistryKey regkey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\MSCRM");
    
     service.Url = String.Concat(regkey.GetValue("ServerUrl").ToString(), "/2007/crmservice.asmx");
     service.CorrelationTokenValue = corToken;
    
     return service;
    }

    刀客 | MSN:caims@techsun.com | BLOG:http://caims.cnblogs.com
    2010年10月13日 1:49
    版主