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 回答