Miklix

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

出版された: 2025年2月16日 11:55:40 UTC
最終更新日 2026年1月12日 8:57:21 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企業に常勤している。ブログを書いていないときは、さまざまな興味、趣味、活動に余暇を費やしている。