針對多個數據表的常見問題進行疑難解答
本文可協助您針對多個數據表的常見問題進行疑難解答並解決,例如Microsoft Dynamics 365 Sales 中的商機、報價、訂單或發票。
問題 1 - 在內容表單中,可能會出現在表單選取器中
在 內容表單 中,用於在交易管理員中顯示和自定義側邊面板,以及在聯繫人、商機、潛在客戶和帳戶的新介面中。
原因
如果您的環境有任何自定義,這些數據表的 formActivationState 設定為 Active , [內容表單 ] 會出現在表單選取器下拉式清單中,讓使用者選取此表單以檢視記錄詳細數據。
解決方法
如果 [在內容表單] 的外觀造成混淆,您可以停用 [內容表單] ,如下列螢幕快照所示。
問題 2 - 處理數據表時發生錯誤或非預期的行為
徵兆
在處理數據表時(例如商機、報價、訂單、發票、報價產品和訂單產品),您會在 Dynamics 365 for Sales 中觀察到非預期的行為或錯誤。 以下是您在處理商機時可能會遇到的一些錯誤,而且這些錯誤可能適用於其他資料表:
- 「外延金額在修訂報價後發生錯誤」-此錯誤可能是因為自定義外掛程式所造成。
- 「儲存商機時發生錯誤」- 此錯誤可能是因為自定義 JavaScript 所造成。
- 「關閉商機時發生錯誤」- 此錯誤可能是因為自定義工作流程所造成。
原因
這些問題可能會因為應用程式的自定義不當而發生。
解決方法
您必須確認不適當的自定義專案並加以解決。 執行下列驗證方法來識別造成問題的自定義,然後解決:
停用自定義外掛程式
移至設定>自訂>自訂系統。
選取 [Sdk 訊息處理步驟]。
隨即顯示可用的 SDK 訊息處理步驟清單。
選取 [ 篩選] 圖示,選取 [主要物件類型代碼] 資料行 [Sdk 訊息篩選],然後選取發生錯誤的數據表。
選取來自您所擁有的解決方案的 SDK 訊息處理步驟。
注意
若要檢視自定義 SDK 訊息處理步驟:
移至 [ 設定>解決方案],然後開啟方案。
選取 [SDK 訊息處理步驟]。 確認已選取值,如下所示: [元件類型 至 SDK 訊息處理步驟],以及 [檢視 為 全部]。
選取停用。
發行自訂
確認問題,如果未發生,問題在於自定義 SDK 訊息處理步驟。 解決此問題。
注意
如果發生此問題,請啟動您現在停用的 SDK 訊息處理步驟 ,並嘗試 停用自定義 JavaScript 或 停用自定義工作流程程式。
停用自定義 JavaScript
開啟發生錯誤的數據表表表體編輯器。 在此範例中,我們會選取數據表作為商機和預設解決方案表單。
在表單編輯器上選取 [表單屬性 ]。
[ 表單屬性 ] 對話框隨即開啟。
在 [事件] 索引標籤上,從 [事件] 下拉式清單中選取 [OnLoad] 控制件。
選擇來自您擁有之解決方案的自定義 JavaScript 檔案。
注意
若要檢視您的自訂 JavaScript:
- 移至 [ 設定>解決方案],然後開啟方案。
- 選取 [WebResources]。 確認值已選取為:[WebResources 的元件類型] 和 [檢視為全部]。
- 選取 [篩選 ] 圖示以啟用資料行的篩選選項。 選取 [類型],並將篩選條件設定為 [腳本] (JScript)。
選取編輯。 在此範例中,我們已選取要編輯的自定義 JavaScript 檔案 eg_opportunity 。
清除 [ 已啟用] 選項,然後選取 [ 確定]。
發行自訂
確認問題,如果未發生,問題與自定義 JavaScript 相同。 解決此問題。
注意
如果發生此問題,請啟用您立即停用的 JavaScript,並嘗試 停用自定義外掛程式 或 停用自定義工作流程程式。
停用自定義工作流程程式
移至設定>自訂>自訂系統。
選取 [ 進程]。 這些程式包括工作流程、商務程式流程和商務規則。
隨即顯示可用的進程清單。
選取 [篩選] 圖示,選取 [主要實體] 數據行,然後選取發生錯誤的數據表。
選擇來自您擁有之解決方案的程式。
注意
若要檢視您的自訂程式:
- 移至 [ 設定>解決方案],然後開啟方案。
- 選取 [ 進程]。 確認值已選取為:[行程] 的 [元件類型] 和 [檢視為全部]。
選取停用。
發行自訂
確認問題,如果未發生,則問題在於自定義進程。 解決此問題。
注意
如果發生此問題,請啟動您立即停用的進程,並嘗試停用自定義外掛程式或停用自定義 JavaScript。
問題 3 - 使用共用變數自定義外掛程式處理
徵兆
- 在商機、報價、訂單和發票數據表上建立和更新作業,會在其父數據表上觸發更新。
- 擷取商機、報價、訂單和發票數據表的詳細數據,會在內部觸發價格計算服務,然後觸發客戶所建立的自定義外掛程式。
解決方法
自定義外掛程式會在商機、報價、訂單和發票數據表上執行建立、更新和儲存作業。 這些數據表上的建立和更新作業會在內部觸發價格計算服務,然後更新其父數據表的相關價格相關欄位或屬性。
您可以使用內部價格計算服務或使用您自己的自定義外掛程式,來識別或區分商機、報價、訂單或發票數據表或父代商機、報價、訂單或發票數據表中的任何更新。 布爾值共用變數 InternalSystemPriceCalculationEvent
,可透過 IPluginExecutionContext
存取,可在外掛程式程式代碼中使用。 使用價格計算服務處理的任何建立或更新事件,都會將變數 InternalSystemPriceCalculationEvent
的值設定為 true
。 InternalSystemPriceCalculationEvent
的預設值為 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
}
}