Показать сообщение отдельно
Старый 24.08.2009, 18:09   #28  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5788 (200) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Цитата:
Сообщение от 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().