23.12.2010, 16:54 | #21 |
Участник
|
Глюки при импорте xpo.
project_ImportError.rar
Еще один глюк при сравнении таблиц при импорте. В прилагаемом архиве два проекта, загружаем первый. 1. Опять запускаем импорт, жмем Show details, в окне импорта смотрим отличия в поле таблицы (Adjustment отличается), хотя по факту - не отличается. 2. При импорте второго проекта в окне импорта сравнении этой ошибки нет. В-общем, если поле наследовано от edt с Adjustment = Right, то при сравнении во время импорта выдается, будто там - Left. Ошибка в X++: treeNodeImport = infolog.getImportedNode(...) Ошибка повторяется на 4.0 и 2009. P.S. Вроде ничего страшного, однако мешает при импорте больших проектов, когда нужно найти отличия в объектах в системе и xpo. Везде, где поле наследовано от edt с выравниваем вправо, будет отличие, которого на самом деле нет. Если нет вот такой вот "штучечки" Есть ли у кого-нибудь такая штучечка?, такой проблемы не возникает, все равно по одному объекту сравнивать. Вдогонку: если выгрузить таблицу с непустой группой полей AutoReport и пустой группой AutoLookup, то в окне импорта при сравнении будет отличие в порядке этих групп. Группы меняются местами, если первая с полями, вторая - без. Это на 4.0, на 2009 не проверял. У себя вылечил вот тут \Classes\SysTreeNode\comparableTextList. Исходный код: X++: /* Subnodes */ iterator = treeNode.AOTiterator(); if (iterator) tmp = iterator.next(); while (tmp) { if (!SysTreeNode::hasSource(tmp) || tmp.AOTgetSource()) { children += ' '+tmp.treeNodeName()+'\n'; } tmp = iterator.next(); } X++: /* Subnodes */ iterator = treeNode.AOTiterator(); if (iterator) tmp = iterator.next(); while (tmp) { if (!SysTreeNode::hasSource(tmp) || tmp.AOTgetSource()) { // 23/12-2010 bugfix compare tables (see order of field groups AutoReport, AutoLookup. // modify order to their native one) kird: --> if (curuserid() == "kird") { if (treeNode.AOTname() == "Field Groups" && (tmp.treeNodeName() == "AutoReport" || tmp.treeNodeName() == "AutoLookup")) { children = ' '+"AutoReport"+'\n'; children += ' '+"AutoLookup"+'\n'; } else children += ' '+tmp.treeNodeName()+'\n'; } else // 23/12-2010 bugfix kird: <-- children += ' '+tmp.treeNodeName()+'\n'; } tmp = iterator.next(); } |
|
|
За это сообщение автора поблагодарили: Dron AKA andy (2), Maximin (2), Logger (1). |
18.01.2011, 16:09 | #22 |
NavAx
|
Надоело запоминать уже импортированные таблицы с выравниванием вправо полей, да и проектов развелось...
Пришлось пофиксить первый из глюков предыдущего поста путем хирургической операции - ампутации информации о выравнивании поля вообще, раз оно не несет полезной информации. Под паттерн поиска попадает только выравнивание поля таблицы. EDT импортируются, как положено. AX 2009 Класс SysTreeNode\comparableTextListProperties X++: else properties = ''; // there was no \n before ENDPROPERTIES. //AMV --> if (strscan(this.toString(), "Dictionary\\Tables", 1, strlen(this.toString()))) { idxmatch = strscan(properties, " Adjustment #", 1, strlen(properties)); if (idxmatch) { id = strscan(properties, '\n', idxmatch-1, strlen(properties) - idxmatch); if (!id) id = strlen(properties); properties = substr(properties, 1, idxmatch-1) + substr(properties, id+1, strlen(properties) - id); } } //AMV <-- // // Don't remove the name property. Renamed fields and tables are not included in the upgrade project if name is removed //
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
|
За это сообщение автора поблагодарили: Logger (5), Denicce (1). |
18.01.2011, 16:36 | #23 |
Участник
|
На DAX40 схожим образом не лечится?
|
|
18.01.2011, 17:32 | #24 |
NavAx
|
Да скорее всего примерно то же самое...
__________________
Жизнь прекрасна! Если, конечно, правильно подобрать антидепрессанты... |
|
20.01.2011, 13:08 | #25 |
Участник
|
Для 4.0
Исправление глюка со сравнением выравнивания для 4.0 в методе \Classes\SysTreeNode\comparableTextList
Сброс значения выравнивания только если у поля String есть EDT. Не забудьте curuserid() верный поставить или снести строку. Однако я пока оставлю только для себя, т.к. нужно потестить. X++: ... boolean canInsert, canDelete; // 20/01-2011 #bugfix_20110119 kird: bug fix 2011-01-19 --> #Properties #TreeNodeSysNodeType // 20/01-2011 #bugfix_20110119 kird: bug fix 2011-01-19 <-- if (comparableTextList) return comparableTextList; ... ... ... /* Properties */ properties = treeNode.AOTgetProperties(); idxmatch = strscan(properties,'\n',1, strlen(properties)); properties = substr(properties, idxMatch+1, strlen(properties)); idxmatch = strscan(properties,'\n',strlen(properties)-2, -strlen(properties)); properties = substr(properties, 1, idxMatch-1); // 20/01-2011 #bugfix_20110119 kird: bug fix 2011-01-19 --> if (curuserid() == 'kird') { if (treeNode.sysNodeType() == #NT_DBFIELDSTRING && findPropertyPos(properties, #PropertyAdjustment) && findProperty(properties, #PropertyExtendeddatatype)) { properties = setProperty(properties, #PropertyAdjustment, ""); } } // 20/01-2011 #bugfix_20110119 kird: bug fix 2011-01-19 <-- /* Don't remove the name property. Renamed fields and tables are not included in the upgrade project if name is removed |
|
|
За это сообщение автора поблагодарили: Logger (1), gl00mie (2). |
23.01.2012, 18:08 | #26 |
Участник
|
Коллеги, а из Microsoft никто ничего не писал по поводу этой проблемы? в 2009 ситуация и по сей день аналогичная
__________________
Ты лучше голодай, чем что попало есть, И лучше будь один, чем вместе с кем попало.
|
|
23.01.2013, 18:03 | #27 |
Ищущий знания...
|
Цитата:
при сравнении таблиц (некоторых) показывались методы, которые не существуют... долго бился, искал причину. в итоге выяснилось, что в таблице UtilElements есть записи с типом TableInstanceMethod (и TableStaticMethod) но с нулевым parentId, и вот эти записи при каких то обстоятельствах вылезают в сравнениях... а вот как эти записи там появились интересно!?? может кто докопался до первопричин?
__________________
"Страх перед возможностью ошибки не должен отвращать нас от поисков истины." (с) С Уважением, Елизаров Артем |
|
|
За это сообщение автора поблагодарили: Logger (1). |
Теги |
xpo, импорт, полезное, сравнение, сравнение объектов |
|
|