Показать сообщение отдельно
Старый 03.04.2015, 13:55   #32  
MazZzDaI is offline
MazZzDaI
Участник
Аватар для MazZzDaI
 
44 / 35 (2) +++
Регистрация: 19.09.2013
Скопировал нижележащие слои в OLD, и всё получилось.

Прилагаю решение:
X++:
static void ADM_Compare_layers(Args _args)
{
    #AOT

    boolean fnCompare(UtilElements _utilElements)
    {
        TreeNode                curLevelTreeNode, oldLevelTreeNode;
        SysComparable           comparable1, comparable2;
    ;
        curLevelTreeNode = SysTreeNode::findNodeInLayer(_utilElements.recordType, _utilElements.name, _utilElements.parentId, UtilEntryLevel::var, true, false);
        oldLevelTreeNode = SysTreeNode::findNodeInLayer(_utilElements.recordType, _utilElements.name, _utilElements.parentId, UtilEntryLevel::var, true, true);
        comparable1 = SysTreeNode::newTreeNode(curLevelTreeNode);
        comparable2 = SysTreeNode::newTreeNode(oldLevelTreeNode);
        return SysCompare::silentCompare(comparable1, comparable2);
    }

    void fnLoopObj(UtilElementType _recordtype)
    {
        UtilElements            utilElementsCUS, utilElementsVAR;
        SysOperationProgress    p = new SysOperationProgress();
        ProjectListNode         projectsNode;
        ProjectNode             projNode;
        Treenode                rootNode, itemNode;
        str                     treePath;
    ;
        projectsNode = SysTreenode::getPrivateProject();
        projNode = projectsNode.AOTfindChild('testProj');
        switch (_recordType)
        {
            case UtilElementType::Table:
                treePath = #TablesPath;
                break;
            case UtilElementType::Class:
                treePath = #ClassesPath;
                break;
            case UtilElementType::Form:
                treePath = #FormsPath;
                break;
            case UtilElementType::Menu:
                treePath = #MenusPath;
                break;
        }
        rootNode = Treenode::findNode(treePath);

        select count(RecId) from utilElementsCUS
            where 1 == 1
                && utilelementsCUS.recordType == _recordType
                && utilElementsCUS.utilLevel == UtilEntryLevel::cus;
        p.setTotal(utilElementsCUS.RecId);

        while select utilElementsCUS
            where 1 == 1
                && utilelementsCUS.recordType == _recordType
                && utilElementsCUS.utilLevel == UtilEntryLevel::cus
//                && utilElementsCUS.name != 'CustVendTable'
        {
            p.incCount();
            select utilElementsVAR
                where utilelementsVAR.recordType == utilelementsCUS.recordType
                    && utilElementsVAR.utilLevel == UtilEntryLevel::var
                    && utilelementsVAR.name == utilElementsCUS.name;
            if (utilElementsVAR.RecId)
            {
                if (!fnCompare(utilElementsCUS))
                {
                    info(strfmt('%1\t%2', utilelementsCUS.recordType, utilElementsCUS.name));
                    itemNode = rootNode.AOTfindChild(utilElementsCUS.name);
                    projNode.addNode(itemNode);
                }
            }
        }
        projNode.AOTsave();
    }
;
//    fnLoopObj(UtilElementType::Table);
    fnLoopObj(UtilElementType::Class);
//    fnLoopObj(UtilElementType::Form);
//    fnLoopObj(UtilElementType::Menu);
}