|
|
#6 |
|
Участник
|
Цитата:
Тесты показывают, что описанный глюк возникает (по крайней мере, в AX2009) в следующих случаях:
X++: boolean ret = _salesId && salesTable.RecId; X++: boolean ret = record.RecId ? true : false; X++: boolean func()
{
// ...
return record.RecId
}X++: Int64 i; boolean test() { return 0x7fffffff00000000; } ; i = test(); info( strfmt('%1', i) ); X++: if (test()) // ... X++: boolean b = test(); if (b) // ... X++: #define.RecIdPattern ('[.]RecId') #define.RecIdNEZeroPattern ('[.]RecId[ ]*!=[ ]*0') UtilElements utilElements; UtilEntryLevel currentLayer; TreeNodePath treeNodePath; TreeNode treeNode; Source sourceCode; Set setOfMethods; Counter n; ; setOfMethods = new Set( Types::String ); currentLayer = currentAOLayer(); while select utilElements order by parentId, utilLevel where utilElements.recordType == UtilElementType::TableStaticMethod && utilElements.utilLevel <= currentLayer && utilElements.name like '*exist*' && !( utilElements.name like '*txtNotExist*' ) { treeNodePath = xUtilElements::getNodePath( utilElements ); if (!setOfMethods.in( treeNodePath )) { treeNode = TreeNode::findNode( treeNodePath ); sourceCode = SysUtil::unpackSource( treeNode.AOTgetSource() ); if ( match( #RecIdPattern, sourceCode ) && !match( #RecIdNEZeroPattern, sourceCode ) ) { n++; setOfMethods.add( treeNodePath ); info( strfmt( @"%1::%2() (%3)", tableid2name(utilElements.parentId), utilElements.name, utilElements.utilLevel ), '', SysInfoAction_Editor::newOpen( treeNodePath ) ); } } } if (n) { info( strfmt( "@SYS26824", n ) ); } else { warning( "@SYS4205" ); } |
|
|
|
| За это сообщение автора поблагодарили: mazzy (2), Zabr (3), Logger (8), alex55 (2). | |
| Теги |
| ax2009, ax4.0, int64, recid, баг, приведение типов, ядро |
|
|
Похожие темы
|
||||
| Тема | Ответов | |||
| axaptapedia: Tutorial Password | 1 | |||
| axcoder: PowerShell + Ax | 1 | |||
| axaptapedia: Load Web Documents | 1 | |||
| axcoder: AxPath is supported by axaptapedia | 0 | |||
|