Miklix

Dynamics 365 の拡張機能を使用して表示または編集メソッドを追加する

出版された: 2025年2月16日 11:55:40 UTC

この記事では、クラス拡張を使用して Dynamics 365 for Operations のテーブルとフォームに表示メソッドを追加する方法と、X++ コード例について説明します。


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

Add Display or Edit Method via Extension in Dynamics 365

Dynamics で表示または編集メソッドを使用することを計画する場合、通常はソリューションを別の方法で設計できないか検討する必要がありますが、場合によってはそれが最善の方法であることもあります。

Dynamics および Axapta の以前のバージョンでは、テーブルやフォームに表示メソッドや編集メソッドを作成するのは非常に簡単でしたが、最近 Dynamics 365 で初めて編集メソッドを作成する必要が生じたとき、その手順が多少異なることに気付きました。

有効なアプローチはいくつかあるようですが、私が最も良いと思うのは (直感性とコードの美しさの両方の点で) クラス拡張を使用することです。はい、クラス拡張を使用して、クラス以外の要素タイプ (この場合はテーブル) にメソッドを追加できますが、フォームにも同様に機能します。

まず、新しいクラスを作成します。任意の名前を付けることができますが、何らかの理由で「_Extension」という接尾辞を付ける必要があります。CustTable に表示メソッドを追加する必要がある場合、たとえば MyCustTable_Extension という名前を付けることができます。

何を拡張しているのかをシステムに知らせるために、クラスを ExtensionOf で装飾する必要があります。

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
}

これで、以前のバージョンの Dynamics でテーブルに直接実行していたのと同じように、このクラスに表示メソッドを実装できるようになりました。「this」はテーブルを参照するため、フィールドやその他のメソッドにアクセスできます。

たとえば、顧客の口座番号を返すだけの単純な (そしてまったく役に立たない) 表示メソッドを持つクラスは次のようになります。

[ExtensionOf(tableStr(CustTable))]
public final class MyCustTable_Extension
{
    public display CustAccount displayAccountNum()
    {
        ;

        return this.AccountNum;
    }
}

ここで、表示メソッドをフォーム (またはフォームを直接編集できない場合はフォーム拡張機能) に追加するには、フォームにフィールドを手動で追加し、正しいタイプ (この例では文字列) を使用する必要があります。

次に、コントロールで、DataSource を CustTable (または CustTable データ ソースの名前) に設定し、DataMethod を MyCustTable_Extension.displayAccountNum に設定します (クラス名を含めるようにしてください。そうしないと、コンパイラがメソッドを見つけることができません)。

これで完了です:-)

更新: フォームに表示メソッドを追加するときに拡張クラス名を含める必要はなくなりましたが、最初の公開時には必要でした。一部の読者がまだ古いバージョンを使用している場合に備えて、ここに情報を残しておきます。

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

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

著者について

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