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* テーブルにパーティ レコードが永久に保持されるのでしょうか?