我注意到当你删除一个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”
所以我的主要问题是:是否可以删除DirParty(以及相关联的DirPerson; DirPersonName;等)表,或者即使从HRModule中删除员工,也可以将聚会记录永远保存在Dir *表中? / p>
答案 0 :(得分:2)
请注意,在autoDeleteParty方法中,检查是否在删除前设置了AutoDeleteParty参数,或者您可以在作业中使用代码。
此致 塞巴斯蒂安
答案 1 :(得分:0)
假设你有DirParameters :: find()。AutoDeleteParty == true
也许试试
DirParty::canDeleteParty(this.RecId,_showInfoLog)
从作业中,为_showInfolog传递true
因为' autoDeleteParty'方法在调用partyTable.delete()之前调用它,但是传递错误,如果它不起作用,你不太可能看到任何反馈