|
![]() |
#1 |
Участник
|
Объекты АОТ в проекте
Добрый день!
Подскажите, пожалуйста, как программно можно получить список объектов АОТ, входящих в определённых проект?
__________________
Paul_ST |
|
![]() |
#2 |
Участник
|
Спасибо за проект.
Но в 2009-й приведенный вами код не работает ![]() Причина в том, что теперь ядро криво работает с узлами AOT. При переборе примерно 3 тысяч проектов все виснет. Иногда падает клиент. Переписал проект на работу с Utilelements. Работает очень быстро. |
|
|
За это сообщение автора поблагодарили: gl00mie (20). |
![]() |
#3 |
Administrator
|
Ээээ а чего-то там нет упоминаний об UtilElements... Это так и планировалось?
![]()
__________________
Возможно сделать все. Вопрос времени |
|
![]() |
#4 |
Участник
|
Цитата:
Тут то, что надо. |
|
|
За это сообщение автора поблагодарили: macklakov (3), raz (3), sukhanchik (6), Ace of Database (4), gl00mie (5), alex55 (3). |
![]() |
#5 |
Участник
|
В 2012-й такой подход не работает к сожалению.
А каким инстрементом лучше пользоваться в 12-й ? |
|
![]() |
#6 |
Британский учённый
|
Цитата:
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). |
![]() |
#7 |
Участник
|
Портировал код по быстрому поиску проектов на 2012-ю R3.
Перекрестные ссылки не нужны. Последний раз редактировалось Logger; 03.09.2018 в 14:57. |
|
|
За это сообщение автора поблагодарили: Raven Melancholic (3), S.Kuskov (10). |
![]() |
#8 |
Участник
|
По аналогии с вьюхой UtilElements добавил в запрос WITH (READUNCOMMITTED)
Последний раз редактировалось Logger; 05.09.2018 в 12:32. |
|
|
За это сообщение автора поблагодарили: rumpleteazer (1). |