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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 16.05.2007, 12:07   #1  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
DAX 4.0 путь к объекту
Здраствуйте.
Вот етот код у меня почему отрабатывает по разному в 3 и 4 версии
X++:
static void Job30(Args _args)
{
    ProjectNode projectNode;
    void tree(TreeNode _treeNode)
    {
    ;
        info(_treeNode.treeNodePath());
    }
    ;
    projectNode = infolog.projectRootNode().AOTfindChild('Shared').AOTfindChild('Project');
    tree(projectNode.loadForInspection());
}
В 4 путь к проекту пустой.
в 3 версии нормальный путь \Projects\Project
Может кто нить сталкивался с етим, как в 4 получить такой же путь (\Projects\Project)
Старый 16.05.2007, 12:54   #2  
Мариночка is offline
Мариночка
Microsoft Dynamics
Аватар для Мариночка
Сотрудники Microsoft Dynamics
 
75 / 56 (2) ++++
Регистрация: 31.01.2005
Адрес: Киев
Мне кажется, что никак. Ищете-то вы его через Shared, значит и путь к нему через все AOTfindChild должен быть (что было бы логично).

Почему вы считаете, что в 3ке путь \Projects\Project - это нормально ? Там же поиск происходит тоже через промежуточный нод... увидев, что мне инфо такое выдает, подумала бы, что баг/фича.
.
А какая у вас задача?
Старый 16.05.2007, 13:19   #3  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
Задача перевести работающий код из 3 в 4.
А что по вашему должен возвращать етот джоб?(может он конечно не правльный или не корректный, объясните тода чем... ) если запустить его в 4, то возвращется пустышка.... мне кажется ето как то точно не правильно, хотя может код действительно не корректен...
Старый 16.05.2007, 13:23   #4  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Возвращать должен \Projects\Shared\Project

Думаю, это была просто описка.

А попробуйте так - (по сути одно и то же).

Сейчас нет возможности проверить это на 4ке

X++:
static void Job67(Args _args)
{
    ProjectNode projNode;
    ;
    projNode = SysTreeNode::getSharedProject().AOTfindChild('Project');
    info(projNode.getRunNode().treeNodePath());
}
Старый 16.05.2007, 13:57   #5  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
2 Kashperuk
Ваш джоб нормально работает выдает путь \Projects\Shared\Project
но, только я пытаюсь 'прочитать' проект
X++:
   ProjectNode projectNode;
    void tree(ProjectNode _treeNode)
    {
    ;
        info(_treeNode.getRunNode().treeNodePath());
    }
    ;
    projectNode = infolog.projectRootNode().AOTfindChild('Shared').AOTfindChild('Project');
    tree(projectNode.loadForInspection());
ни проекта ни путь не показывается.
а в 3 у меня действительно
в info вылезает \Projects\Project
Если есть возможность попробуйте в 3 версии.... (может ето индивидуальная особенность моя или моей версии )
вот корректнее думаю будет такой пример

X++:
static void Job30(Args _args)
{
    ProjectNode projectNode;
 
    void tree(ProjectNode _treeNode)
    {
        TreeNode node1;
        TreeNodeIterator treeNodeIterator1 = _treeNode.AOTiterator();

 
    ;
        node1 = treeNodeIterator1.next();
        while(node1)
        {
            info(node1.treeNodePath());
            node1 = treeNodeIterator1.next();
        }
        
    }
    ;
    projectNode = infolog.projectRootNode().AOTfindChild('Shared').AOTfindChild('Project');
    tree(projectNode.loadForInspection());
}
результат работы в 3 версии...(в проекте есть узел DataDictionary и классов)
\Projects\Project'\DataDictionary
\Projects\Project\Classes
результат работы 4 версии...
\DataDictionary
\Classes
не понимаю где чего не так...в моей 3 версии или в 4 или вообще нет....

Последний раз редактировалось Masia; 16.05.2007 в 14:24.
Старый 16.05.2007, 14:19   #6  
Мариночка is offline
Мариночка
Microsoft Dynamics
Аватар для Мариночка
Сотрудники Microsoft Dynamics
 
75 / 56 (2) ++++
Регистрация: 31.01.2005
Адрес: Киев
Я просто не так поняла.. думала, что проблема именно в том, что в части пути не возвращается промежуточный нод Shared. Терь вижу, что путь пустой в инфо.
А в 3ке кусок пути с Shared скипается. Но то уже другая проблема
Иногда loadForInspection используется с TreeNodeIterator, но пока у меня не вышло взять путь.. надо поискать, что именно делает loadForInspection.
А может вам и не нужен этот loadForInspection? Насколько я поняла, он нужен для экспорта или итерации по дереву проекта.

Вот каменты к самому методу:
// This method creates a detached copy of the project node
// This node has no project window associated - so it can be traversed without affecting the UI
Может, если он детачд, то есть отделен от АОТ, то и пути у него не должно быть?

Кроме того, нашла место, с методом AOTgetSource и где loadForInspection был заменен на getRunMode.

Последний раз редактировалось Мариночка; 16.05.2007 в 14:21.
Старый 16.05.2007, 14:57   #7  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
Цитата:
Сообщение от Мариночка Посмотреть сообщение
Иногда loadForInspection используется с TreeNodeIterator, но пока у меня не вышло взять путь.. надо поискать, что именно делает loadForInspection.
А может вам и не нужен этот loadForInspection? Насколько я поняла, он нужен для экспорта или итерации по дереву проекта.

Вот каменты к самому методу:
// This method creates a detached copy of the project node
// This node has no project window associated - so it can be traversed without affecting the UI
Может, если он детачд, то есть отделен от АОТ, то и пути у него не должно быть?

Кроме того, нашла место, с методом AOTgetSource и где loadForInspection был заменен на getRunMode.
[QUOTE=Мариночка;138442]
Первый джоб видимо я некорректно сократила....(хотелось маленький примерчик привести на котором уже видна проблема....)
Последний думаю наиболее полный.
TreeNodeIterator как раз использую(см. последний приведенный джобик).
Как раз и нужна итерация по проекту... а путь нужен для проверки существования етого объекта в своей таблице.....
так что loadForInspection() нужен..... путь пока у меня тоже не вышло взять...
когда мы идем итератором по проекту у узлов то путь должен быть наверное к узлу проекта....
а получается
\DataDictionary
Сейчас поищу где заменено так....
Старый 16.05.2007, 15:09   #8  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
Цитата:
Сообщение от Мариночка Посмотреть сообщение
Вот каменты к самому методу:
// This method creates a detached copy of the project node
// This node has no project window associated - so it can be traversed without affecting the UI
Может, если он детачд, то есть отделен от АОТ, то и пути у него не должно быть?

Кроме того, нашла место, с методом AOTgetSource и где loadForInspection был заменен на getRunMode.
описание в 3 loadForInspection
DReturns a loaded verson of a projectNode found in the project overview window.
getRunNode
насколько понимаю находит проект и открывает его.....
Старый 16.05.2007, 15:22   #9  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
Цитата:
Сообщение от Мариночка Посмотреть сообщение
Вот каменты к самому методу:
// This method creates a detached copy of the project node
// This node has no project window associated - so it can be traversed without affecting the UI
Может, если он детачд, то есть отделен от АОТ, то и пути у него не должно быть?
все таки наверное действительно создается некий свой АОТ(если я правильно поняла вашу мысль)... как иначе объснить не знаю... и к нему действительно тода получается правильные пути возвращаются(как к AOT)....
Спасибо за помощь.
А откуда вы взяли описание?

Последний раз редактировалось Masia; 16.05.2007 в 15:27.
Старый 16.05.2007, 16:54   #10  
Мариночка is offline
Мариночка
Microsoft Dynamics
Аватар для Мариночка
Сотрудники Microsoft Dynamics
 
75 / 56 (2) ++++
Регистрация: 31.01.2005
Адрес: Киев
Да, я думаю проблема (фишка) в loadForInspection. Попробовала заменить в вашей джобе на getRunNode, тогда пути , какие вам нужно возвращаются, но и открывается окно с проектом, что в нашем случае не нужно.
Если loadForInspection юзается для экспорта, то там никак не указываются абсолютные пути, поэтому наверно это и не предусмотрено.
А описание взяла с исходников кернела, каменты от программеров бывают лучше любого хелпа

В вашем случае (с алг. точки зрения) поможет сохранения пути/ передача его в инлайн функцию, по которому идете, и сложение его с \\ и имя_рассматриваемого_нода. Корявенько, но будет работать .
Старый 16.05.2007, 17:05   #11  
Ruff is offline
Ruff
Дмитрий Ерин
Аватар для Ruff
1C
 
475 / 396 (14) ++++++
Регистрация: 18.09.2003
Адрес: Тула
Thumbs up
Цитата:
Сообщение от Мариночка Посмотреть сообщение
А описание взяла с исходников кернела, каменты от программеров бывают лучше любого хелпа
OFF: Даёшь исходники кернела - в массы!!!
Старый 16.05.2007, 17:08   #12  
Мариночка is offline
Мариночка
Microsoft Dynamics
Аватар для Мариночка
Сотрудники Microsoft Dynamics
 
75 / 56 (2) ++++
Регистрация: 31.01.2005
Адрес: Киев
Talking
Цитата:
Сообщение от Ruff Посмотреть сообщение
OFF: Даёшь исходники кернела - в массы!!!
Ох, тогда мелкософту буду до конца жизни выплачивать...
За это сообщение автора поблагодарили: Masia (1).
Старый 16.05.2007, 20:18   #13  
kashperuk is offline
kashperuk
Участник
Аватар для kashperuk
MCBMSS
Соотечественники
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,361 / 2084 (78) +++++++++
Регистрация: 30.05.2004
Адрес: Atlanta, GA, USA
Только что совершенно случайно наткнулся на аналогичную "баго-фичу".
Обратил внимание, что не работает недавно написанный проект Kashperuk Ivan: (DAX 3.0) SysExportDialog form extension

Посмотрел в дебаггере - скушался узел shared, и соответственно в определениях объектов оно его не нашло, а соответственно не добавило префикс SharedProject.
Если же экспортировать из дерева проектов (то есть когда проект не loadForInspection), то префикс определяется правильно.

Дома надо посмотреть, в 4ке как с этим.
Старый 16.05.2007, 21:26   #14  
Masia is offline
Masia
NavAx
Аватар для Masia
NavAx Club
 
26 / 10 (1) +
Регистрация: 21.09.2005
Адрес: Москва
Цитата:
Сообщение от Мариночка Посмотреть сообщение
В вашем случае (с алг. точки зрения) поможет сохранения пути/ передача его в инлайн функцию, по которому идете, и сложение его с \\ и имя_рассматриваемого_нода. Корявенько, но будет работать .
Вот и хотелось корявости избежать Но видимо придется воспользоваться обходным путем Пасибо за помощь
2 Kashperuk
Интересно будет узнать о результатах

Последний раз редактировалось Masia; 17.05.2007 в 09:04.
Старый 07.09.2007, 14:07   #15  
IvanOFF is offline
IvanOFF
MCTS
MCBMSS
 
65 / 87 (3) ++++
Регистрация: 22.09.2005
Адрес: Москва
Здравствуйте!
Столкнулся с той же проблемой, когда код в тройке и четверке отрабатывает по-разному.
Вот этот код:

X++:
static void job(Args _args)
{
    TreeNode            treeNode;
    TreeNodeIterator    treeNodeIterator;
    str                 path;
    ;
    treeNodeIterator = infolog.projectRootNode().AOTfindChild('Private').AOTiterator();
    treenode = treeNodeIterator.next();
    while (treeNode)
    {
        path = treeNode.AOTgetSource();
        treeNode = null;
    }
}
в тройке отрабатывает нормально, а в четверке открывает проект (проект открывается во время исполнения метода AOTGetSource). Мне совершенно не нужно, чтобы открывался проект. Может быть, кто-то знает, как побороть эту проблему?
Старый 18.09.2007, 14:45   #16  
sergy is offline
sergy
Участник
 
62 / 10 (1) +
Регистрация: 12.02.2004
Адрес: Воронеж
У меня вот так получилось без открытия проекта
X++:
treeNode.loadForInspection().AOTgetSource()
Старый 21.09.2007, 13:03   #17  
IvanOFF is offline
IvanOFF
MCTS
MCBMSS
 
65 / 87 (3) ++++
Регистрация: 22.09.2005
Адрес: Москва
У меня 4-ка с SP1, и класс TreeNode не имеет метода loadForInspection()
Старый 21.09.2007, 13:06   #18  
belugin is offline
belugin
Участник
Аватар для belugin
Сотрудники Microsoft Dynamics
Лучший по профессии 2017
Лучший по профессии 2015
Лучший по профессии 2014
Лучший по профессии 2011
Лучший по профессии 2009
 
4,622 / 2925 (107) +++++++++
Регистрация: 16.01.2004
Записей в блоге: 5
Это в ProjectNode
За это сообщение автора поблагодарили: IvanOFF (1).
Старый 27.09.2007, 18:44   #20  
IvanOFF is offline
IvanOFF
MCTS
MCBMSS
 
65 / 87 (3) ++++
Регистрация: 22.09.2005
Адрес: Москва
Спасибо! Все работает!
Теги
ax4.0

 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
msdynamicsax: DAX 2009 and MS SQL 2008 Blog bot DAX Blogs 0 09.08.2008 14:05
dax-lessons: Generate XML Documentation Files for a project - DAX 2009 Blog bot DAX Blogs 0 08.08.2008 19:06
dax-lessons: Active directory in Axapta Blog bot DAX Blogs 0 27.08.2007 23:00
Kashperuk Ivan: AxPaint - make your DAX look cool :) Blog bot DAX Blogs 0 26.06.2007 21:00
Kashperuk Ivan: (DAX 3.0) SysExportDialog form extension Blog bot DAX Blogs 1 15.05.2007 19:16

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

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

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