有没有办法在MS Dynamics AX 2012 R2全球通讯录(GAB)中找到所有重复方,然后删除/合并它们?
我知道在GAB中有一个“检查重复项”选项,但它仅适用于当前选定的一方项目。但是,我需要在所有记录中进行搜索,并根据某些标准查找重复项。
在MS CRM中有一个内置的重复检测和合并机制,我想知道为什么在Dynamics AX中找不到这样的...或者我错了?
然而,除了直接数据库操作机制,我还有其他选择吗?
答案 0 :(得分:2)
你必须为自定义的东西做一些开发。表单\Forms\DirPartyCheckDuplicate
是专为单方设计的。
您可以使用支持类\Classes\DirPartyCheckDuplicate
进行搜索,然后使用某种自定义表单处理结果。
问题是该类还设计为接受DirPartyTable
记录,然后返回query
个重复项。
如果你想在任何地方搜索识别有重复的东西,你可以一起破解。我写了这个快速的工作,我有2个DirPartyTable记录返回重复项,我运行检查两次并合并结果并输出它们。
static void Job3(Args _args)
{
DirPartyTable dpt = DirPartyTable::findRec(22565431216);
DirPartyTable dpt2 = DirPartyTable::findRec(22565424587);
Query targetQuery;
Query otherQuery;
QueryRun qr;
DirPartyTable dirPartyTable;
DirPartyCheckDuplicate partyCheckDuplicate;
partyCheckDuplicate = DirPartyCheckDuplicate::construct();
partyCheckDuplicate.parmPartyRecord(dpt);
partyCheckDuplicate.parmCheckName(true);
partyCheckDuplicate.run();
targetQuery = partyCheckDuplicate.getQuery();
partyCheckDuplicate = DirPartyCheckDuplicate::construct();
partyCheckDuplicate.parmPartyRecord(dpt2);
partyCheckDuplicate.parmCheckName(true);
partyCheckDuplicate.run();
otherQuery = partyCheckDuplicate.getQuery();
SysQuery::mergeRanges(targetQuery, otherQuery);
qr = new QueryRun(targetQuery);
while (qr.next())
{
dirPartyTable = qr.get(tableNum(DirPartyTable));
info(DirPartyTable.Name);
}
}