1

Worker を削除しても、Person レコードは DirPerson、DirPersonName、DirPartyTable (およびその他の関連テーブル) にまだ存在することに気付きました。

これは、Ax2012 の DirParty エンジン全体の複雑さが原因だと思います。おそらく、データを含む可能性のある関連テーブルが親レコードなしで残されないようにするためです。しかし、なぜ DirParty クラスに、パーティを削除できるかどうかをチェックする関数があるのですか (DirParty:: canDeleteParty)。また、DirParty::autoDeleteParty メソッドを使用してみましたが、成功しませんでした。DirPartyTable からは何も削除されません。

例:

static void myLittleDirPartyDeleteJob(Args _args)
{
    DirPartyTable       dirPartyTable;
    DirPerson           dirPerson;
    Common              partyRecord;
    DirParty            dirPartyClass;
    DirPersonRecId      personRecId;
    ;

    select firstOnly * from dirPerson where dirPerson.name == "BONANI VIRGINIA NENGWEKHULU";
    personRecId = DirPerson.RecId;

    //This is after the worker has been deleted on the HcmWorkerListPage form on HRM
    dirPartyTable = DirPartyTable::findRec(DirPerson::find(personRecId).RecId);

    if (dirPartyTable)
    {
        partyRecord = dirPartyTable;
        dirPartyClass = new DirParty(partyRecord);

        if (DirParty::canDeleteParty(dirPartyClass.getPartyRecId(),true))
        {
            DirParty::autoDeleteParty(dirPartyTable.RecId);
        }            
    }
}

上記のコードは何も削除せず、デバッガーにヒットするエラーもありません。

トランザクション ブロック (ttsbegin、ttscommit) に入れてみました。更新するレコードを選択します。DirPartyTable.doDelete() で削除を強制しようとしました

上記のいずれかを試みると、次のエラーが表示されます:「加算または減算しようとしている値により、無効な utcdatetime が作成されます」</p>

したがって、私の主な質問は、DirParty (および関連する DirPerson; DirPersonName など) テーブルを削除することは可能ですか、それとも、HRModule から従業員を削除した後でも、Dir* テーブルにパーティ レコードが永久に保持されるのでしょうか?

4

2 に答える 2

2

autoDeleteParty メソッド内で、削除する前に AutoDeleteParty パラメータが設定されているかどうかのチェックがあることに注意してください。または、ジョブ内のコードを使用できます。

よろしく、セバスチャン

于 2014-04-03T18:57:54.440 に答える
0

DirParameters::find().AutoDeleteParty == true があると仮定します

走ってみるかも

DirParty::canDeleteParty(this.RecId,_showInfoLog)

ジョブから、_showInfolog に true を渡す

「autoDeleteParty」メソッドは partyTable.delete() を呼び出す前にこれを呼び出しますが、false を渡すため、機能しない場合はフィードバックが表示される可能性はほとんどありません

于 2014-07-16T21:10:18.607 に答える