共用方式為


針對多個數據表的常見問題進行疑難解答

本文可協助您針對多個數據表的常見問題進行疑難解答並解決,例如Microsoft Dynamics 365 Sales 中的商機、報價、訂單或發票。

問題 1 - 在內容表單中,可能會出現在表單選取器中

內容表單 中,用於在交易管理員中顯示和自定義側邊面板,以及在聯繫人、商機、潛在客戶和帳戶的新介面中。

原因

如果您的環境有任何自定義,這些數據表的 formActivationState 設定為 Active[內容表單 ] 會出現在表單選取器下拉式清單中,讓使用者選取此表單以檢視記錄詳細數據。

顯示 [內容表單] 選項的 [表單選取器] 下拉式清單。

解決方法

如果 [在內容表單] 的外觀造成混淆,您可以停用 [內容表單] ,如下列螢幕快照所示。

在 [內容] 表單中,具有要停用的選項。

問題 2 - 處理數據表時發生錯誤或非預期的行為

徵兆

在處理數據表時(例如商機、報價、訂單、發票、報價產品和訂單產品),您會在 Dynamics 365 for Sales 中觀察到非預期的行為或錯誤。 以下是您在處理商機時可能會遇到的一些錯誤,而且這些錯誤可能適用於其他資料表:

  • 「外延金額在修訂報價後發生錯誤」-此錯誤可能是因為自定義外掛程式所造成。
  • 「儲存商機時發生錯誤」- 此錯誤可能是因為自定義 JavaScript 所造成。
  • 「關閉商機時發生錯誤」- 此錯誤可能是因為自定義工作流程所造成。

原因

這些問題可能會因為應用程式的自定義不當而發生。

解決方法

您必須確認不適當的自定義專案並加以解決。 執行下列驗證方法來識別造成問題的自定義,然後解決:

停用自定義外掛程式

  1. 移至設定>自訂>自訂系統

  2. 選取 [Sdk 訊息處理步驟]。

    隨即顯示可用的 SDK 訊息處理步驟清單。

  3. 選取 [ 篩選] 圖示,選取 [主要物件類型代碼] 資料行 [Sdk 訊息篩選],然後選取發生錯誤的數據表。

    移至自定義外掛程式清單,以選取發生錯誤的數據表。

  4. 選取來自您所擁有的解決方案的 SDK 訊息處理步驟。

    注意

    若要檢視自定義 SDK 訊息處理步驟:

    1. 移至 [ 設定>解決方案],然後開啟方案。

    2. 選取 [SDK 訊息處理步驟]。 確認已選取值,如下所示: [元件類型SDK 訊息處理步驟],以及 [檢視全部]。

  5. 選取停用

  6. 發行自訂

    選擇並停用非受控自定義外掛程式。

  7. 確認問題,如果未發生,問題在於自定義 SDK 訊息處理步驟。 解決此問題。

注意

如果發生此問題,請啟動您現在停用的 SDK 訊息處理步驟 ,並嘗試 停用自定義 JavaScript停用自定義工作流程程式

停用自定義 JavaScript

  1. 開啟發生錯誤的數據表表表體編輯器。 在此範例中,我們會選取數據表作為商機和預設解決方案表單。

    開啟表單編輯器。

  2. 在表單編輯器上選取 [表單屬性 ]。

    在表單編輯器上選取 [表單屬性]。

    [ 表單屬性 ] 對話框隨即開啟。

  3. 在 [事件] 索引標籤上,從 [事件] 下拉式清單中選取 [OnLoad] 控制件

    從 [事件] 下拉式清單中選取 [OnLoad] 控件。

  4. 選擇來自您擁有之解決方案的自定義 JavaScript 檔案。

    注意

    若要檢視您的自訂 JavaScript:

    1. 移至 [ 設定>解決方案],然後開啟方案。
    2. 選取 [WebResources]。 確認值已選取為:[WebResources 的元件類型] 和 [檢視全部]。
    3. 選取 [篩選 ] 圖示以啟用資料行的篩選選項。 選取 [類型],並將篩選條件設定為 [腳本] (JScript)。

    選取 [類型],並將篩選條件設定為 [腳本] (JScript)。

  5. 選取編輯。 在此範例中,我們已選取要編輯的自定義 JavaScript 檔案 eg_opportunity

    [處理程式屬性] 對話框中的輸入詳細數據。

  6. 清除 [ 已啟用] 選項,然後選取 [ 確定]。

    清除 [處理程序屬性] 對話框中的 [已啟用] 選項。

  7. 發行自訂

  8. 確認問題,如果未發生,問題與自定義 JavaScript 相同。 解決此問題。

注意

如果發生此問題,請啟用您立即停用的 JavaScript,並嘗試 停用自定義外掛程式停用自定義工作流程程式

停用自定義工作流程程式

  1. 移至設定>自訂>自訂系統

  2. 選取 [ 進程]。 這些程式包括工作流程、商務程式流程和商務規則。

    隨即顯示可用的進程清單。

  3. 選取 [篩選] 圖示,選取 [主要實體] 數據行,然後選取發生錯誤的數據表。

    移至自定義進程工作流程清單,以選取發生錯誤的數據表。

  4. 選擇來自您擁有之解決方案的程式。

    注意

    若要檢視您的自訂程式:

    1. 移至 [ 設定>解決方案],然後開啟方案。
    2. 選取 [ 進程]。 確認值已選取為:[行程] 的 [元件類型] [檢視全部]。
  5. 選取停用

  6. 發行自訂

    選擇並停用 Unmanaged 進程工作流程。

  7. 確認問題,如果未發生,則問題在於自定義進程。 解決此問題。

注意

如果發生此問題,請啟動您立即停用的進程,並嘗試停用自定義外掛程式停用自定義 JavaScript

問題 3 - 使用共用變數自定義外掛程式處理

徵兆

  • 在商機、報價、訂單和發票數據表上建立和更新作業,會在其父數據表上觸發更新。
  • 擷取商機、報價、訂單和發票數據表的詳細數據,會在內部觸發價格計算服務,然後觸發客戶所建立的自定義外掛程式。

解決方法

自定義外掛程式會在商機、報價、訂單和發票數據表上執行建立、更新和儲存作業。 這些數據表上的建立和更新作業會在內部觸發價格計算服務,然後更新其父數據表的相關價格相關欄位或屬性。

您可以使用內部價格計算服務或使用您自己的自定義外掛程式,來識別或區分商機、報價、訂單或發票數據表或父代商機、報價、訂單或發票數據表中的任何更新。 布爾值共用變數 InternalSystemPriceCalculationEvent,可透過 IPluginExecutionContext存取,可在外掛程式程式代碼中使用。 使用價格計算服務處理的任何建立或更新事件,都會將變數 InternalSystemPriceCalculationEvent 的值設定為 trueInternalSystemPriceCalculationEvent 的預設值為 false。 您可以從自定義外掛程式程式代碼存取此變數,以控制現有商業規則的流程。

注意

若要使用共用變數執行自定義外掛程式作業,請確定已停用現成可用的價格計算服務。

範例指令碼

public void Execute(IServiceProvider serviceProvider)
{
   // Obtain the tracing service
   ITracingService tracingService = (ITracingService)serviceProvider.GetService(typeof(ITracingService));

   // Obtain the execution context from the service provider.  
    IPluginExecutionContext executionContext = (IPluginExecutionContext)
    serviceProvider.GetService(typeof(IPluginExecutionContext))
    bool isInternalSystemPriceCalculationEvent = false;

    //Check existence of shared variable and fetch the value from executionContext
    if (executionContext.ParentContext != null && executionContext.ParentContext.SharedVariables.ContainsKey("InternalSystemPriceCalculationEvent"))
                    
    {
        isInternalSystemPriceCalculationEvent = (bool)executionContext.ParentContext.SharedVariables["InternalSystemPriceCalculationEvent"];
    }   

    if (isInternalSystemPriceCalculationEvent)
    {
            //TO DO - Add or skip custom business logic
    }

}