1

AX 2012 AOT でカスタム テーブルを使用するカスタム ユーティリティがあります。自分のテーブルに ID フィールドを設定したいのですが、これには番号シーケンスを使用でき、番号シーケンスを自分のテーブルにマップして、取得できるようにすることができます。行挿入時の新しい一意の ID。番号シーケンスを生成しようとすると、.net ビジネス コネクタを使用してダイナミクス ax 2012 の外部で動作しているカスタム テーブルとユーティリティにこれが必要なため、AREA とモジュールの情報が要求されます。ウィザードに入力する内容がわかりません。

4

2 に答える 2

4

NumberSeqModule enumを使用し、それにカスタムモジュールenum値を追加する方法を見たことがあるでしょう。次に、通常、NumberSeqApplicationModuleクラスを拡張するクラスを作成し、番号シーケンス参照を使用してデータ型にリンクされた番号シーケンスをロードします。

これは「ベストプラクティスの方法」ですが、今やりたいことには少しやり過ぎです。だからここにあなたができることがあります:

使用しているテーブルの挿入メソッドを上書きするだけで済みます。そして、NumberSeqクラスでnewGetNumFromCodeコンストラクターを使用できます。

public static NumberSeq newGetNumFromCode(
    NumberSequenceCode  _numberSequenceCode,
    NumberSeqScope      _scope = NumberSeqScopeFactory::createDefaultScope(),
    boolean             _makeDecisionLater           = false,
    boolean             _dontThrowOnMissingRefSetUp  = false,
    SysLastValue        _nextNumSeq = null,
    boolean             _fillNextNumSeq = false)
{
    return NumberSeq::newGetNumFromId(
            NumberSequenceTable::findByNaturalKey(_numberSequenceCode, _scope.getId()).RecId,
            _makeDecisionLater,
            _dontThrowOnMissingRefSetUp,
            _nextNumSeq,
            _fillNextNumSeq);
}

したがって、これを使用するには、Dynamics Ax内に新しい番号シーケンスを作成し(組織管理|番号シーケンス|番号シーケンス)、番号シーケンスコードを覚えておく必要があります。

次に、テーブルの挿入方法で、以下を実行できます:(例は担当者テーブルから取得されます)

if (!this.ContactPersonId)
{
    this.ContactPersonId = NumberSeq::newGetNum(CompanyInfo::numRefContactPersonId()).num();
}

これにより、レコードが挿入されるときにIDも入力されるようになります。

于 2012-12-14T16:18:48.873 に答える