<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://www.schweda.net/style_feed.css" ?>
<rss version="2.0" 
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
    xmlns:atom="http://www.w3.org/2005/Atom"	
	xmlns:dc="http://purl.org/dc/elements/1.1/" > 
<channel>
    <title>schweda.net - Blog</title>
    <link>https://www.schweda.net/</link>
    <description>schweda.net - Blog - Blog-Beitraege</description>
    <language>de-at</language>
    <copyright>Copyright 2006-2026</copyright>
    <generator>schweda.net</generator>
    <managingEditor>heinz.schweda@schweda.net (Heinz Schweda)</managingEditor>
    <webMaster>heinz.schweda@schweda.net (Heinz Schweda)</webMaster>
    <category>Blog</category>
	<atom:link href="https://schweda.net/blog_rss.php?bid=343" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Projekte nach einem bestimmten Objekt durchsuchen]]></title>
<description><![CDATA[
<p>Nachstehender Job durchsucht alle Projekte nach einem bestimmten Element des AOT.
</p>


<p>Daf&uuml;r wird ein Dialog verwendet, wo man lediglich den Namen und den Typ des zu suchenden Elementes angeben muss. Au&szlig;erdem kann man noch einstellen, ob auch die privaten Projektknoten durchsucht werden sollen.
</p>


<pre class="pre_blog_axcode">
static void findObjectWithinProjects(Args _args)
{
    UtilElementType utilElementType        = UtilElementType::Table;
    Name            objectName             = &#39;custTable&#39;;
    boolean         includePrivateProjects = false;
    Dialog          dialog;
    DialogField     df_objectName;
    DialogField     df_utilElementType;
    DialogField     df_privateProjects;
    container       conProjects;
    int             c;
    TreeNode                treeNodeRoot;
    SysOperationProgress    sysOperationProgress;
    UtilElementType         utilElementTypeSelection;    

    #Aot
    #TreeNodeSysNodeType
    #AviFiles
    #define.objectNameField(&quot;Name of object&quot;)
    #define.utilElementTypeField(&quot;Type of object&quot;)

    void findChildNodes(TreeNode _treeNodeParent, ProjectNode _projectNode, str _objectName)
    {
        TreeNode            treeNode;
        TreeNodeIterator    treeNodeIterator;

        ; 
        treeNodeIterator = _treeNodeParent.AOTiterator();
        treeNode = treeNodeIterator.next();
        while (treeNode)
        {
            if (treeNode.AOTgetNodeType() == #NT_PROJECT_GROUP)
            {
                findChildNodes(treeNode, _projectNode, _objectName);
            }
            else if (treeNode.AOTname() like _objectName)
            {
                utilElementTypeSelection = str2enum(utilElementTypeSelection, enum2str(utilElementType)); 
                if (!utilElementType || treeNode.applObjectType() == utilElementTypeSelection)
                {
                    if (!confind(conProjects, _projectNode.AOTname()))
                    {
                        conProjects = conins(conProjects, conlen(conProjects)+1, _projectNode.AOTname());
                    } 
                    return;
                }
            } 
            treeNode.treeNodeRelease();
            treeNode = treeNodeIterator.next();
        }
    }
    void loopProjectsNode(TreeNode _treeNode)
    {
        ProjectNode projectNode;
        TreeNode treeNodeProject; 

        if (_treeNode)
        {
            treeNodeProject = _treeNode.AOTfirstChild();
            while (treeNodeProject)
            {
                projectNode = treeNodeProject; 
                sysOperationProgress.setText(projectNode.name()); 
                findChildNodes(projectNode.loadForInspection(), treeNodeProject, objectName); 
                treeNodeProject = treeNodeProject.AOTnextSibling();
            }
        }
    }
    ; 
    dialog = new Dialog();
    dialog.caption(&quot;Find projects containing specific object&quot;);
    df_objectName      = dialog.addField(Types::String, #objectNameField);
    df_utilElementType = dialog.addField(typeid(UtilElementType), #utilElementTypeField);
    df_privateProjects = dialog.addField(typeid(NoYesId), &quot;Include Private projects&quot;); 
    df_objectName.value(objectName);
    df_utilElementType.value(utilElementType);
    df_privateProjects.value(includePrivateProjects); 
    if( !dialog.run())
    {
        return;
    } 
    objectName             = df_objectName.value();
    utilElementType        = df_utilElementType.value();
    includePrivateProjects = df_privateProjects.value(); 
    if (objectName == &#39;*&#39; || objectName == &#39;&#39;)
    {
        throw error(strfmt(&quot;@SYS26332&quot;, #objectNameField));
    } 
    setprefix(strfmt(&quot;Projects containing %1 &#39;%2&#39;&quot;, utilElementType, objectName)); 

    startLengthyOperation(); 

    sysOperationProgress = new SysOperationProgress();
    sysOperationProgress.setCaption(&quot;Searching&quot;);
    sysOperationProgress.setAnimation(#AviSearch); 

    // Private projects
    if(includePrivateProjects)
    {
        loopProjectsNode(SysTreeNode::getPrivateProject());
    }
    // Shared projects
    loopProjectsNode(SysTreeNode::getSharedProject()); 
    sysOperationProgress.kill();
    endLengthyOperation(); 

    // List projects
    for(c=1;c&lt;=conlen(conProjects);c++)
    {
        info(conpeek(conProjects, c));
    }
}
</pre>




<p>Wer eine etwas komfortablere M&ouml;glichkeit vorzieht, der kann sich bei Firma Loncar Technologies Inc. ein entsprechendes XPO herunterladen und ins AX einspielen. Auf Basis dieses XPOs ist auch obiger Job entstanden.
</p>


<p><a href="https://www.loncartechnologies.com/download.php">https://www.loncartechnologies.com/download.php</a>
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Wed, 29 Jun 2011 19:36:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=343</link>
<comments>https://www.schweda.net/blog_ax.php?bid=343</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=343</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=343</wfw:commentRss>
</item>
</channel>
</rss>	
