|
![]() |
#1 |
Участник
|
Попробуйте на более ранних версиях АХ
Выполните кто-то этот джобик на различных своих версиях АХ, интересно, или где-то работате.
X++: static void Job2(Args _args) { #AOT TreeNodeIterator iterator = TreeNode::findNode(#FormsPath).AOTiterator(); Form form; form = iterator.next(); while (form) { info(form.name()); form = iterator.next(); } } |
|
![]() |
#2 |
Участник
|
Unable to load properties.
axapta 2009 kernel version: 5.0.1500.6491 application version:5.0.1500.6491 |
|
![]() |
#3 |
Участник
|
AX2009
name не работает Цитата:
Unable to load properties.
treeNodeName - работает свойство name работает, если перед использованием свойства сделать X++: form.load(form.treeNodeName()); Последний раз редактировалось S.Kuskov; 20.12.2013 в 15:46. |
|
![]() |
#4 |
Участник
|
Попробовал на 3.0 SP4
![]() |
|
![]() |
#5 |
Участник
|
Цитата:
![]() Ясно, то есть похоже никогда это и не работало. Жаль. Ну, и дальше не будет работать, так что забудьте, что когда-то видели этот код ![]() |
|
![]() |
#6 |
NavAx
|
info(form.toString());
вернул названия форм АХ2012 |
|
![]() |
#7 |
Участник
|
Как название получить - это понятно, toString() причем не лучший вариант
Проще использовать просто AotTreeName или что-нить доступное из TreeNode класса напрямую |
|
![]() |
#8 |
MCTS
|
AX4.0
Unable to load properties. |
|
![]() |
#9 |
Участник
|
Кстати, Иван, если уж пошла такая пьянка и начали обсуждать глюки работы с AOT.
Может быть зарегаешь багу ядра по работе с проектами. В 3-ке такой код работает на ура. Объекты АОТ в проекте В 2009-й работает на порядок медленнее, виснет на больших проектах. Клиент Аксапты часто падает (похоже память течет при активном переборе узлов проекта). В общем все сломали. (У нас порядка 7 тысяч проектов в приложении) Пришлось делать поиск хакерскими методами Объекты АОТ в проекте |
|
![]() |
#10 |
Участник
|
Создал сегодня только
|
|
![]() |
#11 |
Участник
|
Вот ответ (багу закрыли как Won't Fix)
Цитата:
This issue is correctly an overcommit of memory - but not a leak. The code isn't explicitly releasing the projects as it's done with them. The design of the client AOT requires explicit memory management when working with large sets of treeNodes. See AotSearch and other code. There are patterns like the treeNodeTraverser that helps achieve this with little effort. The treeNodeType has information about whether a treeNode type require explicit memory management ("isConsumingMemory") and the code needs to operate accordingly to get an appropriate trade off between speed and memory consumption.
![]() Также приводят пару примеров, КАК лучше делать такие вещи. |
|
|
За это сообщение автора поблагодарили: Romb (1), Logger (33), gl00mie (5). |
![]() |
#12 |
Участник
|
В данном случае вообще что-то странное (DAX4).
Если посмотреть иерархию классов по системному объекту Form, то показывает, что он наследуется не от TreeNode, а от Object. Тем не менее, ошибок компиляции на iterator.next() не возникает. Метод name на form есть, а на TreeNode нет. По моему, строка iterator.next() должна вызывать ошибку на этапе компиляции, а не выполнения. Хотя метод form.treeNodeName() четко отрабатывает, хотя его нет прямо в Form, он определен на TreeNode, но, если верить стандартным утилитам, то его вообще не должно быть в классе Form. Судя по всему, для системных классов, реализованных на уровне ядра, на наследование полностью полагаться нельзя. |
|
![]() |
#13 |
Участник
|
Нуу, Form наследуется от TreeNode, не знаю, почему у тебя показывается иначе. Может в 4ке еще нужно было обновлять иерархию объектов через перекрестные ссылки?
|
|
![]() |
#14 |
Участник
|
У меня работает, если перед
X++: info(form.name()); X++: form.AOTshowProperties(); X++: form.AOTgetProperties(); |
|
|
За это сообщение автора поблагодарили: S.Kuskov (2). |
![]() |
#15 |
Участник
|
Да, спасибо, Romb, но баг как раз и состоит в том, что он автоматически не подгружает свойства объекта при вызове метода name()
|
|
![]() |
#16 |
Участник
|
Спасибо, будем знать. С толку сбило что в 3-ке все отрабатывало.
Видимо трешечный клиент как-то по другому с памятью обращался, либо меньше её потреблял, так что мы не упирались в предел. |
|
|
![]() |
||||
Тема | Ответов | |||
Выбрать более 2х разных элементов в дереве. | 7 | |||
16 и более полей в InventDim | 12 | |||
Рабочая область в АХ | 6 | |||
Баг формы в АХ связанный с колесом прокрутки мышью | 6 | |||
Импорт в АХ через ODBC | 14 |
|