Цитата:
Сообщение от
Dron AKA andy
нужно, чтобы неизмененные объекты удалялись из дерева, а оставались только содержащие изменения. Соответственно, вместо \Classes\SysImportElements\markDifferentObjects предлагается \Classes\SysImportElements\deleteEqualObjects:
X++:
void deleteNodeWithEmptyParents(FormTreeItem _treeItem)
{
TreeItemIdx idx = _treeItem.idx();
TreeItemIdx childIdx;
int i;
boolean parentIsEmpty;
// ...
if (parentIsEmpty)
deleteNodeWithEmptyParents(treeControl.getItem(treeControl.getParent(idx)));
}
Если в импортируемом файле нет ни одного отличающегося объекта, то метод deleteNodeWithEmptyParents() доходит до узла AOT и рекурсивно вызывает себя с _treeItem == null, в результате чего код вываливается на строке TreeItemIdx idx = _treeItem.idx(). Наверно, имеет смысл сначала проверять параметр _treeItem, а уже потом вызывать на нем idx().