|
![]() |
#1 |
Участник
|
Вариант решения.
Писал на коленке на 3.0, перевел на 4.0
\Classes\SysImportElements\compareNodes X++: private boolean compareNodes(FormTreeControl _formTreeControl, FormTreeItem _formTreeItem) { TreeNode treeNodeAOT; TreeNode treeNodeImport = NULL; int exportId; int flag = (#impGetCompareNode + #impKeepIds); boolean ret; ; if (_formTreeItem && _formTreeItem.stateBold()) { select firstonly tmpImportAot where tmpImportAot.TreeNodePath == _formTreeItem.data(); if (tmpImportAot) { treeNodeAOT = infolog.findNode(tmpImportAot.TreeNodePath); if (treeNodeAot) { ret = true; exportId = infolog.startImport(filename, flag); treeNodeImport = infolog.getImportedNode( exportId, tmpImportAot.UtilFileType, tmpImportAot.UtilElementType, tmpImportAot.treeNodeName, tmpImportAot.FilePos, flag); ret = SysCompare::silentCompare(SysTreeNode::newTreenode(treeNodeAOT), SysTreeNode::newTreenode(treeNodeImport)); infolog.endImport(exportId, 1); } } } return ret; } X++: public void markDifferentObjects(FormTreeControl _ftc) { int idx; FormTreeControl t = _ftc; FormTreeItem i; TreeItemIdx treeItemIdx; boolean checked, res; ; i = t.getItem(t.getRoot()); SysFormTreeControl::expandTree(t, i.idx()); while (i) { // KDV анализируем только конечные узлы дерева (листы - объекты АОТ): if (! strFind(i.data(), '\\', strLen(i.data()), -1)) { // KDV сравниваем последний слой в АОТ и слой XPO: res = this.compareNodes(t, i); if (res) SysFormTreeControl::deselectedTreeItem_checkBox(t, i.idx()); else SysFormTreeControl::selectedTreeItem_checkBox(t, i.idx()); while select forUpdate firstonly tmpImportAot where tmpImportAot.TreeNodePath == i.data() { tmpImportAot.Import = ! res; tmpImportAot.update(); } } else SysFormTreeControl::deselectedTreeItem_checkBox(t, i.idx()); i = t.getItem(t.getNextVisible(i.idx())); } } X++: void markDifferentObjects()
{
;
sysImportElements.markDifferentObjects(AOTtree);
tmpImportLabel_ds.executeQuery();
} \Forms\SysImportDialog\Designs\Design\[Group:BottomGrp]\[ButtonGroup:ButtonGroup]\Button:MarkDifferentObjects\Methods\clicked X++: void clicked()
{
element.markDifferentObjects();
} |
|
|
За это сообщение автора поблагодарили: Dron AKA andy (4), Small Den (1), Logger (5), leva (1), (1). |
![]() |
#2 |
Участник
|
|
|
Теги |
araxis, ax2009, ax3.0, ax4.0, xpo, документация, законченный пример, импорт, инструменты, полезное, разработка, сравнение, сравнение систем, сравнение слоев |
|
|