Applies ToDynamics NAV 2009

本文適用於 Microsoft 動態航行點的所有國家/地區和所有的語言地區設定。

狀況

假設您啟用 [Microsoft 動態 NAV.中的 [行銷與款的安裝程式] 對話方塊中確切的成本可還原變更設定在此情況下,當您在部分的銷售傳回時,執行複製文件函式會收到下列錯誤訊息︰

銷售運送Shipment_NoLine_No的行號不會複製,因為已經手動套用完整數量上的已張貼的文件行。

下列產品中,就會發生這個問題︰

  • Microsoft 動態航行點 2009 R2

  • Microsoft 動態航行點 2009 Service Pack 1

解決方案

Hotfix 資訊

已經可以從 Microsoft 取得支援的 hotfix。不過,它只被用來修正本文所述的問題。它只適用於發生此特定問題的系統上。此 hotfix 可能會接受其他測試。因此,如果此問題不會嚴重影響,我們建議您等候下一步的 Microsoft 動態航行點 2009 service pack 或包含此 hotfix 的下一個 Microsoft 動態航行點版本。注意 在特殊的情況下,通常會支援呼叫可能已被取消如果技術支援專業人員的 Microsoft 動態及相關的產品所產生的費用會決定某特定更新程式可以解決您的問題。收取支援費用會套用,如果有其他支援問題是,不能限定的特定更新程式。

安裝資訊

Microsoft 會提供程式設計範例僅供說明,而不做任何明示或默示的保證。這包括,但不限於適售性或適合某特定用途之默示擔保責任。本文假設您已相當熟悉使用的我們所示範的程式設計語言以及建立和偵錯程序所使用的工具。Microsoft 技術支援工程師可以協助解釋特定程序的功能。不過,它們不會修改這些範例以提供附加功能或建構程序來滿足您特定需求。注意套用此 hotfix 之前,請確認所有的 Microsoft Navision 用戶端使用者會登出系統。這包括 Microsoft Navision 應用程式服務 (NAS) 用戶端的使用者。您應該是唯一的用戶端使用者已登入,當您實作此 hotfix。若要實作此 hotfix,您必須有開發人員授權。我們建議您在 Windows 登入] 視窗中的色彩,或資料庫登入] 視窗中的使用者帳戶被指派 「 進階 」 的角色識別碼。如果使用者帳戶不能指派為 「 超級 」 的角色識別碼,您必須確認使用者帳戶具有下列權限︰

  • 您將會變更物件的 [修改] 權限。

  • 執行權限的系統物件 ID 5210物件和系統物件 ID 9015物件。

注意您沒有擁有資料存放區的權限,除非您需要執行資料修復。

程式碼變更

注意永遠測試程式碼修正在受控制的環境中才能套用到實際執行電腦的修正程式。若要解決這個問題,請依照下列步驟執行:

  1. 刪除下列的全域變數中複製文件 Mgt.codeunit (6620):

    Text030@1025 : TextConst 'ENU=%1 %2, line no. %3 is not copied because the full quantity on the posted document line is already manually applied.';Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.';SomeAreFixed@1045 : Boolean;CopyDimensions@1050 : Boolean;
  2. 複製文件 Mgt.codeunit (6620) 中,加入下列的全域變數︰

    Text030@1025 : TextConst 'ENU=One or more return document lines were not copied. This is because quantities on the posted document line are already fully or partially applied and therefore the Exact Cost Reversing Link could not be created.';Text031@1038 : TextConst 'ENU=Return document line contains only the original document line quantity, that is not already manually applied.'; SomeAreFixed@1045 : Boolean;CopyDimensions@1050 : Boolean;WarningDone@1051 : Boolean;LinesApplied@1052 : Boolean;
  3. 變更複製文件 Mgt.codeunit (6620) 的SplitPstdSalesLinesPerILE函式中的程式碼如下所示︰現有的程式碼 1

    ...            IF "Shipped Qty. Not Returned" = 0 THEN// Delete the following lines.             ERROR(Text030,"Document Type","Document No.","Document Line No.");           FromSalesLineBuf := FromSalesLine;            IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN             IF FromSalesLine."Quantity (Base)" > 0 THEN               FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"             ELSE               FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";             IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN               FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"             ELSE               FromSalesLineBuf.Quantity :=                 ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);           END;           FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";           FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;           FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";           FromSalesLineBuf."Line No." := NextLineNo;           NextLineNo := NextLineNo + 1;           FromSalesLineBuf."Document No." := "Document No.";           IF GetSalesDocType(ItemLedgEntry) IN              [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]           THEN             FromSalesLineBuf."Shipment Line No." := 1;           IF NOT FromShptOrRcpt THEN             UpdateRevSalesLineAmount(               FromSalesLineBuf,OrgQtyBase,               FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");           FromSalesLineBuf.INSERT;// End of the lines.          UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);...

    取代程式碼 1

    ...            IF "Shipped Qty. Not Returned" = 0 THEN// Add the following lines.             LinesApplied := TRUE;           IF "Shipped Qty. Not Returned" < 0 THEN BEGIN             FromSalesLineBuf := FromSalesLine;             IF -"Shipped Qty. Not Returned" < ABS(FromSalesLine."Quantity (Base)") THEN BEGIN               IF FromSalesLine."Quantity (Base)" > 0 THEN                 FromSalesLineBuf."Quantity (Base)" := -"Shipped Qty. Not Returned"               ELSE                 FromSalesLineBuf."Quantity (Base)" := "Shipped Qty. Not Returned";               IF FromSalesLineBuf."Qty. per Unit of Measure" = 0 THEN                 FromSalesLineBuf.Quantity := FromSalesLineBuf."Quantity (Base)"               ELSE                 FromSalesLineBuf.Quantity :=                   ROUND(FromSalesLineBuf."Quantity (Base)" / FromSalesLineBuf."Qty. per Unit of Measure",0.00001);             END;             FromSalesLine."Quantity (Base)" := FromSalesLine."Quantity (Base)" - FromSalesLineBuf."Quantity (Base)";             FromSalesLine.Quantity := FromSalesLine.Quantity - FromSalesLineBuf.Quantity;             FromSalesLineBuf."Appl.-from Item Entry" := "Entry No.";             FromSalesLineBuf."Line No." := NextLineNo;             NextLineNo := NextLineNo + 1;             FromSalesLineBuf."Document No." := "Document No.";             IF GetSalesDocType(ItemLedgEntry) IN                [FromSalesLineBuf."Document Type"::Order,FromSalesLineBuf."Document Type"::"Return Order"]             THEN               FromSalesLineBuf."Shipment Line No." := 1;             IF NOT FromShptOrRcpt THEN               UpdateRevSalesLineAmount(                 FromSalesLineBuf,OrgQtyBase,                 FromSalesHeader."Prices Including VAT",ToSalesHeader."Prices Including VAT");             FromSalesLineBuf.INSERT;           END;// End of the lines.          UNTIL (NEXT = 0) OR (FromSalesLine."Quantity (Base)" = 0);...

    現有的程式碼 2

    ...            MissingExCostRevLink := TRUE;        END;...

    取代程式碼 2

    ...            MissingExCostRevLink := TRUE;// Add the following line.         CheckUnappliedLines(LinesApplied,MissingExCostRevLink);        END;...
  4. 變更複製文件 Mgt.codeunit (6620) 的SplitPstdPurchLinesPerILE函式中的程式碼如下所示︰現有的程式碼 1

    ...        ApplyRec@1011 : Record 339;// Delete the following line.       AllAreFixed@1012 : Boolean;      BEGIN...

    取代程式碼 1

    ...        ApplyRec@1011 : Record 339;      BEGIN...

    現有的程式碼 2

    ...          REPEAT// Delete the following lines.           IF "Remaining Quantity" = 0 THEN BEGIN             AllAreFixed := TRUE;             ApplyRec.AppliedOutbndEntryExists("Entry No.",FALSE);             IF ApplyRec.FINDFIRST THEN               REPEAT                 AllAreFixed := AllAreFixed AND ApplyRec.Fixed;               UNTIL ApplyRec.NEXT = 0;             IF AllAreFixed THEN               ERROR(Text030,"Document Type","Document No.","Document Line No.");           END;// End of the lines.            IF NOT ApplyFully THEN BEGIN...

    取代程式碼 2

    ...          REPEAT            IF NOT ApplyFully THEN BEGIN...

    現有的程式碼 3

    ...        END;...

    取代程式碼 3

    ...        END;// Add the following line.       CheckUnappliedLines(SkippedLine,MissingExCostRevLink);...
  5. 變更複製文件 Mgt.codeunit (6620) 的CheckUnappliedLines函式中的程式碼如下所示︰現有的程式碼

    ...      BEGIN...

    取代程式碼

    ...// Add the following lines.     LOCAL PROCEDURE CheckUnappliedLines@86(SkippedLine@1000 : Boolean;VAR MissingExCostRevLink@1001 : Boolean);     BEGIN       IF SkippedLine AND MissingExCostRevLink THEN BEGIN         IF NOT WarningDone THEN           MESSAGE(Text030);         MissingExCostRevLink := FALSE;         WarningDone := TRUE;       END;     END;// End of the lines.      BEGIN...

先決條件

您必須具備套用此 hotfix 之後安裝下列產品的其中一個︰

  • Microsoft 動態航行點 2009 R2

  • Microsoft 動態航行點 2009 Service Pack 1

移除資訊

您無法移除此 hotfix。

狀態

Microsoft 已確認這是<套用>一節所列出的 Microsoft 產品的問題。

注意這是直接從 Microsoft 支援組織內建立的「快速發行」文件。本文件所包含的現狀資訊是針對新興問題的回應。為縮短使其可用的時程,資料可能會包含印刷錯誤,且可能會隨時進行修改而不另行通知。如其他考量,請參閱 「使用規定」。

需要更多協助嗎?

想要其他選項嗎?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。