1

フォームJournal Voucher内 (AR>Journal> PaymentJournal> ボタンをクリックLines)。x++ コードから新しいレコードを作成したいと考えています。

を押したときに呼び出されるフォーム viz create()、initvalue()、ledgerJournalEngine_custPayment... などのメソッドはほとんど見たことがありませんctrl+n。これらのメソッドを x++ コードで使用して、標準機能を使用してレコードを作成する方法。

助けてください。

4

3 に答える 3

3

詳細を説明する前に、ジャーナル機能を拡張する独自のカスタム フォームを作成しようとしていると思いました。ツールを作成しようとしているだけの場合は、新しいSettlement Using Cust Groupボタンを作成できます。クリックされたイベントで、トランザクション マーキング フォームを呼び出すか、使用するトランザクションを取得するために行うことを何でも呼び出します。次に、次のようなものを入れます。

void clicked()
{
    ;

    element.lock();

    super();

    // Put your code here to call the open transaction editing code

    // CREATE THIS CUSTOM METHOD on C\LedgerJournalEngine_CustPayment\settleTransCustGroup
    ledgerJournalEngine.settleTransCustGroup(ledgerJournalTable);

    ledgerJournalTrans_ds.active();
    ledgerJournalTrans_ds.reread();
    ledgerJournalTrans_ds.executeQuery();

    //recalculate balances
    ledgerJournalEngine.newJournalActive(ledgerJournalTable, true);
    element.firstField();
    element.unLock();
}

次に、作成した新しいメソッド (名前は ) で、これに似たもの (エンジン クラスで作成されたカスタム メソッド)settleTransCustGroupのモデリングでレコードをループできます。testLedgerJournalSpecTrans

void settleTransCustGroup(LedgerJournalTable    _ledgerJournalTable)
{
    LedgerJournalTrans      ledgerJournalTrans;
    ;
    // Turn this stuff into a loop and default whatever else you need
    ledgerJournalTrans.clear();
    ledgerJournalTrans.initValue();
    ledgerJournalTrans.AccountNum = '100003';
    ledgerJournalTrans.AmountCurCredit = 10;
    this.initValue(ledgerJournalTrans);
    ledgerJournalTrans.insert();
    this.write(ledgerJournalTrans);

    ledgerJournalTrans.clear();
    ledgerJournalTrans.initValue();
    ledgerJournalTrans.AccountNum = '100005';
    ledgerJournalTrans.AmountCurCredit = 15;
    this.initValue(ledgerJournalTrans);
    ledgerJournalTrans.insert();
    this.write(ledgerJournalTrans);
}
于 2013-08-13T22:17:18.980 に答える
1

ここで他のコメントで引用されているフレームワークから標準機能を呼び出す魔法のような方法はありません。元帳の種類 (会計、在庫、注文、支払いなど) ごとに、行を作成して初期化する方法が異なり、仕訳帳を適切に転記する場合は、この特定の方法で作業する必要があります。

Google には、ほぼすべてのタイプのジャーナル トランザクションを挿入する X++​​ コードの例がたくさんあります。簡単ではありませんが、少なくとも常にほとんど同じコードであり、簡単に再利用できます。

于 2013-08-13T18:23:00.750 に答える
1

通常、X++ コードは次のようになります。

static void InsertRecord(Args _args)
{
    LedgerJournalTrans  ledgerJournalTrans;
    ;

    ledgerJournalTrans.AccountNum = "10000";
    ledgerJournalTrans.AmountCurCredit = 50.64;
    ledgerJournalTrans.AccountType = LedgerJournalACType::Ledger;
    ledgerJournalTrans.insert();
}

必要に応じてフィールドと値を置き換えることができます。いずれかのフィールドが欠落している場合、情報ログにエラーが表示されるため (たとえば、上記を実行すると、「通貨コードを指定する必要があります」というエラーが表示されます)、すべての必須フィールドが対処されていることを確認してください。

ほとんどの場合、ledgerJournalTrans.initValue();値を割り当てる前に呼び出して、既定の AX 値をレコードに事前入力することもできます。これは、フォーム上で Ctrl + N を使用したときに表示されるものと同じになると思います。上記の例では、そうすると通貨コードが入力され、レコードが正しく保存されます (少なくとも私たちのシステムでは)。

于 2013-08-12T12:00:43.787 に答える