在 MS Dynamics AX 2012 R2 全局地址簿中查找并 remove/merge 所有重复方
Find and remove/merge all duplicate parties in MS Dynamics AX 2012 R2 global address book
有没有办法在 MS Dynamics AX 2012 R2 全局地址簿 (GAB) 中找到所有重复方,然后 remove/merge 他们?
我知道在 GAB 中有一个 "Check for duplicates" 选项,但它只对当前选择的一方项目有效。但是,我需要在所有记录中搜索并根据某些条件查找重复项。
在 MS CRM 中有一个内置的重复检测和合并机制,我想知道为什么在 Dynamics AX 中找不到这样的机制...或者我错了?
然而,除了直接数据库操作机制,我还有什么其他选择?
您将不得不为一些定制的东西做一些开发。表格 \Forms\DirPartyCheckDuplicate
是为单方设计的。
您可以使用支持 class \Classes\DirPartyCheckDuplicate
进行搜索,然后使用一些自定义表单处理结果。
问题是 class 也被设计为接受 DirPartyTable
记录,然后 return query
重复记录。
如果您想到处搜索以识别 有重复的东西,您可以一起破解一些东西。我写了这个快速作业,其中有 2 个 return 重复的 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);
}
}
有没有办法在 MS Dynamics AX 2012 R2 全局地址簿 (GAB) 中找到所有重复方,然后 remove/merge 他们?
我知道在 GAB 中有一个 "Check for duplicates" 选项,但它只对当前选择的一方项目有效。但是,我需要在所有记录中搜索并根据某些条件查找重复项。
在 MS CRM 中有一个内置的重复检测和合并机制,我想知道为什么在 Dynamics AX 中找不到这样的机制...或者我错了?
然而,除了直接数据库操作机制,我还有什么其他选择?
您将不得不为一些定制的东西做一些开发。表格 \Forms\DirPartyCheckDuplicate
是为单方设计的。
您可以使用支持 class \Classes\DirPartyCheckDuplicate
进行搜索,然后使用一些自定义表单处理结果。
问题是 class 也被设计为接受 DirPartyTable
记录,然后 return query
重复记录。
如果您想到处搜索以识别 有重复的东西,您可以一起破解一些东西。我写了这个快速作业,其中有 2 个 return 重复的 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);
}
}