13.08.2009, 18:57 | #11 |
Moderator
|
Доработал вариант Denicce под себя: нужно, чтобы неизмененные объекты удалялись из дерева, а оставались только содержащие изменения.
Соответственно, вместо \Classes\SysImportElements\markDifferentObjects предлагается \Classes\SysImportElements\deleteEqualObjects: X++: public void deleteEqualObjects(FormTreeControl _ftc) { FormTreeControl treeControl = _ftc; FormTreeItem treeItem; Set itemIdxSet = new Set(Types::Integer); void deleteNodeWithEmptyParents(FormTreeItem _treeItem) { TreeItemIdx idx; TreeItemIdx childIdx; int i; boolean parentIsEmpty; if (_treeItem) { idx = _treeItem.idx(); itemIdxSet.add(idx); while select forUpdate firstonly tmpImportAot where tmpImportAot.TreeNodePath == _treeItem.data() { tmpImportAot.Import = false; tmpImportAot.update(); } parentIsEmpty = true; childIdx = treeControl.getChild(treeControl.getParent(idx)); while (childIdx) { if (!itemIdxSet.in(childIdx)) { parentIsEmpty = false; break; } childIdx = treeControl.getNextSibling(childIdx); } if (parentIsEmpty) deleteNodeWithEmptyParents(treeControl.getItem(treeControl.getParent(idx))); } } itemIdxSet = new Set(Types::Integer); treeItem = treeControl.getItem(treeControl.getRoot()); if (treeItem) { SysFormTreeControl::expandTree(treeControl, treeItem.idx()); while (treeItem) { // KDV анализируем только конечные узлы дерева (листы - объекты АОТ): if (! strFind(treeItem.data(), '\\', strLen(treeItem.data()), -1)) { // KDV сравниваем последний слой в АОТ и слой XPO: if (this.compareNodes(treeControl, treeItem)) deleteNodeWithEmptyParents(treeItem); } treeItem = treeControl.getItem(treeControl.getNextVisible(treeItem.idx())); } SysFormTreeControl::deleteTreeItem(treeControl, itemIdxSet); } }
__________________
Андрей. Последний раз редактировалось Dron AKA andy; 25.08.2009 в 12:14. |
|
|
За это сообщение автора поблагодарили: Small Den (1), Denicce (1), gl00mie (3), (1). |
Теги |
araxis, ax2009, ax3.0, ax4.0, xpo, документация, законченный пример, импорт, инструменты, полезное, разработка, сравнение, сравнение систем, сравнение слоев |
|
|