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

 
 
Опции темы Поиск в этой теме Опции просмотра
Старый 17.08.2020, 12:02   #1  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
DAX2009: job перебора всех форм в AOT
Привет.
Прошу можете выложить пример перебора всех форм аксапты?

Просто необходимо получить список системных имен форм (т.е. названия как они выглядят в дереве AOT) в которых были сделаны изменения свойства. Т.е. по полю свойств ChangedBy.
Старый 17.08.2020, 12:27   #2  
oip is offline
oip
Axapta
Лучший по профессии 2014
 
2,564 / 1416 (53) ++++++++
Регистрация: 28.11.2005
Записей в блоге: 1
В моем гугле по второй же ссылке есть бОльшая часть того, что вам надо.

https://www.google.com/search?q=dyna...+list+of+forms

Последний раз редактировалось oip; 17.08.2020 в 13:40.
За это сообщение автора поблагодарили: oleggy (1).
Старый 17.08.2020, 13:32   #3  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,699 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Кроме веток с собственно объектами Axapta в AOT есть еще и ветки с системными объектами. В данном случае Вам нужна системная таблица

\System Documentation\Tables\UtilIdElements

Физически, как SQL-таблица она, кажется, только в dax2012 появилась. В младших версиях - это некая логическая структура, которая отображается как таблица только из AOT

Открываете ее в обозревателе. Фильтруете по RecordType == "Form" и utilLevel = тот слой, на котором выполняется модификация. По значению ModifiedBy можно будет понять, кто последний раз вносил изменения
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
Старый 18.08.2020, 06:45   #4  
oleggy is offline
oleggy
Участник
 
276 / 36 (2) +++
Регистрация: 03.12.2019
Адрес: Россия
Цитата:
Сообщение от oip Посмотреть сообщение
В моем гугле по второй же ссылке есть бОльшая часть того, что вам надо.
Спасибо. Резюмирую:
https://community.dynamics.com/ax/f/...t-forms/520378


X++:
static void ListOfForms(Args _args)
{
    UtilElements        localEelmet;
    UtilEntryLevel      LayerName = UtilEntryLevel::usr;
    TreeNode            treeNode;
    
    ;
    while select localEelmet
        where localEelmet.recordType == UtilElementType::Form
            && localEelmet.utilLevel == LayerName  //remove this line if you want all layers
    {

        treeNode = xUtilElements::getNodeInTree(xUtilElements::parentElement(localEelmet));

        info(strFmt("Name: %1",localEelmet.name));


    }

}

Последний раз редактировалось oleggy; 18.08.2020 в 06:49.
Старый 18.08.2020, 11:30   #5  
Владимир Максимов is offline
Владимир Максимов
Участник
КОРУС Консалтинг
 
1,699 / 1195 (43) ++++++++
Регистрация: 13.01.2004
Записей в блоге: 3
Цитата:
Сообщение от oleggy Посмотреть сообщение
Спасибо. Резюмирую:
Не правильный вывод. Перемудрили...

Если нужен просто тупой перебор ВСЕХ узлов конкретной ветки AOT, то это делают так

X++:
static void job_Test(Args _args)
{
    utilElements    utilElements;
    int             totalI;
    
    TreeNode        treeNode;
    TreeNode        node;
    ;

    info("Scan AOT");
    totalI = 0;
    treeNode = treeNode::findNode(@"\Forms");
    node = treeNode.AOTfirstChild();
    while (node)
    {
        info(strFmt("Name = %1", node.AOTname()));
        
        // debug
        totalI++;
        if (totalI > 10) break;
        
        node = node.AOTnextSibling();
    }
 
    info('end');
}
Таблицы UtilElements и UtilIdElements имеет смысл использовать, если сами эти таблицы содержат некую нужную Вам информацию. Цель их использования вовсе не в том, чтобы сканировать вообще ВСЕ. Цель их использования - это сократить время поиска нужной информации

Например, если Вам нужна информация только о том, кто последний раз менял объект, то это поле этой самой таблицы UtilIdElements.ModifiedBy. Вам НЕ НАДО обращаться к самому объекту. Нужная информация уже есть в таблице. Кстати, и имя объекта также есть в таблице
__________________
- Может, я как-то неправильно живу?!
- Отчего же? Правильно. Только зря...
 

Похожие темы
Тема Автор Раздел Ответов Посл. сообщение
DAX2009: как узнать значения всех переменных класса System.Net.HttpWebRequest oleggy DAX: Программирование 1 24.05.2020 20:33
DAX2009: как в Job реализовать прогресс бар? oleggy DAX: Программирование 5 14.02.2020 05:04
DynamicsAxSCM: Improve performance by running the Warehouse management on-hand entries cleanup job – for New AX and for AX2012 R3 CU10 Blog bot DAX Blogs 0 13.01.2016 11:11
emeadaxsupport: Troubleshooting AOT Synchronization Errors Blog bot DAX Blogs 0 21.09.2012 05:24
Глючит Job и TreeNode Alex_KD DAX: Программирование 0 29.08.2007 11:00

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

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

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