![]() |
#3 |
Участник
|
Итого
По результатам первичного переноса решения из Ax 3.0 публикую изменения внесенные в функционал Dynamics Ax 4.0 для отображения сравнения по 2-м верхним слоям:
SysCompare\initContext() X++: ... this.setCombo(comboBox1, _context.comparableList(SysCompareType::Text1), comparableMap1, _context.comparableItemDefault(SysCompareType::Text1)); this.setCombo(comboBox2, _context.comparableList(SysCompareType::Text2), comparableMap2, _context.comparableItemDefault(SysCompareType::Text2)); //comboBox1.selection(0); // --> petergunn, Tools_000003_SysCompareDefaultLayer if( comboBox1.valueStr() == comboBox2.valueStr() ) // если значения box'ов равны - в первом box'е пытаемся взять слой ниже comboBox1.selection( max( 0, comboBox1.selection() - 1 ) ) ; // <-- petergunn, Tools_000003_SysCompareDefaultLayer ... SysTreeNodeCompareContext\parmSysTreenode1(): X++: public SysTreeNode parmSysTreenode1(SysTreeNode _sysTreenode1 = sysTreenode1) { ; sysTreenode1 = _sysTreenode1; // --> petergunn, Tools_000003_SysCompareDefaultLayer if( !prmisdefault( _sysTreenode1 ) ) default1 = sysTreenode1 ? sysTreeNode1.comparableName() : '' ; // <-- petergunn, Tools_000003_SysCompareDefaultLayer return sysTreenode1; } X++: public SysTreeNode parmSysTreenode2(SysTreeNode _sysTreenode2 = sysTreenode2) { ; sysTreenode2 = _sysTreenode2; // --> petergunn, Tools_000003_SysCompareDefaultLayer if( !prmisdefault( _sysTreenode2 ) ) default2 = sysTreenode2 ? sysTreeNode2.comparableName() : '' ; // <-- petergunn, Tools_000003_SysCompareDefaultLayer return sysTreenode2; } X++: public TreeNode parmTreeNode1(TreeNode _treeNode1 = treeNode1) { ; treeNode1 = _treeNode1; // --> petergunn, Tools_000003_SysCompareDefaultLayer if( !prmisdefault( _treeNode1 ) && !sysTreeNode1 ) default1 = treeNode1 ? SysTreeNode::newTreenode( treeNode1 ).comparableName() : '' ; // <-- petergunn, Tools_000003_SysCompareDefaultLayer return treeNode1; } X++: public TreeNode parmTreeNode2(TreeNode _treenode2 = treenode2) { ; treenode2 = _treenode2; // --> petergunn, Tools_000003_SysCompareDefaultLayer if( !prmisdefault( _treenode2 ) && !sysTreeNode2 ) default2 = treeNode2 && treeNode2.applObjectLayerMask() ? SysTreeNode::newTreenode( treeNode2 ).comparableName() : '' ; // <-- petergunn, Tools_000003_SysCompareDefaultLayer return treenode2; } С другой стороны при импорте из XPO второй список сравнения содержит 1 значение ( вида '\ObjName (xpo)' ), позиционирование будет установлено на него даже в случае если функция вернет ''. 'Полный' вариант модифицированного метода изначально выглядел так - SysTreeNodeCompareContext\parmTreeNode2(): X++: public TreeNode parmTreeNode2(TreeNode _treenode2 = treenode2) { ; treenode2 = _treenode2; // --> petergunn, Tools_000003_SysCompareDefaultLayer if( !prmisdefault( _treenode2 ) && !sysTreeNode2 ) { if( treeNode2 ) default2 = treeNode2.applObjectLayerMask() ? SysTreeNode::newTreenode( treeNode2 ).comparableName() : SysTreeNodeVirtualXPO::newTreenode( treeNode2 ).comparableName() ; else default2 = '' ; } // <-- petergunn, Tools_000003_SysCompareDefaultLayer return treenode2; } P.S. ногами сильно не пинать ![]() |
|