Mithilfe der SysModel*-Tabellen kann man in Dynamics AX den AOT nach bestimmten Objekten bzw. deren Eigenschaften durchsuchen. Ein Beispiel dazu habe ich bereits hier gepostet.
Der folgende job ist eine Erweiterung der oben genannten Beitrags und listet alle Ojekte auf, die im aktuellen Layer verändert wurden und noch nicht zur Versionskontrolle hinzugefügt wurden.
Diese Webseite verwendet Cookies, um Benutzern einen besseren Service anzubieten. Wenn Sie weiterhin auf der Seite bleiben, stimmen Sie der Verwendung von Cookies zu.
Mehr dazu
Mithilfe der SysModel*-Tabellen kann man in Dynamics AX den AOT nach bestimmten Objekten bzw. deren Eigenschaften durchsuchen. Ein Beispiel dazu habe ich bereits hier gepostet.
Der folgende job ist eine Erweiterung der oben genannten Beitrags und listet alle Ojekte auf, die im aktuellen Layer verändert wurden und noch nicht zur Versionskontrolle hinzugefügt wurden.
static void objectsNotAddedToVersionControl(Args _args) { SysModelElement sysModelElement; SysModelElement rootModelElement; SysModelElementData sysModelElementData; TreeNodePath path; UtilElements utilElements; TreeNode treeNode; VersionControl vs; Query query; QueryRun queryRun; QueryBuildDataSource qbds; QueryBuildDataSource qbds1; QueryBuildDataSource qbds2; QueryBuildDataSource qbds3; QueryBuildDataSource qbds4; QueryBuildDataSource qbds5; QueryBuildRange layerRange; Set set = new Set(Types::String); startLengthyOperation(); setPrefix(strFmt("Objects in %1 layer, but not added to versioncontrol", Global::currentAOLayer())); query = new Query(); qbds = query.addDataSource(tableNum(SysModelElement)); qbds2 = qbds.addDataSource(tableNum(SysModelElementData)); qbds3 = qbds2.addDataSource(tableNum(SysModelLayer)); qbds4 = qbds2.addDataSource(tableNum(SysModelManifest)); qbds5 = qbds.addDataSource(tableNum(SysModelElementType)); qbds2.fetchMode(QueryFetchMode::One2One); qbds2.addLink(fieldNum(SysModelElement, RecId), fieldNum(SysModelElementData, ModelElement)); qbds3.fetchMode(QueryFetchMode::One2One); qbds3.addLink(fieldNum(SysModelElementData, Layer), fieldNum(SysModelLayer, RecId)); qbds4.fetchMode(QueryFetchMode::One2One); qbds4.addLink(fieldNum(SysModelElementData, ModelId), fieldNum(SysModelManifest, RecId)); qbds5.fetchMode(QueryFetchMode::One2One); qbds5.addLink(fieldNum(SysModelElement, ElementType), fieldNum(SysModelElementType, RecId)); layerRange = SysQuery::findOrCreateRange(qbds3, fieldNum(SysModelLayer, Layer)); layerRange.value(queryValue(Global::currentAOLayer())); layerRange.status(RangeStatus::Locked); vs=new VersionControl(); vs.init(); queryRun = new QueryRun(query); if( !queryRun.prompt()) { return; } while(queryRun.next()) { sysModelElement = queryRun.get(tableNum(SysModelElement)) as SysModelElement; sysModelElementData = queryRun.get(tableNum(SysModelElementData)) as SysModelElementData; select rootModelElement where rootModelElement.RecId == sysModelElement.RootModelElement; utilElements = null; utilElements.Name = rootModelElement.Name; utilElements.ParentId = rootModelElement.ParentId; utilElements.RecordType = rootModelElement.ElementType; utilElements.setFieldValue(fieldStr(UtilElements, ModifiedBy), sysModelElementData.ModifiedBy); utilElements.setFieldValue(fieldStr(UtilElements, CreatedBy), sysModelElementData.CreatedBy); try { path = xUtilElements::getNodePath(utilElements); } catch(Exception::Warning) { // Continue if errors occur (for exmaple renamed objects, not written to database) continue; } if (set.in(path)) { continue; } set.add(path); treeNode = xUtilElements::getNodeInTree(utilElements); if(vs.allowCreate(treeNode)) { info(path); } } info("Done"); endLengthyOperation(); }