Microsoft Dynamics NAV 2009 では、[項目ごとの台帳エントリの計算] オプションを使用して再評価仕訳帳で [インベントリ値の計算] 関数を実行すると、常に項目の既定のディメンションが使用されます

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

迅速に公開された記事は、Microsoft サポート organization内から直接情報を提供します。 ここに含まれる情報は、新しいトピックまたは一意のトピックに応答して作成されるか、または他のナレッジ ベース情報を補完することを目的としています。

この記事は、すべての国とすべての言語ロケールの Microsoft Dynamics NAV 2009 に適用されます。

現象

Microsoft Dynamics NAV 2009 の次のシナリオを検討してください。 再評価仕訳帳で [インベントリ値の計算] 関数を実行します。 これを行うと、
[在庫値の計算] ダイアログ ボックスの [計算] 領域の項目台帳エントリ。 このシナリオでは、Microsoft Dynamics NAV 2009 では常に項目の既定のディメンションが使用されます。 したがって、品目にディメンションが指定されておらず、ディメンションを含む購買発注を転記した場合、在庫価値の計算レポートを実行すると、品目台帳エントリ (ILE) ディメンションは無視されます。 項目にディメンションが指定されていて、ILE にディメンションが指定されていない場合、Microsoft Dynamics NAV は、すべての行の項目のディメンションを設定します。

解決策

修正プログラムの情報

サポートされている修正プログラムが 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. インベントリ値の計算レポート (5899) の OnAfterGetRecord トリガーのコードを次のように変更します。
    既存のコード

    ...
    CalculatePer::Item:
    
    // Delete the following line.
    BEGIN 
    
    InsertValJnlBuffer(
    ItemLedgEntry."Item No.",ItemLedgEntry."Variant Code",
    ItemLedgEntry."Location Code",RemQty,
    CalculateRemInvValue(ItemLedgEntry."Entry No.",ItemLedgEntry.Quantity,RemQty,
    IncludeExpectedCost AND NOT ItemLedgEntry."Completely Invoiced"));
    
    // Delete the following line.
    END;
    
    END;
    ...
    
    

    置換コード

    ...
    CalculatePer::Item:
    InsertValJnlBuffer(
    ItemLedgEntry."Item No.",ItemLedgEntry."Variant Code",
    ItemLedgEntry."Location Code",RemQty,
    CalculateRemInvValue(ItemLedgEntry."Entry No.",ItemLedgEntry.Quantity,RemQty,
    IncludeExpectedCost AND NOT ItemLedgEntry."Completely Invoiced"));
    END;
    ...
    
    
  2. [インベントリ値の計算] レポート (5899) の InsertItemJnlLine 関数のコードを次のように変更します。
    既存のコード

    ...
    // Delete the following line.
    IF CalculatePer = CalculatePer::"Item Ledger Entry" THEN 
    
    "Applies-to Entry" := ApplyToEntry2;
    VALIDATE(Quantity,Quantity2);
    ...
    
    

    置換コード

    ...
    // Add the following line.
    IF CalculatePer = CalculatePer::"Item Ledger Entry" THEN BEGIN 
    
    "Applies-to Entry" := ApplyToEntry2;
    
    // Add the following lines.
    CreateDimFromILE;
    END;
    // End of the added lines.
    
    VALIDATE(Quantity,Quantity2);
    ...
    
    
  3. インベントリ値の計算レポート (5899) で CreateDimFromILE 関数を作成します。 手順は次のとおりです。

    1. 関数の Local プロパティを [はい] に設定します。

    2. ローカル変数を追加し、次のように変数を指定します。

      • 名前:
         JnlLineDim
      • DataType:
        レコード
      • サブタイプ: 仕訳帳明細行ディメンション
    3. ローカル変数を追加し、次のように変数を指定します。

      • 名前:
         LedgEntryDim
      • DataType:
        レコード
      • サブタイプ: 台帳エントリディメンション
    4. ローカル変数を追加し、次のように変数を指定します。

      • **Name:**DimMgt
      • Datatype: Codeunit
      • **サブタイプ:**DimensionManagement
    5. CreateDimFromILE 関数に次のコードを追加します。
      JnlLineDim.SETRANGE("Table ID",DATABASE::"Item Journal Line");
      JnlLineDim.SETRANGE("ジャーナル テンプレート名",ItemJnlLine."ジャーナル テンプレート名");
      JnlLineDim.SETRANGE("Journal Batch Name",ItemJnlLine."ジャーナル バッチ名");
      JnlLineDim.SETRANGE("Journal Line No..",ItemJnlLine."行いいえ。);
      JnlLineDim.DELETEALL;
      LedgEntryDim.SETRANGE("Table ID",DATABASE::"Item Ledger Entry");
      LedgEntryDim.SETRANGE("Entry No..,ItemLedgEntry"エントリいいえ。);
      DimMgt.MoveLedgEntryDimToJnlLineDim(LedgEntryDim,JnlLineDim,DATABASE::"Item Journal Line",
      ItemJnlLine"ジャーナル テンプレート名",ItemJnlLine"ジャーナル バッチ名",ItemJnlLine"行いいえ.,0);
      JnlLineDim.SETCURRENTKEY("ディメンション コード","ディメンション値コード");
      JnlLineDim.SETRANGE("ディメンション コード",GLSetup."Global Dimension 1 Code");
      IF JnlLineDim.FINDFIRST THEN
        ItemJnlLine"ショートカット ディメンション 1 コード" := JnlLineDim"ディメンション値コード"
      ELSE
        ItemJnlLine"ショートカット ディメンション 1 コード" := '';
      JnlLineDim.SETRANGE("ディメンション コード",GLSetup."Global Dimension 2 Code");
      IF JnlLineDim.FINDFIRST THEN
        ItemJnlLine"ショートカット ディメンション 2 コード" := JnlLineDim"ディメンション値コード"
      ELSE
        ItemJnlLine"ショートカット ディメンション 2 コード" := '';

          

前提条件

この修正プログラムを適用するには、Microsoft Dynamics NAV 2009 Service Pack 1 または Microsoft Dynamics NAV 2009 がインストールされている必要があります。

アンインストール情報

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

状態

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

MICROSOFT および/またはそのサプライヤーは、この WEB サイト (「素材」) に掲載されているドキュメントおよび関連するグラフィックスに含まれる情報の適合性、信頼性、正確性について、いかなる目的でも表明または保証しません。

 THE MATERIALS MAY INCLUDE TECHNICAL INACCURACIES OR TYPOGRAPHICAL ERRORS AND MAY BE REVISED AT ANY TIME WITHOUT NOTICE. 適用法によって許容される最大限の範囲において、MICROSOFT および/またはそのサプライヤーは、明示、黙示、または法令に基づくすべての表明、保証、および条件 (タイトルの表明、保証、または条件、非侵害、満足のいく条件または品質、商品性および特定の目的への適合性を含むがこれに限定されない)を、素材に関して否認し、除外します。