ディメンションは、AddOn 支払が含まれている Microsoft Dynamics NAV のドイツ語バージョンの銀行口座調整で正しく処理されません

適用先
Dynamics NAV 2009 Service Pack 1 Dynamics NAV 2009 Microsoft Dynamics NAV 5.0 Microsoft Dynamics NAV 5.0 Service Pack 1

この記事は、ドイツ語 (de) 言語ロケールの Microsoft Dynamics NAV に適用されます。

現象

AddOn 支払を含むドイツ語バージョンの Microsoft Dynamics NAV で銀行口座調整を作成すると、ディメンションは正しく処理されません。 この問題は、ステートメント番号に 10 文字を超える文字が含まれている場合に発生します。
この問題は、次の製品で発生します。

  • Microsoft Dynamics NAV 2009 Service Pack 1 のドイツ語バージョン
  • Microsoft Dynamics NAV 2009 のドイツ語バージョン
  • Microsoft Dynamics NAV 5.0 Service Pack 1 のドイツ語バージョン
  • Microsoft Dynamics NAV 5.0 のドイツ語バージョン

解決策

修正プログラムの情報

サポートされている修正プログラムが Microsoft から入手できるようになりました。 ただし、この記事で説明されている問題を修正することのみを目的としています。 この特定の問題が発生しているシステムにのみ適用します。 この修正プログラムは、追加のテストを受け取る場合があります。 したがって、この問題の影響を大きく受けない場合は、次の Microsoft Dynamics NAV 2009 Service Pack またはこの修正プログラムを含む次の Microsoft Dynamics NAV バージョンを待つことをおすすめします。

注 特別なケースでは、Microsoft Dynamics および関連製品のテクニカル サポート プロフェッショナルが特定の更新プログラムによって問題が解決されると判断した場合、通常はサポート呼び出しに対して発生する料金が取り消されることがあります。 ただし、特定の更新プログラムの対象とならない追加の質問および問題については、通常のサポート料金が適用されます。

            
          

インストール情報

Microsoft は、明示または黙示の保証なしで、説明のみを目的としてプログラミング例を提供しています。 これには、商品性または特定の目的への適合性に関する暗黙の保証が含まれますが、これらに限定されません。 この記事では、デモンストレーションされているプログラミング言語と、プロシージャの作成とデバッグに使用されるツールについてよく理解していることを前提としています。 マイクロソフト サポート窓口では、特定のプロシージャの機能説明に関するご質問に対して支援いたしますが、本例を特定の目的を満たすために機能を追加したり、プロシージャを構築することは行いません。

注 この修正プログラムをインストールする前に、すべての Microsoft Navision クライアント ユーザーがシステムからログオフされていることを確認します。 これには、Microsoft Navision Application Services (NAS) クライアント ユーザーが含まれます。 この修正プログラムを実装するときにログオンする唯一のクライアント ユーザーである必要があります。

この修正プログラムを実装するには、開発者ライセンスが必要です。

[Windows ログイン] ウィンドウまたは [データベース ログイン] ウィンドウのユーザー アカウントに "SUPER" ロール ID を割り当てることをお勧めします。 ユーザー アカウントに "SUPER" ロール ID を割り当てることができない場合は、ユーザー アカウントに次のアクセス許可があることを確認する必要があります。

  • 変更するオブジェクトの [変更] アクセス許可。
  • システム オブジェクト ID 5210 オブジェクトとシステム オブジェクト ID 9015 オブジェクトの Execute アクセス許可。

                
メモ データ修復を実行する必要がない限り、データ ストアに対する権限は必要ありません。

コードの変更

メモ 運用環境のコンピューターに修正プログラムを適用する前に、制御された環境でコード修正を常にテストします。
この問題を解決するには、次の手順を実行します。

  1. Bank Acc. Reconciliation Line テーブル (274) の ValidateShortcutDimCode 関数にローカル変数を追加し、変数を次のように指定します。

    • Name:OffSetL
    • DataType:Integer
  2. Bank Acc. 調整ライン テーブル (274) の ValidateShortcutDimCode 関数のコードを次のように変更します。
    既存のコード

    ...
    DimMgt.ValidateDimValueCode(FieldNo,ShortcutDimCode);
    IF "Statement Line No." <> 0 THEN BEGIN
      DimMgt.SaveJnlLineDim(
        DATABASE::"Bank Acc. Reconciliation Line",COPYSTR("Bank Account No.",1,10),
        COPYSTR("Statement No.",1,10),"Statement Line No.",0,FieldNo,ShortcutDimCode);
      IF MODIFY THEN;
    END ELSE
      DimMgt.SaveTempDim(FieldNo,ShortcutDimCode);
    ...
    
    

    置換コード

    ...
    DimMgt.ValidateDimValueCode(FieldNo,ShortcutDimCode);
    IF "Statement Line No." <> 0 THEN BEGIN
      OffSetL := STRLEN("Statement No.")-9;
      IF OffSetL < 1 THEN
        OffSetL := 1;
      DimMgt.SaveJnlLineDim(
        DATABASE::"Bank Acc. Reconciliation Line",COPYSTR("Bank Account No.",1,10),
        COPYSTR("Statement No.",OffSetL,10),"Statement Line No.",0,FieldNo,ShortcutDimCode);
      IF MODIFY THEN;
    END ELSE
      DimMgt.SaveTempDim(FieldNo,ShortcutDimCode);
    ...
    
    
  3. Bank Acc. Reconciliation Line テーブル (274) の CreateDim 関数にローカル変数を追加し、次のように変数を指定します。

    • Name:OffSetL
    • DataType:Integer
  4. Bank Acc. 調整ライン テーブル (274) の CreateDim 関数のコードを次のように変更します。
    既存のコード 1

    ...
    SourceCodeSetup.GET;
    TableID[1] := Type1;
    No[1] := No1;
    ...
    
    

    置換コード 1

    ...
    OffsetL := STRLEN("Statement No.")-9;
    IF OffsetL < 1 THEN
      OffsetL := 1;
    SourceCodeSetup.GET;
    TableID[1] := Type1;
    No[1] := No1;
    ...
    
    

    既存のコード 2

    ...
        DATABASE::"Bank Acc. Reconciliation Line",COPYSTR("Bank Account No.",1,10),
        COPYSTR("Statement No.",1,10),"Statement Line No.",0,
        "Global Dimension 1 Code","Global Dimension 2 Code");
    ...
    
    

    置換コード 2

    ...
        DATABASE::"Bank Acc. Reconciliation Line",COPYSTR("Bank Account No.",1,10),
        COPYSTR("Statement No.",OffsetL,10),"Statement Line No.",0,
        "Global Dimension 1 Code","Global Dimension 2 Code");
    ...
    
    
  5. Bank Acc. Reconciliation Line テーブル (274) の ShowShortcutDimCode 関数にローカル変数を追加し、次のように変数を指定します。

    • Name:OffSetL
    • DataType:Integer
  6. Bank Acc. 調整ライン テーブル (274) の ShowShortcutDimCode 関数のコードを次のように変更します。
    既存のコード

    ...
    IF "Statement Line No." <> 0 THEN
      DimMgt.ShowJnlLineDim(
        DATABASE::"Bank Acc. Reconciliation Line",COPYSTR("Bank Account No.",1,10),
        COPYSTR("Statement No.",1,10),"Statement Line No.",0,ShortcutDimCode)
    ELSE
      DimMgt.ShowTempDim(ShortcutDimCode);
    ...
    
    

    置換コード

    ...
    OffSetL := STRLEN("Statement No.")-9;
    IF OffSetL < 1 THEN
      OffSetL := 1;
    IF "Statement Line No." <> 0 THEN
      DimMgt.ShowJnlLineDim(
        DATABASE::"Bank Acc. Reconciliation Line",COPYSTR("Bank Account No.",1,10),
        COPYSTR("Statement No.",OffSetL,10),"Statement Line No.",0,ShortcutDimCode)
    ELSE
      DimMgt.ShowTempDim(ShortcutDimCode);
    ...
    
    
  7. Bank Acc. Reconciliation Line テーブル (274) の UpdateShortcutdimCode 関数にローカル変数を追加し、次のように変数を指定します。

    • Name:OffSetL
    • DataType:Integer
  8. Bank Acc. 調整ライン テーブル (274) の UpdateShortcutdimCode 関数のコードを次のように変更します。
    既存のコード

    ...
    GLSetup.GET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR("Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR("Statement No.",1,10));
    JnlLineDim.SETRANGE("Journal Line No.","Statement Line No.");
    ...
    
    

    置換コード

    ...
    OffSetL := STRLEN("Statement No.")-9;
    IF OffSetL < 1 THEN
      OffSetL := 1; 
    GLSetup.GET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR("Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR("Statement No.",OffSetL,10));
    JnlLineDim.SETRANGE("Journal Line No.","Statement Line No.");
    ...
    
    
  9. [銀行勘定調整明細行] フォーム (380) の ShowDimension 関数にローカル変数を追加し、次のように変数を指定します。

    • Name:OffSetL
    • DataType:Integer
  10. [銀行勘定調整明細行] フォーム (380) の ShowDimension 関数のコードを次のように変更します。
    既存のコード

    ...
    // CLR
    JnlLineDim.RESET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR("Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR("Statement No.",1,10));
    JnlLineDim.SETRANGE("Journal Line No.","Statement Line No.");
    ...
    
    

    置換コード

    ...
    // CLR
    OffSetL := STRLEN("Statement No.")-9;
    IF OffSetL < 1 THEN
      OffSetL := 1;
    
    JnlLineDim.RESET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR("Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR("Statement No.",OffSetL,10));
    JnlLineDim.SETRANGE("Journal Line No.","Statement Line No.");
    ...
    
    
  11. [銀行勘定調整明細行] ページ (380) の ShowDimension 関数にローカル変数を追加し、次のように変数を指定します。

    • Name:OffSetL
    • DataType:Integer
  12. [銀行勘定調整明細行] ページ (380) の ShowDimension 関数のコードを次のように変更します。
    既存のコード

    ...
    // CLR
    JnlLineDim.RESET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR("Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR("Statement No.",1,10));
    JnlLineDim.SETRANGE("Journal Line No.","Statement Line No.");
    ...
    
    

    置換コード

    ...
    // CLR
    OffSetL := STRLEN("Statement No.")-9;
    IF OffSetL < 1 THEN
      OffSetL := 1;
    JnlLineDim.RESET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR("Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR("Statement No.",OffSetL,10));
    JnlLineDim.SETRANGE("Journal Line No.","Statement Line No.");
    ...
    
    
  13. Bank Acc. Reconciliation Post codeunit (370) の OnRun トリガーにローカル変数を追加し、次のように変数を指定します。

    • Name:OffSetL
    • DataType:Integer
  14. Bank Acc. Reconciliation Post codeunit (370) の OnRun トリガーのコードを次のように変更します。
    既存のコード

    ...
        BankAccStmtLine.INSERT;
        // CLR
        AutocreateBankAccount(BankAccReconLine);
        DimMgt.DeleteDocDim(
          DATABASE::"Bank Acc. Reconciliation Line",0,
          BankAccStmtLine."Statement No.",BankAccStmtLine."Statement Line No.");
        // CLR
      UNTIL BankAccReconLine.NEXT = 0;
    ...
    
    

    置換コード

    ...
        BankAccStmtLine.INSERT;
        // CLR
        AutocreateBankAccount(BankAccReconLine);
        OffSetL := STRLEN(BankAccReconLine."Statement No.")-9;
        IF OffSetL < 1 THEN
          OffSetL := 1;
        DimMgt.DeleteDocDim(
          DATABASE::"Bank Acc. Reconciliation Line",0,
          COPYSTR(BankAccStmtLine."Statement No.",OffSetL,10),BankAccStmtLine."Statement Line No.");
        // CLR
      UNTIL BankAccReconLine.NEXT = 0;
    ...
    
    
  15. 支払い Gen の PostGLAcc 関数にローカル変数を追加します。 Jnl.-Post Line codeunit (5001910)、変数を次のように指定します。

    • Name:OffSetL
    • DataType:Integer
  16. 支払い Gen の PostGLAcc 関数のコードを変更します。 Jnl.-Post Line codeunit (5001910) を次に示します。
    既存のコード

    ...
      IF NOT TempJnlLineDim.INSERT THEN
        TempJnlLineDim.MODIFY;
    END;
    JnlLineDim.RESET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR(BankAccRecLine."Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR(BankAccRecLine."Statement No.",1,10));
    JnlLineDim.SETRANGE("Journal Line No.",BankAccRecLine."Statement Line No.");
    ...
    
    

    置換コード

    ...
      IF NOT TempJnlLineDim.INSERT THEN
        TempJnlLineDim.MODIFY;
    END;
    OffSetL := STRLEN(BankAccRecLine."Statement No.")-9;
    IF OffSetL < 1 THEN
      OffSetL := 1;
    JnlLineDim.RESET;
    JnlLineDim.SETRANGE("Table ID",DATABASE::"Bank Acc. Reconciliation Line");
    JnlLineDim.SETRANGE("Journal Template Name",COPYSTR(BankAccRecLine."Bank Account No.",1,10));
    JnlLineDim.SETRANGE("Journal Batch Name",COPYSTR(BankAccRecLine."Statement No.",OffSetL,10));
    JnlLineDim.SETRANGE("Journal Line No.",BankAccRecLine."Statement Line No.");
    ...
    
    

          

前提条件

この修正プログラムを適用するには、次のいずれかの製品がインストールされている必要があります。

  • AddOn 支払が含まれている Microsoft Dynamics NAV 2009 Service Pack 1 のドイツ語バージョン
  • AddOn 支払が含まれているドイツ語版の Microsoft Dynamics NAV 2009
  • AddOn 支払が含まれている Microsoft Dynamics NAV 5.0 Service Pack 1 のドイツ語バージョン
  • AddOn 支払が含まれている Microsoft Dynamics NAV 5.0 のドイツ語バージョン

アンインストール情報

この修正プログラムを削除することはできません。

状態

Microsoft は、これが "適用対象" セクションに記載されている Microsoft 製品の問題であることを確認しました。

注: この資料は、"迅速な公開" を目的としてマイクロソフト サポート組織により直接作成されたものです。 ここに含まれる情報は、新しい問題に対応するため、そのままの状態で提供されます。 情報を迅速に公開するため、この資料には誤植などが含まれる可能性があり、また、予告なく改訂される場合があります。 その他の注意事項については、使用条件を参照してください。