<?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=391" rel="self" type="application/rss+xml" />
<item>
<title><![CDATA[Shared Project mit X++ erstellen II]]></title>
<description><![CDATA[
<p>In einem <a title="Shared Project mit X++ erstellen" target="_self" href="http://www.schweda.net/blog_ax.php?nid=sharedproject1">fr&uuml;heren Beitrag</a> habe ich ja hier schon einen Job ver&ouml;ffentlicht, mit dessen Hilfe man sich per X++ ein Shared Project erstellen kann. Basierend auf der neu <a title="selectMultiple und selectSingle" target="_self" href="http://www.schweda.net/blog_ax.php?nid=selectmultiple">entdeckten Funktion selectMultiple</a> habe ich diesen nun etwas erweitert, der Benutzer hat mit dessen Hilfe nun die M&ouml;glichkeit, ein Shared Project zu erstellen und dabei f&uuml;r die aktuell ben&ouml;tigten Datentypen eigene Gruppenknoten innerhalb dieses Projektes zu erstellen.
</p>

<div class="div_blog_axcode">static void CreateSharedProjectUsingSelectMultiple(Args _args)<br />
{<br />
&nbsp;&nbsp;&nbsp; DictEnum&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; DictEnum;<br />
&nbsp;&nbsp;&nbsp; container&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conValues;<br />
&nbsp;&nbsp;&nbsp; container&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conSelectedValues;<br />
&nbsp;&nbsp;&nbsp; container&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conSelectMultiple;<br />
&nbsp;&nbsp;&nbsp; int&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i;<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; projectNode;<br />
&nbsp;&nbsp;&nbsp; projectGroupNode&nbsp;&nbsp;&nbsp; projectGroupNode;<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myProjectNode;<br />
&nbsp;&nbsp;&nbsp; treeNodeName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; nameOfProject;<br />
&nbsp;&nbsp;&nbsp; groupNodeType&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groupNodeType;<br />
&nbsp;&nbsp;&nbsp; treeNodeName&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groupNodeName;<br />
&nbsp;&nbsp;&nbsp; dialog&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dialog;<br />
&nbsp;&nbsp;&nbsp; dialogField&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; dfProjectName;<br />
&nbsp;&nbsp;&nbsp; #AOTExport<br />
&nbsp;&nbsp;&nbsp; ;<br />
&nbsp;&nbsp;&nbsp; // Create dialog<br />
&nbsp;&nbsp;&nbsp; dialog = new dialog();<br />
&nbsp;&nbsp;&nbsp; dfProjectName = dialog.addFieldValue(typeId(treeNodeName), &quot;NameOfproject&quot;, &quot;Name of project&quot;);<br />
&nbsp;&nbsp;&nbsp; if( !dialog.run())<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; nameOfProject = dfProjectName.value() ? dfProjectName.value() : &quot;Unknown&quot;;<br />
&nbsp;&nbsp;&nbsp;&nbsp;<br />
&nbsp;&nbsp;&nbsp; // Add available values to container<br />
&nbsp;&nbsp;&nbsp; DictEnum = new DictEnum(enumName2Id(identifierStr(GroupNodeType)));<br />
&nbsp;&nbsp;&nbsp; for(i=1;i&lt;DictEnum.values();i++)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conValues = conIns(conValues, conLen(conValues)+1, [DictEnum.index2Label(i), i, false]);<br />
&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp; // Call selectMultiple<br />
&nbsp;&nbsp;&nbsp; conSelectMultiple = selectMultiple(&quot;Please select&quot;, &quot;Please select the needed project-groups&quot;, conValues);<br />
&nbsp;&nbsp;&nbsp; conSelectedValues = conPeek(conSelectMultiple, 2);<br />
&nbsp;&nbsp;&nbsp; if( !conPeek(conSelectMultiple, 1))<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; // Create shared project<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp; = infolog.projectRootNode();<br />
&nbsp;&nbsp;&nbsp; projectNode&nbsp;&nbsp;&nbsp; = projectNode.AOTfindChild(#expProjectShared);<br />
&nbsp;&nbsp;&nbsp; myProjectNode&nbsp; = projectNode.AOTfindChild(nameOfProject);<br />
<br />
&nbsp;&nbsp;&nbsp; if( !myProjectNode)<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myProjectNode = projectNode.AOTadd(nameOfProject);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myProjectNode.AOTsave();<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; myProjectNode&nbsp;&nbsp;&nbsp;&nbsp; = myProjectNode.getRunNode();<br />
<br />
&nbsp;&nbsp;&nbsp; if(conPeek(conSelectMultiple, 1))<br />
&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for (i=1; i&lt;=conLen(conSelectedValues); i++)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; groupNodeName = DictEnum.index2Label(conPeek(conSelectedValues, i));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; projectGroupNode = myProjectNode.AOTfindChild(groupNodeName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( !projectGroupNode)<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myProjectNode.AOTadd(groupNodeName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; projectGroupNode = myProjectNode.AOTfindChild(groupNodeName);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; projectGroupNode.projectGroupType(DictEnum.name2Value(groupNodeName));<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; myProjectNode.AOTsave();<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br />
&nbsp;&nbsp;&nbsp; }<br />
<br />
&nbsp;&nbsp;&nbsp; projectGroupNode.AOTsave();<br />
<br />
&nbsp;&nbsp;&nbsp; myProjectNode.AOTsave();<br />
&nbsp;&nbsp;&nbsp; myProjectNode.AOTrefresh();<br />
&nbsp;&nbsp;&nbsp; myProjectNode.AOTrun();<br />
}
</div>

<p>Obiger Code funktioniert meines Wissens nach in Dynamics AX 4.0 und Dynamics AX 2009.
</p>

<p>&nbsp;
</p>

<p>&nbsp;
</p>]]></description>
<category>Microsoft Dynamics AX (Axapta)</category>
<pubDate>Thu, 05 Aug 2010 19:15:00 +0200</pubDate>
<link>https://www.schweda.net/blog_ax.php?bid=391</link>
<comments>https://www.schweda.net/blog_ax.php?bid=391</comments>
<guid isPermaLink="true">https://www.schweda.net/blog_ax.php?bid=391</guid>
<author>heinz.schweda@schweda.net (Heinz Schweda)</author>
<wfw:commentRss>https://www.schweda.net/blog_ax.php?bid=391</wfw:commentRss>
</item>
</channel>
</rss>	
