如何删除Ax2012中的DirParty记录?

时间:2013-05-03 12:41:35

标签: dynamics-ax-2012

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

2 个答案:

答案 0 :(得分:2)

请注意,在autoDeleteParty方法中,检查是否在删除前设置了AutoDeleteParty参数,或者您可以在作业中使用代码。

此致 塞巴斯蒂安

答案 1 :(得分:0)

假设你有DirParameters :: find()。AutoDeleteParty == true

也许试试

DirParty::canDeleteParty(this.RecId,_showInfoLog)

从作业中,为_showInfolog传递true

因为' autoDeleteParty'方法在调用partyTable.delete()之前调用它,但是传递错误,如果它不起作用,你不太可能看到任何反馈