Скопировал нижележащие слои в OLD, и всё получилось.
Прилагаю решение:
X++:
static void ADM_Compare_layers(Args _args)
{
#AOT
boolean fnCompare(UtilElements _utilElements)
{
TreeNode curLevelTreeNode, oldLevelTreeNode;
SysComparable comparable1, comparable2;
;
curLevelTreeNode = SysTreeNode::findNodeInLayer(_utilElements.recordType, _utilElements.name, _utilElements.parentId, UtilEntryLevel::var, true, false);
oldLevelTreeNode = SysTreeNode::findNodeInLayer(_utilElements.recordType, _utilElements.name, _utilElements.parentId, UtilEntryLevel::var, true, true);
comparable1 = SysTreeNode::newTreeNode(curLevelTreeNode);
comparable2 = SysTreeNode::newTreeNode(oldLevelTreeNode);
return SysCompare::silentCompare(comparable1, comparable2);
}
void fnLoopObj(UtilElementType _recordtype)
{
UtilElements utilElementsCUS, utilElementsVAR;
SysOperationProgress p = new SysOperationProgress();
ProjectListNode projectsNode;
ProjectNode projNode;
Treenode rootNode, itemNode;
str treePath;
;
projectsNode = SysTreenode::getPrivateProject();
projNode = projectsNode.AOTfindChild('testProj');
switch (_recordType)
{
case UtilElementType::Table:
treePath = #TablesPath;
break;
case UtilElementType::Class:
treePath = #ClassesPath;
break;
case UtilElementType::Form:
treePath = #FormsPath;
break;
case UtilElementType::Menu:
treePath = #MenusPath;
break;
}
rootNode = Treenode::findNode(treePath);
select count(RecId) from utilElementsCUS
where 1 == 1
&& utilelementsCUS.recordType == _recordType
&& utilElementsCUS.utilLevel == UtilEntryLevel::cus;
p.setTotal(utilElementsCUS.RecId);
while select utilElementsCUS
where 1 == 1
&& utilelementsCUS.recordType == _recordType
&& utilElementsCUS.utilLevel == UtilEntryLevel::cus
// && utilElementsCUS.name != 'CustVendTable'
{
p.incCount();
select utilElementsVAR
where utilelementsVAR.recordType == utilelementsCUS.recordType
&& utilElementsVAR.utilLevel == UtilEntryLevel::var
&& utilelementsVAR.name == utilElementsCUS.name;
if (utilElementsVAR.RecId)
{
if (!fnCompare(utilElementsCUS))
{
info(strfmt('%1\t%2', utilelementsCUS.recordType, utilElementsCUS.name));
itemNode = rootNode.AOTfindChild(utilElementsCUS.name);
projNode.addNode(itemNode);
}
}
}
projNode.AOTsave();
}
;
// fnLoopObj(UtilElementType::Table);
fnLoopObj(UtilElementType::Class);
// fnLoopObj(UtilElementType::Form);
// fnLoopObj(UtilElementType::Menu);
}