我注意到当你删除一个 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* 表中?