AXForum  
Zurück   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Kennwort vergessen?
Registrieren Forum Rules Hilfe Benutzerliste Heutige Beiträge Suchen

 
 
Themen-Optionen Thema durchsuchen Ansicht
Alt 05.08.2004, 08:11   #1  
Paul_ST ist offline
Paul_ST
Участник
 
144 / 11 (1) +
Registriert seit: 26.11.2003
Ort: Екатеринбург
Объекты АОТ в проекте
Добрый день!

Подскажите, пожалуйста, как программно можно получить список объектов АОТ, входящих в определённых проект?
__________________
Paul_ST
Alt 05.08.2004, 10:55   #2  
kalex ist offline
kalex
Участник
 
132 / 20 (1) +++
Registriert seit: 18.05.2002
Ort: Москва
X++:
str         project = 'projectName';
    ProjectNode         node;
    ProjectNode         rootNode;
    ProjectNode         groupNode;
    TreeNodeIterator    treeNodeIterator;

    void getTreeNode(TreeNode _treeNode)
    {
        TreeNode            node1;
        TreeNodeIterator    treeNodeIterator1 = _treeNode.AOTiterator();

        node1 = treeNodeIterator1.next();
        while(node1)
        {
            if(node1.handle() == classNum(ProjectGroupNode))
            {
                getTreeNode(node1);
            }
            else
            {
                do something with node1...
            }

            node1 = treeNodeIterator1.next();
        }
    }
;
        rootNode         = Infolog.projectRootNode();
        treeNodeIterator = rootNode.AOTiterator();

        groupNode = treeNodeIterator.next();
        while(groupNode)
        {
            node = groupNode.AOTfindChild(project);
            if(node)
            {
                node = node.getRunNode();
                getTreeNode(node);

                break;
            }
            groupNode = treeNodeIterator.next();
        }
This post has been rated by: macklakov (3), jeky (1).
Alt 06.08.2004, 09:57   #3  
Paul_ST ist offline
Paul_ST
Участник
 
144 / 11 (1) +
Registriert seit: 26.11.2003
Ort: Екатеринбург
Спасибо большое!
Получилось
__________________
Paul_ST
Alt 06.08.2004, 20:03   #4  
rinugun ist offline
rinugun
Участник
Benutzerbild von rinugun
 
26 / 10 (1) +
Registriert seit: 04.08.2003
А как можно добавить сюда фильтрацию по ChangedDate у объекта?
Alt 06.08.2004, 20:26   #5  
rinugun ist offline
rinugun
Участник
Benutzerbild von rinugun
 
26 / 10 (1) +
Registriert seit: 04.08.2003
А как можно добавить сюда фильтрацию по ChangedDate у объекта?
Alt 09.08.2004, 10:39   #6  
kalex ist offline
kalex
Участник
 
132 / 20 (1) +++
Registriert seit: 18.05.2002
Ort: Москва
UtilElements elements;
Date d;
;
select elements
where elements.name == node.AOTname() &&
elements.recordType == node.applObjectType();

d = elements.modifiedDate;
Alt 27.06.2005, 19:01   #7  
Владимир Максимов ist offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1.719 / 1204 (44) ++++++++
Registriert seit: 13.01.2004
Blog-Einträge: 3
Извиняюсь, что поднял старую тему, но возник дополнительный вопрос.

При сканировании всего дерева проектов, просто не хватает памяти. Axapta 2.5 вылетает с сообщение о нехватке памяти.

Есть ли возможность получить дерево объектов внутри проекта из каких-либо служебных таблиц (AXPATA 2.5) или же как-то принудительно чистить память, после очередного шага сканирования объектов.

Внешний цикл по таблице UtilElements практически не влияет на используемую память

PHP-Code:
.
    
TreeNode         projectType;
    
ProjectNode      curProject;
    
UtilElements     utilElements;
    ;

    
projectType infolog.projectRootNode().AOTFindChild('Shared');

    while 
select name from utilElements
        group by name
        where utilElements
.recordType == utilElementType::SharedProject
    
{
        
curProject projectType.findChild(utilElements.name);
        
curProject curProject.getRunNode();
       
// далее запуск рекурсии сканирования одного проекта
    

Т.е. всю память "съедает" именно рекурсивное сканирование проектов.

AXAPTA 2.5
Alt 19.05.2012, 12:26   #8  
ymv2000 ist offline
ymv2000
Участник
 
84 / 11 (0) +
Registriert seit: 03.05.2006
Может кто знает

как программно можно получить аналог нажатия кнопки "Add-Ins->Включен в проекты" на каком либо объекте AOT?

Geändert von ymv2000 (19.05.2012 um 12:30 Uhr)
Alt 19.05.2012, 15:35   #9  
RVS ist offline
RVS
Сенбернар
Benutzerbild von RVS
Злыдни
 
696 / 130 (6) +++++
Registriert seit: 27.02.2003
Ort: Королев МО
Zitat:
Zitat von ymv2000 Beitrag anzeigen
Может кто знает

как программно можно получить аналог нажатия кнопки "Add-Ins->Включен в проекты" на каком либо объекте AOT?
Вот так, например...
__________________
Best Regards,
Roman

Geändert von RVS (04.02.2016 um 09:52 Uhr)
This post has been rated by: macklakov (3), sukhanchik (6), Logger (20), ymv2000 (1), Kabardian (7).
Alt 29.09.2012, 22:19   #10  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.995 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Спасибо за проект.
Но в 2009-й приведенный вами код не работает

Причина в том, что теперь ядро криво работает с узлами AOT. При переборе примерно 3 тысяч проектов все виснет. Иногда падает клиент.

Переписал проект на работу с Utilelements.
Работает очень быстро.
Angehängte Dateien
Dateityp: zip A_ProjectFind_paa.zip (1,5 KB, 275x aufgerufen)
This post has been rated by: gl00mie (20).
Alt 29.09.2012, 23:21   #11  
sukhanchik ist offline
sukhanchik
Administrator
Benutzerbild von sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3.343 / 3563 (125) ++++++++++
Registriert seit: 13.06.2004
Ort: Москва
Zitat:
Zitat von Logger Beitrag anzeigen
Переписал проект на работу с Utilelements.
Ээээ а чего-то там нет упоминаний об UtilElements... Это так и планировалось?
__________________
Возможно сделать все. Вопрос времени
Alt 30.09.2012, 01:38   #12  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.995 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Zitat:
Zitat von sukhanchik Beitrag anzeigen
Ээээ а чего-то там нет упоминаний об UtilElements... Это так и планировалось?
Сорри, не тот проект вложил.
Тут то, что надо.
Angehängte Dateien
Dateityp: zip SharedProject_A_ProjectFind_paa_2012_09_30_01_37_DEV.zip (3,5 KB, 349x aufgerufen)
This post has been rated by: macklakov (3), raz (3), sukhanchik (6), Ace of Database (4), gl00mie (5), alex55 (3).
Alt 03.03.2016, 10:20   #13  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.995 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
В 2012-й такой подход не работает к сожалению.

А каким инстрементом лучше пользоваться в 12-й ?
Alt 07.03.2016, 11:40   #14  
Link ist offline
Link
Британский учённый
Benutzerbild von Link
Соотечественники
 
568 / 523 (19) +++++++
Registriert seit: 25.11.2005
Ort: UK
Blog-Einträge: 9
Zitat:
Zitat von Logger Beitrag anzeigen
В 2012-й такой подход не работает к сожалению.

А каким инстрементом лучше пользоваться в 12-й ?
Ниже пример обхода всех элементов всех общих проектов.

X++:
// >> DEV:MXK >>
public static server void updateProjectCrossRef()
{
    TreeNode        tnRoot, tnProject;
    ProjectNode     projectNode;
    xRefPaths       refPaths;

    void updateProjectNodes(TreeNode        _prentProject,
                            xRefPathRecId   _xRefPathRecId = 0)
    {
        #TreeNodeSysNodeType

        TreeNode            treeNode;
        TreeNodeIterator    rootNodeIterator;

        xRefReferences      refReferences;
        xRefPaths           refPathsRef;

        xRefPathRecId       xRefNameRecId;

        rootNodeIterator = _prentProject.AOTiterator();

        treeNode = rootNodeIterator.next();

        while (treeNode)
        {
            if (treeNode.treeNodeType().id() == #NT_PROJECT_GROUP)
            {
                updateProjectNodes(treeNode, _xRefPathRecId);
            }
            else
            {
                refPathsRef     = xRefPaths::findOrInsert(treeNode.treeNodePath());
                xRefNameRecId   = xRefNames::findOrInsert(DEV_Maintain::getRefKind(treeNode), '', treeNode.treeNodeName(), 0).RecId;

                if (!xRefReferences::find(xRefNameRecId, _xRefPathRecId, XRefReference::Declaration))
                {
                    refReferences.initValue();
                    refReferences.xRefNameRecId        = xRefNameRecId;
                    refReferences.xRefPathRecId        = _xRefPathRecId;
                    refReferences.referencePathRecId   = refPathsRef.RecId;
                    refReferences.Reference            = XRefReference::Declaration;
                    refReferences.insert();
                }
            }

            treeNode.treeNodeRelease();
            treeNode = rootNodeIterator.next();
        }
    }

    tnRoot = SysTreeNode::getSharedProject();

    if (tnRoot)
    {
        tnProject = tnRoot.AOTfirstChild();

        while (tnProject)
        {
            projectNode = tnProject;

            if (TreeNode::findNode(tnProject.treeNodePath()))
            {
                refPaths = xRefPaths::findOrInsert(tnProject.treeNodePath());
                updateProjectNodes(projectNode.loadForInspection(), refPaths.RecId);
            }

            tnProject = tnProject.AOTnextSibling();
        }
    }

    info('Project references updated successfully.');
// << DEV:MXK <<
}
__________________
Людям физического труда для восстановления своих сил нужен 7-8 часовой ночной сон. Людям умственного труда нужно спать часов 9-10. Ну а программистов будить нельзя вообще.
This post has been rated by: Logger (7).
Alt 03.09.2018, 14:24   #15  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.995 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
Портировал код по быстрому поиску проектов на 2012-ю R3.

Перекрестные ссылки не нужны.
Angehängte Dateien
Dateityp: rar FindNodesInProjectFast_MRC_2018_09_03__14_18.rar (4,3 KB, 236x aufgerufen)

Geändert von Logger (03.09.2018 um 14:57 Uhr)
This post has been rated by: Raven Melancholic (3), S.Kuskov (10).
Alt 05.09.2018, 12:28   #16  
Logger ist offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3.995 / 3293 (117) ++++++++++
Registriert seit: 12.10.2004
Ort: Москва
Blog-Einträge: 2
По аналогии с вьюхой UtilElements добавил в запрос WITH (READUNCOMMITTED)
Angehängte Dateien
Dateityp: zip FindNodesInProjectFast_MRC_2018_09_05__12_21.zip (4,5 KB, 236x aufgerufen)

Geändert von Logger (05.09.2018 um 12:32 Uhr)
This post has been rated by: rumpleteazer (1).
Stichworte
aot, поиск, поиск проектов, полезное

 

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Поиск по АОТ, найденные объекты помещаются в проект raz DAX: База знаний и проекты 2 15.04.2019 17:24
АОТ-объекты в Excel экспорт. Dima_Dima DAX: Программирование 11 08.01.2009 18:23
Подсвеченые и не подсвеченые объекты в AOT miklenew DAX: Программирование 14 15.05.2008 17:14
Лицензия - не доступны объекты igorian DAX: Администрирование 4 09.12.2005 11:41
Чудеса какие-то [вдвоем в проекте поработать] Vadik DAX: Программирование 9 24.01.2003 12:48

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Gehe zu

Рейтинг@Mail.ru
Alle Zeitangaben in WEZ +3. Es ist jetzt 06:21 Uhr.
Powered by vBulletin® Version 3.8.5 (Deutsch)
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.