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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 20.12.2013, 15:25   #1  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Попробуйте на более ранних версиях АХ
Выполните кто-то этот джобик на различных своих версиях АХ, интересно, или где-то работате.

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();
    }
}
Ожидаемый результат: показаны все формы, нету ошибок
Старый 20.12.2013, 15:39   #2  
NetBus is offline
NetBus
Участник
 
200 / 85 (3) ++++
Регистрация: 08.07.2005
Адрес: Москва
Unable to load properties.

axapta 2009
kernel version: 5.0.1500.6491
application version:5.0.1500.6491
Старый 20.12.2013, 15:41   #3  
S.Kuskov is offline
S.Kuskov
Участник
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
 
3,440 / 1776 (66) ++++++++
Регистрация: 28.04.2007
Адрес: Калуга
AX2009

name не работает
Цитата:
Unable to load properties.

treeNodeName - работает
свойство name работает, если перед использованием свойства сделать
X++:
form.load(form.treeNodeName());

Последний раз редактировалось S.Kuskov; 20.12.2013 в 15:46.
Старый 20.12.2013, 15:46   #4  
gl00mie is offline
gl00mie
Участник
MCBMSS
Most Valuable Professional
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии AXAWARD 2013
Лучший по профессии 2011
Лучший по профессии 2009
 
3,684 / 5803 (201) ++++++++++
Регистрация: 28.11.2005
Адрес: Москва
Записей в блоге: 3
Попробовал на 3.0 SP4 Ошибка "Unable to load properties" не появляется, но и ни одного названия не выводится - только куча пустых строк.
Старый 20.12.2013, 15:51   #5  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от gl00mie Посмотреть сообщение
Попробовал на 3.0 SP4 Ошибка "Unable to load properties" не появляется, но и ни одного названия не выводится - только куча пустых строк.


Ясно, то есть похоже никогда это и не работало.
Жаль. Ну, и дальше не будет работать, так что забудьте, что когда-то видели этот код
Старый 20.12.2013, 16:17   #6  
LEX is offline
LEX
NavAx
Аватар для LEX
NavAx Club
 
33 / 12 (1) ++
Регистрация: 06.04.2004
info(form.toString());

вернул названия форм

АХ2012
Старый 20.12.2013, 16:25   #7  
Umka is offline
Umka
MCTS
Аватар для Umka
Самостоятельные клиенты AX
MCBMSS
 
4 / 14 (1) ++
Регистрация: 25.12.2006
Адрес: Москва
AX4.0
Unable to load properties.
Старый 20.12.2013, 17:25   #8  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от LEX Посмотреть сообщение
info(form.toString());

вернул названия форм

АХ2012
Как название получить - это понятно, toString() причем не лучший вариант
Проще использовать просто AotTreeName или что-нить доступное из TreeNode класса напрямую
Старый 20.12.2013, 19:49   #9  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,966 / 3251 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Кстати, Иван, если уж пошла такая пьянка и начали обсуждать глюки работы с AOT.

Может быть зарегаешь багу ядра по работе с проектами.
В 3-ке такой код работает на ура.
Объекты АОТ в проекте

В 2009-й работает на порядок медленнее, виснет на больших проектах. Клиент Аксапты часто падает (похоже память течет при активном переборе узлов проекта). В общем все сломали. (У нас порядка 7 тысяч проектов в приложении)

Пришлось делать поиск хакерскими методами
Объекты АОТ в проекте
Старый 21.12.2013, 18:58   #10  
Raven Melancholic is offline
Raven Melancholic
Участник
Аватар для Raven Melancholic
Самостоятельные клиенты AX
Лучший по профессии 2015
 
2,164 / 1296 (48) ++++++++
Регистрация: 21.03.2005
Адрес: Москва-Петушки
В данном случае вообще что-то странное (DAX4).
Если посмотреть иерархию классов по системному объекту Form, то показывает, что он наследуется не от TreeNode, а от Object. Тем не менее, ошибок компиляции на iterator.next() не возникает. Метод name на form есть, а на TreeNode нет.
По моему, строка iterator.next() должна вызывать ошибку на этапе компиляции, а не выполнения. Хотя метод form.treeNodeName() четко отрабатывает, хотя его нет прямо в Form, он определен на TreeNode, но, если верить стандартным утилитам, то его вообще не должно быть в классе Form. Судя по всему, для системных классов, реализованных на уровне ядра, на наследование полностью полагаться нельзя.
Старый 23.12.2013, 01:36   #11  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Нуу, Form наследуется от TreeNode, не знаю, почему у тебя показывается иначе. Может в 4ке еще нужно было обновлять иерархию объектов через перекрестные ссылки?
Старый 23.12.2013, 03:29   #12  
Romb is offline
Romb
Участник
Аватар для Romb
 
79 / 22 (1) +++
Регистрация: 06.01.2004
У меня работает, если перед
X++:
info(form.name());
поставить
X++:
form.AOTshowProperties();
или
X++:
form.AOTgetProperties();
АХ 2009 5.0.1500.3761
За это сообщение автора поблагодарили: S.Kuskov (2).
Старый 24.12.2013, 00:55   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Да, спасибо, Romb, но баг как раз и состоит в том, что он автоматически не подгружает свойства объекта при вызове метода name()
Старый 01.03.2014, 18:38   #14  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от Logger Посмотреть сообщение
Кстати, Иван, если уж пошла такая пьянка и начали обсуждать глюки работы с AOT.

Может быть зарегаешь багу ядра по работе с проектами.
Создал сегодня только
Старый 05.03.2014, 01:07   #15  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Цитата:
Сообщение от kashperuk Посмотреть сообщение
Создал сегодня только
Вот ответ (багу закрыли как 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).
Старый 27.03.2014, 22:40   #16  
Logger is offline
Logger
Участник
Лучший по профессии 2015
Лучший по профессии 2014
 
3,966 / 3251 (116) ++++++++++
Регистрация: 12.10.2004
Адрес: Москва
Записей в блоге: 2
Спасибо, будем знать. С толку сбило что в 3-ке все отрабатывало.
Видимо трешечный клиент как-то по другому с памятью обращался, либо меньше её потреблял, так что мы не упирались в предел.
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
Выбрать более 2х разных элементов в дереве. demianimp DAX: Программирование 7 10.10.2013 12:36
16 и более полей в InventDim Ievgenii DAX: Функционал 12 13.10.2011 13:56
Рабочая область в АХ sukhanchik DAX: Функционал 6 15.10.2009 13:10
Баг формы в АХ связанный с колесом прокрутки мышью Alexius DAX: Прочие вопросы 6 07.10.2009 15:31
Импорт в АХ через ODBC AXbeginer DAX: Программирование 14 02.10.2009 08:12

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

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

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