Microsoft Dynamics NAV 在使用 Dimensions-Multiple 功能時,不會在變更日誌中記錄任何變更

套用到
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009 Microsoft Dynamics NAV 5.0 Service Pack 1

快速發佈文章直接提供來自 MICROSOFT 支援組織內部的資訊。 本文所含資訊是針對新興或獨特主題所創建,或旨在補充其他知識庫資訊。

本文適用於所有國家及語言地區的 Microsoft Dynamics NAV。

症狀

假設您啟用了 「變更日誌啟用」 功能,以記錄 Microsoft Dynamics NAV 2009 中預設維度表中所有欄位 (352) 的插入操作、修改操作及取消操作。 當你使用 Dimensions-Multible 功能為一組帳目類別指定預設尺寸與尺寸值時,Microsoft Dynamics NAV 不會在變更日誌中記錄變更。

此問題發生於以下產品:

  • Microsoft Dynamics NAV 2009 Service Pack 1
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 Service Pack 1

解決方式

Hotfix 資訊

Microsoft 現在已經支援熱修補程式。 然而,這僅是為了修正本文所描述的問題。 只應用在遇到這個特定問題的系統上。 此熱修補可能會進行額外測試。 因此,如果您未受到此問題嚴重影響,我們建議您等待下一個 Microsoft Dynamics NAV 2009 服務包或包含此熱修補的 Microsoft Dynamics NAV 版本。

注意:在特殊情況下,若 Microsoft Dynamics 及相關產品的技術支援專業人員判斷特定更新能解決您的問題,通常因支援電話而產生的費用可能會被取消。 一般來說,如果有所描述之特定更新無法解決的其他支援問題,才會收取支援費用。

            
          

安裝資訊

Microsoft 僅提供圖例的程式設計範例,不含明示或暗示的擔保。 這包括 (但不限於) 適用于特定目的之可操作性或適用性的暗示擔保。 本文假設您熟悉正在示範的程式設計語言,以及用來建立和進行程式偵錯工具的工具。 Microsoft 技術支援工程師可以協助說明特定程序的功能,但不會修改這些範例以提供附加功能或建構程序來滿足您的特定需求。

注意:安裝此熱修補程式前,請確認所有 Microsoft Navision 用戶端使用者都已登出系統。 這包括Microsoft Navision 應用服務 (NAS) 用戶端使用者。 當你實施這個熱修補時,應該只有你一個登入的客戶端使用者。

要實作這個熱修補,你必須擁有開發者授權。

我們建議在 Windows 登入視窗或資料庫登入視窗中,將使用者帳號分配「SUPER」角色 ID。 若使用者帳號無法被指派「SUPER」角色 ID,您必須驗證該帳號擁有以下權限:

  • 你要更改的物件的修改權限。
  • 系統物件 ID 5210 的執行權限,以及系統物件 ID 9015 的執行權限。

                
注意:除非你必須進行資料修復,否則你不必擁有資料儲存的權利。

法規變更

注意:在將修正程式套用到生產電腦之前,務必在受控環境中測試修正。
要套用這個熱修正,請依照以下步驟操作:

  1. 在 SetCommonDefaultDim 觸發器中以「Default Dimensions-Multiple」 (542) 形式新增以下本地變數,然後指定以下變數:

    • 名稱:ChangeLogMgt
    • 資料型態: 編碼單元
    • 子類型變更日誌管理
  2. 在 SetCommonDefaultDim 觸發器中以「Default Dimensions-Multiple」 (542) 形式新增以下本地變數,然後指定以下變數:

    • 名稱:RecRef
    • DataTypeRecordRef
  3. 在 SetCommonDefaultDim 觸發器中以「Default Dimensions-Multiple」 (542) 形式新增以下本地變數,然後指定以下變數:

    • 名稱:xRecRef
    • DataTypeRecordRef
  4. 在 SetCommonDefaultDim 觸發器中,將 54) 2 (Default Dimensions-Multiple 格式中的程式碼更改如下:
    現有程式碼

    ...
    SETRANGE(
    "Multi Selection Action","Multi Selection Action"::Delete);
    IF FIND('-') THEN
    REPEAT
    IF TempDefaultDim3.FIND('-') THEN
    REPEAT
    IF DefaultDim.GET(
    TempDefaultDim3."Table ID",TempDefaultDim3."No.","Dimension Code")
    
    // Delete the following line.
    THEN
    
    DefaultDim.DELETE(TRUE);
    UNTIL TempDefaultDim3.NEXT = 0;
    UNTIL NEXT = 0;
    SETRANGE(
    "Multi Selection Action","Multi Selection Action"::Change);
    IF FIND('-') THEN
    REPEAT
    IF TempDefaultDim3.FIND('-') THEN
    REPEAT
    IF DefaultDim.GET(
    TempDefaultDim3."Table ID",TempDefaultDim3."No.","Dimension Code")
    THEN BEGIN
    DefaultDim."Dimension Code" := "Dimension Code";
    DefaultDim."Dimension Value Code" := "Dimension Value Code";
    DefaultDim."Value Posting" := "Value Posting";
    DefaultDim.MODIFY(TRUE);
    END ELSE BEGIN
    DefaultDim.INIT;
    DefaultDim."Table ID" := TempDefaultDim3."Table ID";
    DefaultDim."No." := TempDefaultDim3."No.";
    DefaultDim."Dimension Code" := "Dimension Code";
    DefaultDim."Dimension Value Code" := "Dimension Value Code";
    DefaultDim."Value Posting" := "Value Posting";
    DefaultDim.INSERT(TRUE);
    END;
    UNTIL TempDefaultDim3.NEXT = 0;
    UNTIL NEXT = 0;
    ...
    
    

    替換代碼

    ...
    SETRANGE(
    "Multi Selection Action","Multi Selection Action"::Delete);
    IF FIND('-') THEN
    REPEAT
    IF TempDefaultDim3.FIND('-') THEN
    REPEAT
    IF DefaultDim.GET(
    TempDefaultDim3."Table ID",TempDefaultDim3."No.","Dimension Code")
    
    // Add the following lines.
    THEN BEGIN
    xRecRef.GETTABLE(DefaultDim);
    
    DefaultDim.DELETE(TRUE);
    
    // Add the following lines.
    ChangeLogMgt.LogDeletion(xRecRef);
    END;
    
    UNTIL TempDefaultDim3.NEXT = 0;
    UNTIL NEXT = 0;
    SETRANGE(
    "Multi Selection Action","Multi Selection Action"::Change);
    IF FIND('-') THEN
    REPEAT
    IF TempDefaultDim3.FIND('-') THEN
    REPEAT
    IF DefaultDim.GET(
    TempDefaultDim3."Table ID",TempDefaultDim3."No.","Dimension Code")
    THEN BEGIN
    
    // Add the following line.
    xRecRef.GETTABLE(DefaultDim);
    
    DefaultDim."Dimension Code" := "Dimension Code";
    DefaultDim."Dimension Value Code" := "Dimension Value Code";
    DefaultDim."Value Posting" := "Value Posting";
    DefaultDim.MODIFY(TRUE);
    
    // Add the following lines.
    RecRef.GETTABLE(DefaultDim); 
    ChangeLogMgt.LogModification(RecRef,xRecRef); 
    
    END ELSE BEGIN
    DefaultDim.INIT;
    DefaultDim."Table ID" := TempDefaultDim3."Table ID";
    DefaultDim."No." := TempDefaultDim3."No.";
    DefaultDim."Dimension Code" := "Dimension Code";
    DefaultDim."Dimension Value Code" := "Dimension Value Code";
    DefaultDim."Value Posting" := "Value Posting";
    DefaultDim.INSERT(TRUE);
    
    // Add the following lines.
    RecRef.GETTABLE(DefaultDim); 
    ChangeLogMgt.LogInsertion(RecRef);
    
    END;
    UNTIL TempDefaultDim3.NEXT = 0;
    UNTIL NEXT = 0;
    ...
    
    

先決條件

您必須安裝以下其中一項產品才能套用此熱修補:

  • Microsoft Dynamics NAV 2009 Service Pack 1
  • Microsoft Dynamics NAV 2009
  • Microsoft Dynamics NAV 5.0 Service Pack 1

重新啟動資訊

套用這個代碼修正後,你不需要重啟電腦。

移除資訊

你無法移除這個熱修正。

狀態

Microsoft 已確認這是「適用對象」一節中列出的 Microsoft 產品中的問題。

MICROSOFT及/或其供應商對本網站所發布文件及相關圖像中所載資訊的適用性、可靠性或準確性 (「資料」) 不作任何保證或保證。

資料可能包含技術性不準確或印刷錯誤,且可隨時修訂,恕不另行通知。 在適用法律允許的最大範圍內,MICROSOFT 及/或其供應商否認並排除所有明示、默示或法定的陳述、保證及條件,包括但不限於所有權、非侵權、令人滿意的狀態或品質、適銷性及特定用途的適用性。