Miklix

Dynamics 365 の X++ コードから財務分析コード値を更新する

出版された: 2025年2月16日 12:01:17 UTC

この記事では、コード例を含め、Dynamics 365 の X++ コードから財務分析コード値を更新する方法について説明します。


このページは、できるだけ多くの人がアクセスできるように、英語から機械翻訳されたものです。残念ながら、機械翻訳はまだ完全な技術ではないため、エラーが発生する可能性があります。もしよろしければ、こちらでオリジナルの英語版をご覧ください:

Update Financial Dimension Value from X++ Code in Dynamics 365

この投稿の情報は Dynamics 365 に基づいています。Dynamics AX 2012 でも動作するはずですが、明示的にテストしていません。

最近、何らかのフォーム ロジックに基づいて単一の財務ディメンションの値を更新するというタスクが与えられました。

ご存知のとおり、Dynamics AX 2012 の財務分析コードは個別のテーブルに保存され、通常は DefaultDimension フィールドの RecId を通じて参照されます。

ディメンションを処理するためのフレームワーク全体はやや複雑で、私がそれほど頻繁に扱うものではないためか、ドキュメントを再度読み直す必要があることがよくあります。

とにかく、既存のディメンション セット内のフィールドを更新することは頻繁に発生するので、私のお気に入りのレシピを書いてみようと思いました ;-)


静的ユーティリティ メソッドは次のようになります。

public static DimensionDefault updateDimension( DimensionDefault    _defaultDimension,
                                                Name                _dimensionName,
                                                DimensionValue      _dimensionValue)
{
    DimensionAttribute                  dimAttribute;
    DimensionAttributeValue             dimAttributeValue;
    DimensionAttributeValueSetStorage   dimStorage;
    DimensionDefault                    ret;
    ;

    ret             = _defaultDimension;

    ttsbegin;

    dimStorage      = DimensionAttributeValueSetStorage::find(_defaultDimension);
    dimAttribute    = DimensionAttribute::findByName(_dimensionName);

    if (_dimensionValue)
    {
        dimAttributeValue = DimensionAttributeValue::findByDimensionAttributeAndValue(  dimAttribute,
                                                                                        _dimensionValue,
                                                                                        true,
                                                                                        true);
        dimStorage.addItem(dimAttributeValue);
    }
    else
    {
        dimStorage.removeDimensionAttribute(dimAttribute.RecId);
    }

    ret = dimStorage.save();

    ttscommit;

    return ret;
}

このメソッドは新しい (または同じ) DimensionDefault RecId を返すため、レコードのディメンション値を更新する場合 (おそらく最も一般的なシナリオ)、そのレコードのディメンション フィールドを新しい値で更新する必要があります。

BlueskyでシェアFacebookでシェアLinkedInでシェアTumblrでシェアXでシェアLinkedInでシェアPinterest にピン留めする

ミッケル・バン・クリステンセン

著者について

ミッケル・バン・クリステンセン
ミッケルはmiklix.comの開発者でありオーナーです。プロのコンピューター・プログラマー/ソフトウェア開発者として20年以上の経験を持ち、現在はヨーロッパの大手IT企業に常勤している。ブログを書いていないときは、さまざまな興味、趣味、活動に余暇を費やしている。