AXForum  
Вернуться   AXForum > Microsoft Dynamics AX > DAX: Программирование
All
Забыли пароль?
Зарегистрироваться Правила Справка Пользователи Сообщения за день Поиск

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 05.08.2004, 08:11   #1  
Paul_ST is offline
Paul_ST
Участник
 
144 / 11 (1) +
Регистрация: 26.11.2003
Адрес: Екатеринбург
Объекты АОТ в проекте
Добрый день!

Подскажите, пожалуйста, как программно можно получить список объектов АОТ, входящих в определённых проект?
__________________
Paul_ST
Старый 29.09.2012, 22:19   #2  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Спасибо за проект.
Но в 2009-й приведенный вами код не работает

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

Переписал проект на работу с Utilelements.
Работает очень быстро.
Вложения
Тип файла: zip A_ProjectFind_paa.zip (1.5 Кб, 173 просмотров)
За это сообщение автора поблагодарили: gl00mie (20).
Старый 29.09.2012, 23:21   #3  
sukhanchik is offline
sukhanchik
Administrator
Аватар для sukhanchik
MCBMSS
Злыдни
Лучший по профессии 2015
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,318 / 3547 (125) ++++++++++
Регистрация: 13.06.2004
Адрес: Москва
Цитата:
Сообщение от Logger Посмотреть сообщение
Переписал проект на работу с Utilelements.
Ээээ а чего-то там нет упоминаний об UtilElements... Это так и планировалось?
__________________
Возможно сделать все. Вопрос времени
Старый 30.09.2012, 01:38   #4  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Цитата:
Сообщение от sukhanchik Посмотреть сообщение
Ээээ а чего-то там нет упоминаний об UtilElements... Это так и планировалось?
Сорри, не тот проект вложил.
Тут то, что надо.
Вложения
Тип файла: zip SharedProject_A_ProjectFind_paa_2012_09_30_01_37_DEV.zip (3.5 Кб, 266 просмотров)
За это сообщение автора поблагодарили: macklakov (3), raz (3), sukhanchik (6), Ace of Database (4), gl00mie (5), alex55 (3).
Старый 03.03.2016, 10:20   #5  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
В 2012-й такой подход не работает к сожалению.

А каким инстрементом лучше пользоваться в 12-й ?
Старый 07.03.2016, 11:40   #6  
Link is offline
Link
Британский учённый
Аватар для Link
Соотечественники
 
568 / 523 (19) +++++++
Регистрация: 25.11.2005
Адрес: UK
Записей в блоге: 9
Цитата:
Сообщение от Logger Посмотреть сообщение
В 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. Ну а программистов будить нельзя вообще.
За это сообщение автора поблагодарили: Logger (7).
Старый 03.09.2018, 14:24   #7  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Портировал код по быстрому поиску проектов на 2012-ю R3.

Перекрестные ссылки не нужны.
Вложения
Тип файла: rar FindNodesInProjectFast_MRC_2018_09_03__14_18.rar (4.3 Кб, 159 просмотров)

Последний раз редактировалось Logger; 03.09.2018 в 14:57.
За это сообщение автора поблагодарили: Raven Melancholic (3), S.Kuskov (10).
Старый 05.09.2018, 12:28   #8  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,952 / 3230 (115) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
По аналогии с вьюхой UtilElements добавил в запрос WITH (READUNCOMMITTED)
Вложения
Тип файла: zip FindNodesInProjectFast_MRC_2018_09_05__12_21.zip (4.5 Кб, 137 просмотров)

Последний раз редактировалось Logger; 05.09.2018 в 12:32.
За это сообщение автора поблагодарили: rumpleteazer (1).
Теги
aot, поиск, поиск проектов, полезное

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Поиск по АОТ, найденные объекты помещаются в проект 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

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход

Рейтинг@Mail.ru
Часовой пояс GMT +3, время: 11:07.