17.08.2020, 12:02 | #1 |
Участник
|
DAX2009: job перебора всех форм в AOT
Привет.
Прошу можете выложить пример перебора всех форм аксапты? Просто необходимо получить список системных имен форм (т.е. названия как они выглядят в дереве AOT) в которых были сделаны изменения свойства. Т.е. по полю свойств ChangedBy. |
|
17.08.2020, 12:27 | #2 |
Axapta
|
В моем гугле по второй же ссылке есть бОльшая часть того, что вам надо.
https://www.google.com/search?q=dyna...+list+of+forms Последний раз редактировалось oip; 17.08.2020 в 13:40. |
|
|
За это сообщение автора поблагодарили: oleggy (1). |
17.08.2020, 13:32 | #3 |
Участник
|
Кроме веток с собственно объектами Axapta в AOT есть еще и ветки с системными объектами. В данном случае Вам нужна системная таблица
\System Documentation\Tables\UtilIdElements Физически, как SQL-таблица она, кажется, только в dax2012 появилась. В младших версиях - это некая логическая структура, которая отображается как таблица только из AOT Открываете ее в обозревателе. Фильтруете по RecordType == "Form" и utilLevel = тот слой, на котором выполняется модификация. По значению ModifiedBy можно будет понять, кто последний раз вносил изменения
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
18.08.2020, 06:45 | #4 |
Участник
|
Спасибо. Резюмирую:
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 |
Участник
|
Не правильный вывод. Перемудрили...
Если нужен просто тупой перебор ВСЕХ узлов конкретной ветки 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'); } Например, если Вам нужна информация только о том, кто последний раз менял объект, то это поле этой самой таблицы UtilIdElements.ModifiedBy. Вам НЕ НАДО обращаться к самому объекту. Нужная информация уже есть в таблице. Кстати, и имя объекта также есть в таблице
__________________
- Может, я как-то неправильно живу?! - Отчего же? Правильно. Только зря... |
|
|
|