<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>Aku's AX Blog</title>
    <link>http://blog.ak-home.net/</link>
    <description>...feel the spirit of Microsoft Dynamics AX</description>
    <language>de</language>
    <copyright>Axel Kühn</copyright>
    <lastBuildDate>Thu, 18 Jun 2009 18:56:05 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 1.9.6264.0</generator>
    <managingEditor>kuehn@ak-home.net</managingEditor>
    <webMaster>kuehn@ak-home.net</webMaster>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" href="http://feeds.feedburner.com/AkusAxBlog" type="application/rss+xml" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com" /><item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=38a9bff0-2bfd-492b-b323-9cb6f4750289</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,38a9bff0-2bfd-492b-b323-9cb6f4750289.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,38a9bff0-2bfd-492b-b323-9cb6f4750289.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=38a9bff0-2bfd-492b-b323-9cb6f4750289</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die neue oder zweite Auflage von "Inside Mircosoft Dynamics AX" ist vor wenigen Tage
erschienen.
</p>
        <p>
          <a href="http://www.amazon.de/Inside-Microsoft-Dynamics%C2%AE-AX-2009/dp/0735626456/ref=sr_1_1?ie=UTF8&amp;s=books-intl-de&amp;qid=1245351262&amp;sr=8-1">Inside
Mircosoft Dynamics AX 2009</a>
        </p>
        <p>
Wie auch schon die erste Auflage des Buches, welche auf der Version 4.0 von Microsoft
Dynamics AX basierte, ist diese Buch in erster Linie für Entwickler gedacht.<br />
Die aktuelle Auflage umfasst gut 100 Seiten mehr als die erste Auflage und ist leider
auch im Preis etwas teurer.
</p>
        <p>
Weitere Informationen über den Inhalt können z.B. auf den Seiten von <a href="http://www.amazon.de/Inside-Microsoft-Dynamics%C2%AE-AX-2009/dp/0735626456/ref=sr_1_1?ie=UTF8&amp;s=books-intl-de&amp;qid=1245351262&amp;sr=8-1">Amazon</a> entnommen
werden.
</p>
        <p>
Es ist zu hoffen, dass sich diese Auflage auf gleichem Level wie die erste Auflage
bewegt und somit zu einem "Must-Have" oder "Must-Read" für AX Entwickler wird.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=38a9bff0-2bfd-492b-b323-9cb6f4750289" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Neues Buch - Inside Microsoft Dynamics AX 2009</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,38a9bff0-2bfd-492b-b323-9cb6f4750289.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/qNTMFTGPkHk/PermaLink,guid,38a9bff0-2bfd-492b-b323-9cb6f4750289.aspx</link>
      <pubDate>Thu, 18 Jun 2009 18:56:05 GMT</pubDate>
      <description>&lt;p&gt;
Die neue oder zweite Auflage von "Inside Mircosoft Dynamics AX" ist vor wenigen Tage
erschienen.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.amazon.de/Inside-Microsoft-Dynamics%C2%AE-AX-2009/dp/0735626456/ref=sr_1_1?ie=UTF8&amp;amp;s=books-intl-de&amp;amp;qid=1245351262&amp;amp;sr=8-1"&gt;Inside
Mircosoft Dynamics AX 2009&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Wie auch schon die erste Auflage des Buches, welche auf der Version 4.0 von Microsoft
Dynamics AX basierte, ist diese Buch in erster Linie für Entwickler gedacht.&lt;br&gt;
Die aktuelle Auflage umfasst gut 100 Seiten mehr als die erste Auflage und ist leider
auch im Preis etwas teurer.
&lt;/p&gt;
&lt;p&gt;
Weitere Informationen über den Inhalt können z.B. auf den Seiten von &lt;a href="http://www.amazon.de/Inside-Microsoft-Dynamics%C2%AE-AX-2009/dp/0735626456/ref=sr_1_1?ie=UTF8&amp;amp;s=books-intl-de&amp;amp;qid=1245351262&amp;amp;sr=8-1"&gt;Amazon&lt;/a&gt; entnommen
werden.
&lt;/p&gt;
&lt;p&gt;
Es ist zu hoffen, dass sich diese Auflage auf gleichem Level wie die erste Auflage
bewegt und somit zu einem "Must-Have" oder "Must-Read" für AX Entwickler wird.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=38a9bff0-2bfd-492b-b323-9cb6f4750289" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,38a9bff0-2bfd-492b-b323-9cb6f4750289.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics AX/Dynamics AX 2009;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,38a9bff0-2bfd-492b-b323-9cb6f4750289.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=4d8c906e-3eb6-440f-a1da-973c3c0d3958</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,4d8c906e-3eb6-440f-a1da-973c3c0d3958.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,4d8c906e-3eb6-440f-a1da-973c3c0d3958.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=4d8c906e-3eb6-440f-a1da-973c3c0d3958</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Heute bin ich, bei einem meiner "Streifzüge" durch das Internet, auf eine neue Seite
zum Thema Dynamics gestoßen.
</p>
        <p>
Diese neue Seite heißt <a href="http://www.dynamicsworld.co.uk">DynamicsWorld</a>.
</p>
        <p>
Als einer der ersten Einträge, wurde dort eine Liste der 100 einflussreichsten Menschen,
bezogen auf Microsoft Dynamics, veröffentlicht.<br />
Wie diese Liste erstellt wurde, bzw. welche Kriterien zur Erstellung dieser Liste
verwendet/berücksichtigt wurde ist ebenfalls beschrieben.
</p>
        <p>
Nach einem Blick auf diese Liste war ich sehr erstaunt.<br />
Unter Position 62 ist folgendes zu lesen (Orginalauszug):
</p>
        <p style="TEXT-ALIGN: justify; FONT-SIZE: 12pt" class="MsoNormal" align="justify">
          <font style="FONT-SIZE: 14pt" size="4">Axel Kühn </font>
        </p>
        <p style="TEXT-ALIGN: justify; FONT-SIZE: 12pt" class="MsoNormal" align="justify">
          <font style="FONT-SIZE: 12pt" size="3">One of the German Dynamics AX developers who
has resisted the temptation to fall in to the arms of SAP. He has been a regular contributor
to the GLS layer for Germany and is involved in some of the largest AX implementations,
his blog blog.ak-home.net regularly has a readership of over 3000 AX developers and
consultants. </font>
        </p>
        <p>
Der orginale Eintrag ist <a href="http://www.dynamicsworld.co.uk/page009.html">hier</a> zu
finden.
</p>
        <p>
Ich freue mich zu lesen, dass meine Bemühungen und Beiträge zu der Microsoft Dynamics
Community so hoch bewertet werden.
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=4d8c906e-3eb6-440f-a1da-973c3c0d3958" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>DynamicsWorld - Microsoft Dynamics Top 100 Influential People </title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,4d8c906e-3eb6-440f-a1da-973c3c0d3958.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/Ho0kcoGPWJM/PermaLink,guid,4d8c906e-3eb6-440f-a1da-973c3c0d3958.aspx</link>
      <pubDate>Thu, 11 Jun 2009 17:55:22 GMT</pubDate>
      <description>&lt;p&gt;
Heute bin ich, bei einem meiner "Streifzüge" durch das Internet, auf eine neue Seite
zum Thema Dynamics gestoßen.
&lt;/p&gt;
&lt;p&gt;
Diese neue Seite heißt &lt;a href="http://www.dynamicsworld.co.uk"&gt;DynamicsWorld&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Als einer der ersten Einträge, wurde dort eine Liste der 100 einflussreichsten Menschen,
bezogen auf Microsoft Dynamics, veröffentlicht.&lt;br&gt;
Wie diese Liste erstellt wurde, bzw. welche Kriterien zur Erstellung dieser Liste
verwendet/berücksichtigt wurde&amp;nbsp;ist ebenfalls beschrieben.
&lt;/p&gt;
&lt;p&gt;
Nach einem Blick auf diese Liste war ich sehr erstaunt.&lt;br&gt;
Unter Position 62 ist folgendes zu lesen (Orginalauszug):
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: justify; FONT-SIZE: 12pt" class=MsoNormal align=justify&gt;
&lt;font style="FONT-SIZE: 14pt" size=4&gt;Axel Kühn &lt;/font&gt;
&lt;/p&gt;
&lt;p style="TEXT-ALIGN: justify; FONT-SIZE: 12pt" class=MsoNormal align=justify&gt;
&lt;font style="FONT-SIZE: 12pt" size=3&gt;One of the German Dynamics AX developers who
has resisted the temptation to fall in to the arms of SAP. He has been a regular contributor
to the GLS layer for Germany and is involved in some of the largest AX implementations,
his blog blog.ak-home.net regularly has a readership of over 3000 AX developers and
consultants. &lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Der orginale Eintrag ist &lt;a href="http://www.dynamicsworld.co.uk/page009.html"&gt;hier&lt;/a&gt; zu
finden.
&lt;/p&gt;
&lt;p&gt;
Ich freue mich zu lesen, dass meine Bemühungen und Beiträge zu der Microsoft Dynamics
Community so hoch bewertet werden.
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=4d8c906e-3eb6-440f-a1da-973c3c0d3958" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,4d8c906e-3eb6-440f-a1da-973c3c0d3958.aspx</comments>
      <category>Allgemein;Dynamics Ax</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,4d8c906e-3eb6-440f-a1da-973c3c0d3958.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=06d4c0c2-9748-4a05-bcae-0925f08fee2f</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,06d4c0c2-9748-4a05-bcae-0925f08fee2f.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,06d4c0c2-9748-4a05-bcae-0925f08fee2f.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=06d4c0c2-9748-4a05-bcae-0925f08fee2f</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In dem Artikel "<a href="http://blog.ak-home.net/PermaLink,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx">Anzeige
von Lagerdimensionen auf Masken</a>" wurde bereits gezeigt, was zu tun ist, um
die Anzeige von Lagerdimensionen auf Masken dynamisch anpassen zu können bzw. das
Standardverhalten für die Anzeige von Lagerdimensionen zu implementieren.
</p>
        <p>
Manchmal soll eine ähnliche Funktionalität auch für Berichte bereit gestellt werden,
um zum Beispiel vor der Berichtserstellung auswählen zu können, welche Lagerdimensionen
auf dem Bericht(Report) angedruckt werden.<br />
Auch hierfür sind im Dynamics AX Standard die entsprechenden Funktionalitäten (oder
besser Klassen) bereits vorhanden, sodass diese nur verwendet werden müssen.
</p>
        <p>
Als Ausgangsbasis für den Bericht dient ebenfalls die Tabelle „AKU_DemoTable“.<br /><img border="0" src="http://blog.ak-home.net/content/binary/Tabelle.jpg" /></p>
        <p>
Der Bericht soll nun, die in dieser Tabelle gespeicherten Datensätze andrucken/ausgeben.<br /><img border="0" src="http://blog.ak-home.net/content/binary/Report.jpg" /></p>
        <p>
Wie bei Masken, muss auch für einen Bericht, die Query entsprechend um die Tabelle
InventDim ergänzt werden.<br />
Hierbei ist zu beachten, dass die Eigenschaften (Properties) „FetchMode“ auf „1:1“
und „Relations“ auf „Yes“ gesetzt werden.<br /><img border="0" src="http://blog.ak-home.net/content/binary/Report_Datasource_Properties.jpg" /></p>
        <p>
Als nächstes muss nun, ebenfalls analog zu dem Vorgehen bei Masken, die Feldgruppe
„InventoryDimensions“ in den Designzweig des Reports aufgenommen werden.<br />
Beispielhaft wird diese in einem Body-Element erstellt.<br /><img border="0" src="http://blog.ak-home.net/content/binary/Report_Body.jpg" /></p>
        <p>
Nun müssen noch einige Anpassungen an den Methoden des Berichts durchgeführt werden,
damit das gewünschte Ergebnis erreicht werden kann.<br />
Bezogen auf die Möglichkeit, die zu druckenden Lagerdimensionen bestimmen zu können,
müssen die Methoden „classDeclaration“, „run“, „dialog“ und „getFromDialog“ wie folgt
überschrieben werden.<br />
Auch das Überschreiben der Methoden „pack“ und „unpack“ ist hilfreich (für die Lagerdimensionsanzeige
nicht zwingend erforderlich), da über diese die Speicherung der „Nutzungsdaten“ realisiert
wird.
</p>
        <p>
          <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
            <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">public</span>
            <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">class</span> ReportRun
extends ObjectRun<br />
{<br />
   InventDimParm inventDimParm;<br />
   DialogRunbase dialog;<br />
   DialogGroup dialogInventoryDimensions;<br /><br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   #define</span>.CurrentVersion(1)<br />
   #localmacro.CurrentList<br />
      inventDimParm<br />
   #endmacro<br />
}</span>
        </p>
        <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
          <p>
            <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
              <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">void</span> updateDesign()<br />
{<br />
   ;<br />
   InventDimCtrl::updateReportVisible(element, inventDimParm);<br />
}</span>
          </p>
          <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
            <p>
              <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">public</span>
                <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">void</span> run()<br />
{<br />
   ;<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   this</span>.updateDesign();<br />
   super();<br />
}</span>
            </p>
            <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
              <p>
                <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                  <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">public</span> Object
dialog(Object _dialog)<br />
{<br />
   ;<br />
   dialog <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px">=</span> _dialog;<br />
   dialogInventoryDimensions <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px">=</span> inventDimParm.addFieldsToDialog(dialog,<span style="BACKGROUND-COLOR: #e4e4e4; FONT-FAMILY: Courier New; COLOR: #666666; FONT-SIZE: 11px">"@SYS53654"</span>,<span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">true</span>, <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">false</span>, <span style="BACKGROUND-COLOR: #e4e4e4; FONT-FAMILY: Courier New; COLOR: #666666; FONT-SIZE: 11px">"@SYS102592"</span>);<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   return</span> dialog;<br />
}</span>
              </p>
              <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                <p>
                  <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                    <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">public</span> boolean
getFromDialog()<br />
{<br />
   ;<br />
   inventDimParm.getFromDialog(dialog, dialogInventoryDimensions);<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   return</span><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">true</span>;<br />
}</span>
                </p>
                <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                  <p>
                    <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                      <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">public</span> container
pack()<br />
{<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   return</span> [#CurrentVersion,
#CurrentList];<br />
}</span>
                  </p>
                  <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                    <p>
                      <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px">
                        <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">public</span> boolean
unpack(container packedClass)<br />
{<br />
   Version version <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px">=</span> RunBase::getVersion(packedClass);<br />
   ;<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   switch</span>(version)<br />
   {<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">      case</span> #CurrentVersion:<br />
         [version,#CurrentList] <span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px">=</span> packedClass;<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">         break</span>;<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">      default</span>:<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">         return</span><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">false</span>;<br />
   }<br /><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">   return</span><span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px">true</span>;<br />
}</span>
                    </p>
                  </span>
                </span>
              </span>
            </span>
          </span>
        </span>
        <p>
Wird nun der Bericht geöffnet, zum Beispiel über ein MenuItem, kann in einem Dialog
ausgewählt werden, welche Lagerdimensionen auf dem Report angedruckt werden sollen.<br /></p>
        <p>
          <img border="0" src="http://blog.ak-home.net/content/binary/Report_Dialog.jpg" />
        </p>
        <p>
Der ausgegebene Bericht(Report) sieht, unter Berücksichtigung der im Dialog gewählten
Einstellungen, wie folgt aus.<br /><img border="0" src="http://blog.ak-home.net/content/binary/Report_Ausgabe.jpg" /></p>
        <p>
Das vorgestellt Bespiel steht <a href="http://blog.ak-home.net/content/binary/AKU_Demo_InventDimRep.rar"><font color="#000099">hier</font></a> als
Download bereit um die einzelnen Schritte genau ansehen/nachvollziehen zu können.<br /></p>
        <a href="http://blog.ak-home.net/content/binary/AKU_Demo_InventDimRep.rar">AKU_Demo_InventDimRep.rar
(1,99 KB)</a>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=06d4c0c2-9748-4a05-bcae-0925f08fee2f" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Anzeige von Lagerdimensionen auf Berichten</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,06d4c0c2-9748-4a05-bcae-0925f08fee2f.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/FYAvQt3mKgo/PermaLink,guid,06d4c0c2-9748-4a05-bcae-0925f08fee2f.aspx</link>
      <pubDate>Sat, 04 Apr 2009 17:24:53 GMT</pubDate>
      <description>&lt;p&gt;
In dem&amp;nbsp;Artikel "&lt;a href="http://blog.ak-home.net/PermaLink,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx"&gt;Anzeige
von Lagerdimensionen auf Masken&lt;/a&gt;"&amp;nbsp;wurde bereits gezeigt, was zu tun ist, um
die Anzeige von Lagerdimensionen auf Masken dynamisch anpassen zu können bzw. das
Standardverhalten für die Anzeige von Lagerdimensionen zu implementieren.
&lt;/p&gt;
&lt;p&gt;
Manchmal soll eine ähnliche Funktionalität auch für Berichte bereit gestellt werden,
um zum Beispiel vor der Berichtserstellung auswählen zu können, welche Lagerdimensionen
auf dem Bericht(Report)&amp;nbsp;angedruckt werden.&lt;br&gt;
Auch hierfür sind im Dynamics AX Standard die entsprechenden Funktionalitäten (oder
besser Klassen) bereits vorhanden, sodass diese nur verwendet werden müssen.
&lt;/p&gt;
&lt;p&gt;
Als Ausgangsbasis für den Bericht dient ebenfalls die Tabelle „AKU_DemoTable“.&lt;br&gt;
&lt;img border=0 src="http://blog.ak-home.net/content/binary/Tabelle.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Der Bericht soll nun, die in dieser Tabelle gespeicherten Datensätze andrucken/ausgeben.&lt;br&gt;
&lt;img border=0 src="http://blog.ak-home.net/content/binary/Report.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Wie bei Masken, muss auch für einen Bericht, die Query entsprechend um die Tabelle
InventDim ergänzt werden.&lt;br&gt;
Hierbei ist zu beachten, dass die Eigenschaften (Properties) „FetchMode“ auf „1:1“
und „Relations“ auf „Yes“ gesetzt werden.&lt;br&gt;
&lt;img border=0 src="http://blog.ak-home.net/content/binary/Report_Datasource_Properties.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Als nächstes muss nun, ebenfalls analog zu dem Vorgehen bei Masken, die Feldgruppe
„InventoryDimensions“ in den Designzweig des Reports aufgenommen werden.&lt;br&gt;
Beispielhaft wird diese in einem Body-Element erstellt.&lt;br&gt;
&lt;img border=0 src="http://blog.ak-home.net/content/binary/Report_Body.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Nun müssen noch einige Anpassungen an den Methoden des Berichts durchgeführt werden,
damit das gewünschte Ergebnis erreicht werden kann.&lt;br&gt;
Bezogen auf die Möglichkeit, die zu druckenden Lagerdimensionen bestimmen zu können,
müssen die Methoden „classDeclaration“, „run“, „dialog“ und „getFromDialog“ wie folgt
überschrieben werden.&lt;br&gt;
Auch das Überschreiben der Methoden „pack“ und „unpack“ ist hilfreich (für die Lagerdimensionsanzeige
nicht zwingend erforderlich), da über diese die Speicherung der „Nutzungsdaten“ realisiert
wird.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;public&lt;/span&gt; &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;class&lt;/span&gt; ReportRun
extends ObjectRun&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;InventDimParm inventDimParm;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;DialogRunbase dialog;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;DialogGroup dialogInventoryDimensions;&lt;br&gt;
&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;#define&lt;/span&gt;.CurrentVersion(1)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;#localmacro.CurrentList&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;inventDimParm&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;#endmacro&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt; 
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;void&lt;/span&gt; updateDesign()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;InventDimCtrl::updateReportVisible(element, inventDimParm);&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt; 
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;public&lt;/span&gt; &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;void&lt;/span&gt; run()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;this&lt;/span&gt;.updateDesign();&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;super();&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt; 
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;public&lt;/span&gt; Object
dialog(Object _dialog)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;dialog &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px"&gt;=&lt;/span&gt; _dialog;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;dialogInventoryDimensions &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px"&gt;=&lt;/span&gt; inventDimParm.addFieldsToDialog(dialog,&lt;span style="BACKGROUND-COLOR: #e4e4e4; FONT-FAMILY: Courier New; COLOR: #666666; FONT-SIZE: 11px"&gt;"@SYS53654"&lt;/span&gt;,&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;true&lt;/span&gt;, &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;false&lt;/span&gt;, &lt;span style="BACKGROUND-COLOR: #e4e4e4; FONT-FAMILY: Courier New; COLOR: #666666; FONT-SIZE: 11px"&gt;"@SYS102592"&lt;/span&gt;);&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; dialog;&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt; 
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;public&lt;/span&gt; boolean
getFromDialog()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;inventDimParm.getFromDialog(dialog, dialogInventoryDimensions);&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;true&lt;/span&gt;;&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt; 
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;public&lt;/span&gt; container
pack()&lt;br&gt;
{&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; [#CurrentVersion,
#CurrentList];&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt; 
&lt;p&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: black; FONT-SIZE: 11px"&gt;&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;public&lt;/span&gt; boolean
unpack(container packedClass)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Version version &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px"&gt;=&lt;/span&gt; RunBase::getVersion(packedClass);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch&lt;/span&gt;(version)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&lt;/span&gt; #CurrentVersion:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;[version,#CurrentList] &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: red; FONT-SIZE: 11px"&gt;=&lt;/span&gt; packedClass;&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break&lt;/span&gt;;&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;default&lt;/span&gt;:&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;false&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; &lt;span style="BACKGROUND-COLOR: transparent; FONT-FAMILY: Courier New; COLOR: blue; FONT-SIZE: 11px"&gt;true&lt;/span&gt;;&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt; 
&lt;p&gt;
Wird nun der Bericht geöffnet, zum Beispiel über ein MenuItem, kann in einem Dialog
ausgewählt werden, welche Lagerdimensionen auf dem Report angedruckt werden sollen.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img border=0 src="http://blog.ak-home.net/content/binary/Report_Dialog.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Der ausgegebene Bericht(Report) sieht, unter Berücksichtigung der im Dialog gewählten
Einstellungen, wie folgt aus.&lt;br&gt;
&lt;img border=0 src="http://blog.ak-home.net/content/binary/Report_Ausgabe.jpg"&gt;
&lt;/p&gt;
&lt;p&gt;
Das vorgestellt Bespiel steht &lt;a href="http://blog.ak-home.net/content/binary/AKU_Demo_InventDimRep.rar"&gt;&lt;font color=#000099&gt;hier&lt;/font&gt;&lt;/a&gt; als
Download bereit um die einzelnen Schritte genau ansehen/nachvollziehen zu können.&lt;br&gt;
&lt;/p&gt;
&lt;a href="http://blog.ak-home.net/content/binary/AKU_Demo_InventDimRep.rar"&gt;AKU_Demo_InventDimRep.rar
(1,99 KB)&lt;/a&gt;&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=06d4c0c2-9748-4a05-bcae-0925f08fee2f" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,06d4c0c2-9748-4a05-bcae-0925f08fee2f.aspx</comments>
      <category>Dynamics Ax;Dynamics AX/Dynamics AX 2009;Dynamics Ax/HowTo;Dynamics Ax/Programmierung;Dynamics Ax/Programmierung, Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,06d4c0c2-9748-4a05-bcae-0925f08fee2f.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=fd018139-6a7c-4cc3-9c20-2beb9449d933</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,fd018139-6a7c-4cc3-9c20-2beb9449d933.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,fd018139-6a7c-4cc3-9c20-2beb9449d933.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=fd018139-6a7c-4cc3-9c20-2beb9449d933</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Heute erhielt ich von Microsoft die erfreuliche Nachricht, dass ich ein weiteres Jahr
den Titel Microsoft Most Valuable Professional tragen darf.
</p>
        <p>
Ich fühle mich geehrt, diese Auszeichnung nun schon zum 2ten mal (in Folge) erhalten
zu haben.
</p>
        <p>
Ich möchte mich an dieser Stelle bei allen bedanken, die mich in den letzten Monaten
immer wieder tatkräftig unterstützt haben.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=fd018139-6a7c-4cc3-9c20-2beb9449d933" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft MVP 2009 (Dynamics AX)</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,fd018139-6a7c-4cc3-9c20-2beb9449d933.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/mwBCcQ2BleU/PermaLink,guid,fd018139-6a7c-4cc3-9c20-2beb9449d933.aspx</link>
      <pubDate>Wed, 01 Apr 2009 18:34:59 GMT</pubDate>
      <description>&lt;p&gt;
Heute erhielt ich von Microsoft die erfreuliche Nachricht, dass ich ein weiteres Jahr
den Titel Microsoft Most Valuable Professional tragen darf.
&lt;/p&gt;
&lt;p&gt;
Ich fühle mich geehrt, diese Auszeichnung nun schon zum 2ten mal (in Folge) erhalten
zu haben.
&lt;/p&gt;
&lt;p&gt;
Ich möchte mich an dieser Stelle bei allen bedanken, die mich in den letzten Monaten
immer wieder tatkräftig unterstützt haben.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=fd018139-6a7c-4cc3-9c20-2beb9449d933" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,fd018139-6a7c-4cc3-9c20-2beb9449d933.aspx</comments>
      <category>Allgemein</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,fd018139-6a7c-4cc3-9c20-2beb9449d933.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8</wfw:commentRss>
      <title>Anzeige von Lagerdimensionen auf Masken</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/MD7oHl_CwQc/PermaLink,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx</link>
      <pubDate>Fri, 13 Mar 2009 16:50:59 GMT</pubDate>
      <description>&lt;p&gt;
Im Standard von Microsoft Dynamics AX besteht auf jeder Maske, auf der Artikel und
deren Lagerdimensionen angezeigt werden, die Möglichkeit, die Lagerdimensionen, bzw.
die angezeigten Felder der Lagerdimensionen, über die Funktion "Lager-Dimensionenanzeige"
entsprechend zu steuern.
&lt;/p&gt;
&lt;p&gt;
Die einzelnen Elemente (Felder) der Lagerdimension können über diese Funktion ein-
bzw. ausgebledet werden.
&lt;/p&gt;
&lt;p&gt;
Weiterhin ist es auch möglich, durch Parametrisierung zu bestimmen, ob ein Feld einer
Lagerdimension eingeben werden muss (Mussfeld) oder ob überhaupt eine Eingabe möglich
ist.
&lt;/p&gt;
&lt;p&gt;
Ein gutes Beispiel hierfür ist die Maske "Aufträge".
&lt;/p&gt;
&lt;p&gt;
Wie ist es nun, wenn eine neue&amp;nbsp;Maske erstellt werden soll, welche Artikelinformation
und Lagerdimensionen anzeigen soll?&lt;br&gt;
Wie genau muss vorgegangen werden,&amp;nbsp;um die bereits an vielen Stellen im Standard
verwendete Funktionalität auch für die selbst erstellte Maske bereitzustellen?&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Gehen wir einmal davon aus, es wurde eine neue Tabelle erstellt, welche die Artikelnummer
(ItemId)&amp;nbsp;und die Lagerdimensionsnummer (InventDimId)&amp;nbsp;speichert.&lt;br&gt;
Für diese Tabelle soll eine Maske erstellt werden, úm dem Benutzer die Möglichkeit
zu geben, Datensätze zu erfassen, zu ändern oder einfach nur anzuzeigen.
&lt;/p&gt;
&lt;p&gt;
Dies könnte z.B. so aussehen:&lt;br&gt;
&lt;img src="http://blog.ak-home.net/content/binary/CreateTableAndForm.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Um nun die Funktion der Lagerdimensionensteuerung einzubauen muss zuerst die Tabelle
InventDim als DataSource der Maske hinzugefügt werden.&lt;br&gt;
Anschließend müssen die Eigenschaften (Properties)&amp;nbsp;der DataSource noch auf folgende
Werte geändert werden.
&lt;/p&gt;
&lt;p&gt;
&lt;table class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing=0 cellpadding=0 border=1&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;&lt;?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /&gt;Name&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;InventDim&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;JoinSource&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Haupt-Datenquelle (hier: AKUDemoTable)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;LinkType&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;InnerJoin&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 3"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;DelayActive&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 4"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;InsertAtEnd&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 5; mso-yfti-lastrow: yes"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;InsertIfEmpty&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;No&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/InventDimProperties.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Nun muss&amp;nbsp;eine neue ButtonGroup (Name: "Inventory") im Designzweig der Maske erstellt
werden. Diese sollte das LAbel "Lager" zugewiesen werden.&lt;br&gt;
Nun noch das MenuItem "InventDimParmFixed" in diese ButtonGroup ziehen (z.B. per drag
&amp;amp; drop aus dem AOT) und dem so erstellten MenuItemButton folgende Eigenschaften
zuweisen.
&lt;/p&gt;
&lt;p&gt;
&lt;table class=MsoTableGrid style="BORDER-RIGHT: medium none; BORDER-TOP: medium none; BORDER-LEFT: medium none; BORDER-BOTTOM: medium none; BORDER-COLLAPSE: collapse; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt" cellspacing=0 cellpadding=0 border=1&gt;
&lt;tbody&gt;
&lt;tr style="mso-yfti-irow: 0; mso-yfti-firstrow: yes"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Name&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: black 1pt solid; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;InventDimParmFixed&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 1"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;MenuItemName&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;InventDimParmFixed&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style="mso-yfti-irow: 2; mso-yfti-lastrow: yes"&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: black 1pt solid; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;DataSource&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;td style="BORDER-RIGHT: black 1pt solid; PADDING-RIGHT: 5.4pt; BORDER-TOP: #ebe9ed; PADDING-LEFT: 5.4pt; PADDING-BOTTOM: 0cm; BORDER-LEFT: #ebe9ed; WIDTH: 230.3pt; PADDING-TOP: 0cm; BORDER-BOTTOM: black 1pt solid; BACKGROUND-COLOR: transparent; mso-border-alt: solid black .5pt; mso-border-themecolor: text1; mso-border-left-alt: solid black .5pt; mso-border-left-themecolor: text1; mso-border-top-alt: solid black .5pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1" valign=top width=307&gt;
&lt;p class=MsoNormal style="MARGIN: 0cm 0cm 0pt; LINE-HEIGHT: normal"&gt;
&lt;font color=#000000&gt;&lt;font face=Calibri&gt;Haupt-Datenquelle (hier: AKUDemoTable)&lt;o:p&gt;&lt;/o:p&gt;
&lt;/font&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/MenuItemButtonInventDimParmFixed.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Über das MenuItem (oder genauer über den erstellten MenuItemButton) wird nun wie im
Standard, die Maske "Lagerdimensionen" zu öffnen.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/FormWithDimSelection.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Allerdings öffnet sich die Maske „Lagerdimensionen“ noch nicht wie gewünscht über
den MenuItemButton. Hierfür sind noch weitere Anpassungen notwendig.
&lt;/p&gt;
&lt;p&gt;
Damit sich die Maske „Lagerdimensionen“ wie gewünscht öffnet muss die neue Maske die
Methode „inventDimSetupObject“ implementieren welche eine Instanz von „InventDimCtrl_Frm“
zurück gibt.
&lt;/p&gt;
&lt;p&gt;
Die Klasse „InventDimCtrl_Frm“, bzw. eine der von ihr abgeleiteten Klassen, steuert
z.B. welche Lagerdimensionen für den aktuellen Datensatz zulässig sind oder welche
Dimensionen für den aktuellen Datensatz angegeben werden müssen, damit dieser gespeichert
werden kann.
&lt;/p&gt;
&lt;p&gt;
Da über die Parametrisierung der Lagersteuerungsgruppen und der Modulparameter hierfür
durchaus unterschiedliche Einstellungen gewählt werden können, sind in Dynamics AX
etliche Ableitungen dieser Klasse vorhanden (jede wird für eine oder mehrere andere
Masken verwendet).
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/InventDimCtrl_Frm.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Je nachdem, was für eine Funktionalität bzw. was für ein Business-Prozess erstellt
werden soll, kann entweder eine der bereits im Standard vorhandenen Klassen verwendet
werden oder es muss eine neue Klasse geschrieben werden, um die benötigte Funktionalität
zu liefern (z.B. welche Dimensionen immer angezeigt werden müssen).
&lt;/p&gt;
&lt;p&gt;
Das Erstellen einer neuen Klasse, welche von „InventDimCtrl_Frm“ abgeleitet&amp;nbsp;
ist, ist recht einfach.
&lt;/p&gt;
&lt;p&gt;
Es sollte immer die Methode „new“ überschrieben werden und mindestens die statischen
Methoden „construct“ und „newFromForm“ erstellt werden. 
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; AKUInventDimCtrl_Frm_Demo
extends InventDimCtrl_Frm&lt;br&gt;
{&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;protected&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt;()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; super();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; AKUInventDimCtrl_Frm_Demo
construct()&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
return&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; AKUInventDimCtrl_Frm_Demo();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;static&lt;/span&gt; AKUInventDimCtrl_Frm_Demo
newFromForm(FormRun _formRun)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; AKUInventDimCtrl_Frm_Demo inventDimCtrl &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; AKUInventDimCtrl_Frm_Demo::construct();&lt;br&gt;
&amp;nbsp; InventDimAxFormAdapter adapter &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; InventDimAxFormAdapter::newFromForm(_formRun);&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; inventDimCtrl.parmCallingElement(adapter);&lt;br&gt;
&amp;nbsp; inventDimCtrl.init();&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
return&lt;/span&gt; inventDimCtrl;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Weiterhin können noch andere Methoden überschrieben werden, um z.B. zu steuern, welche
Felder der Tabelle „InventDim“ beim Aufruf der Maske angezeigt werden sollen.&lt;br&gt;
Weitere Informationen hierzu sind im Microsoft Dynamics AX Developer Center zu finden: &lt;a href="http://msdn.microsoft.com/en-us/library/cc618009.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc618009.aspx&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;NoYes
mustShowGridField(fieldId _dimFieldId)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; NoYes ret;&lt;br&gt;
&lt;br&gt;
&amp;nbsp; ret &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; super(_dimFieldId);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
//always show InventLocationId in Grid&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
if&lt;/span&gt;(_dimfieldId == fieldnum(InventDim, InventLocationId))&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; ret &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; NoYes::Yes;&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
return&lt;/span&gt; ret;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Wie zuvor beschrieben muss nun die Methode „inventDimSetupObject“ auf der Maske implementiert
werden. Das diese eine Instanz von „InventDimCtrl_Frm“ zurück geben muss, ist diese
ebenfalls zu erzeugen. Als erstes muss eine Objektvariable für das „InventDimCtrl_Frm“
Objekt erstellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;class&lt;/span&gt; FormRun
extends ObjectRun&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; InventDimCtrl_Frm inventDimFormSetup;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Anschließend kann die Methode „inventDimSetupObject“ erstellt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;Object
inventDimSetupObject()&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
return&lt;/span&gt; inventDimFormSetup;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Da die Objektvariable durch diesen Quelltext noch nicht initialisiert wird, muss noch
entsprechender Code zur Initialisierung geschrieben werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; updateDesign(InventDimFormDesignUpdate
mode)&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; inventDimParm inventDimParmShow;&lt;br&gt;
&amp;nbsp; inventDimParm inventDimParmEnabled;&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
switch&lt;/span&gt; (mode)&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
case&lt;/span&gt; InventDimFormDesignUpdate::Init :&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
if&lt;/span&gt; (!inventDimFormSetup)&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDimFormSetup &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; AKUInventDimCtrl_Frm_Demo::newFromForm(element);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; }&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDimFormSetup.parmSkipOnHandLookUp(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
case&lt;/span&gt; InventDimFormDesignUpdate::Active :&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDimFormSetup.formActiveSetup(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventTable::find(AKUDemoTable.ItemId).dimGroupId);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDimFormSetup.formSetControls(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
break&lt;/span&gt;;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
case&lt;/span&gt; InventDimFormDesignUpdate::FieldChange :&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDimFormSetup.formActiveSetup(&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventTable::find(AKUDemoTable.ItemId).dimGroupId);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDim.clearNotSelectedDim(inventDimFormSetup.parmDimParmEnabled());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; inventDimFormSetup.formSetControls(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
break&lt;/span&gt;;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;
default&lt;/span&gt; :&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
throw&lt;/span&gt; error(strfmt(&lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"@SYS54195"&lt;/span&gt;,funcname()));&lt;br&gt;
&amp;nbsp; } 
&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; init()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; super();&lt;br&gt;
&amp;nbsp; element.updateDesign(InventDimFormDesignUpdate::Init);&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Da die Logik, welche durch die Methode „updateDesign“ bereit gestellt wird, mehrfach
benötigt wird, erfolgt die Initialisierung des „InventDimCtrl_Frm“ Objekts nicht direkt
in der „init“ Methode.
&lt;/p&gt;
&lt;p&gt;
Damit die in der Maske erstellten Datensätze auch richtig gespeichert werden können,
müssen nun noch einige weitere Anpassungen an den Methoden der Datenquellen vorgenommen
werden.&lt;br&gt;
&lt;br&gt;
Datasource „AKUDemoTable“ (Hauptdatenquelle):&lt;br&gt;
Hier sind die Methoden „write“, „validateWrite“ und „active“ zu überschreiben.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; write()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; ttsbegin;&lt;br&gt;
&lt;br&gt;
&amp;nbsp; AKUDemoTable.inventDimId &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; InventDim::findOrCreate(InventDim).inventDimId;&lt;br&gt;
&lt;br&gt;
&amp;nbsp; super();&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
if&lt;/span&gt;(AKUDemoTable.inventDimId !&lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; InventDim.inventDimId)&lt;br&gt;
&amp;nbsp; {&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InventDim.data(InventDim::find(AKUDemoTable.inventDimId));&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp; InventDim_ds.setCurrent();&lt;br&gt;
&amp;nbsp; }&lt;br&gt;
&lt;br&gt;
&amp;nbsp; ttscommit;&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; boolean
validateWrite()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; boolean ret;&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; AKUDemoTable.InventDimId &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; inventDim::findOrCreate(InventDim).inventDimId;&lt;br&gt;
&lt;br&gt;
&amp;nbsp; ret &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; super();&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
return&lt;/span&gt; ret;&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;int&lt;/span&gt; active()&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
int&lt;/span&gt; ret;&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; ret &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; super();&lt;br&gt;
&lt;br&gt;
&amp;nbsp; element.updateDesign(InventDimFormDesignUpdate::Active);&lt;br&gt;
&lt;br&gt;
&amp;nbsp; inventDim_DS.active();&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
return&lt;/span&gt; ret;&lt;br&gt;
}&lt;br&gt;
&lt;/p&gt;
&gt; 
&lt;p&gt;
Datasource „InventDim“:&lt;br&gt;
Hier müssen die Methoden „initValue“ und „write“ überschrieben werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; initValue()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; InventDim.data(InventDim::find(AKUDemoTable.inventDimId));&lt;br&gt;
&lt;br&gt;
&amp;nbsp; super();&lt;br&gt;
}&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; write()&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;
//super();&lt;/span&gt;
&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Hierbei muss unbedingt beachtet werden, dass der „super“ Aufruf in der „write“ Methode
der Datasource „InventDim“ auskommentiert wird, um das Speichern von falschen InventDim
Datensätzen zu verhindern.
&lt;/p&gt;
&lt;p&gt;
Als letzte Methode sollte nun noch die Methode „modified“ des DataSource-Field „ItemId“
der Datasource „AKUDemoTable“ überschrieben werden, damit auf eine Änderung der Artikelnummer
reagiert werden kann (z.B. Artikelabhängige Anzeige der Lagerdimensionen).
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;public&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; modified()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp; ;&lt;br&gt;
&amp;nbsp; super();&lt;br&gt;
&amp;nbsp; element.updateDesign(InventDimFormDesignUpdate::FieldChange);&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Somit sind alle benötigten Quelltextanpassungen durchgeführt, sodass nur noch die
Feldgruppe „InventoryDimensions“ der DataSource „InventDim“ mit in das Grid gezogen
werden muss um die Lagerdimensionen auf der Maske anzuzeigen. Optional kann diese
auch in die TabPage „Dimensions“ gezogen werden um ein standardkonformes Aussehen
der Maske zu erhalten.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/FiledgorupInventoryDimensions.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Das vorgestellt Bespiel steht &lt;a href="http://blog.ak-home.net/content/binary/AKU_Demo_InventDimFrm.rar"&gt;hier&lt;/a&gt; als
Download bereit um die einzelnen Schritte genau ansehen/nachvollziehen zu können.&lt;br&gt;
&lt;a href="http://blog.ak-home.net/content/binary/AKU_Demo_InventDimFrm.rar"&gt;AKU_Demo_InventDimFrm.rar
(2,71 KB)&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/HowTo;Dynamics Ax/Programmierung;Dynamics Ax/Programmierung/API</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,3d8d3d4a-130a-4b2f-8a9e-1328ea6d50c8.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=24601242-7843-49f8-9fee-821f57ac7d55</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,24601242-7843-49f8-9fee-821f57ac7d55.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,24601242-7843-49f8-9fee-821f57ac7d55.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=24601242-7843-49f8-9fee-821f57ac7d55</wfw:commentRss>
      <title>Dynamics AX 2009 - Ungewollt den Sys Layer ändern</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,24601242-7843-49f8-9fee-821f57ac7d55.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/Sk_mcjNrAFo/PermaLink,guid,24601242-7843-49f8-9fee-821f57ac7d55.aspx</link>
      <pubDate>Wed, 11 Mar 2009 19:22:18 GMT</pubDate>
      <description>&lt;p&gt;
Leider scheint es ein Problem mit duplizierten Tabellen in Dynamics AX 2009 zu geben.&lt;br&gt;
Unter gewissen "Umständen" ist es möglich, Quelltext der in einem andern Layer (z.B.
CUS oder BUS) geschrieben wurde, in den SYS Layer zu "verschieben". 
&lt;/p&gt;
&lt;p&gt;
Dieser Verhalten ist sehr unschön, da viele Entwickler, z.B. für Testzwecke, mal ein
Objekt duplizieren, neuen Quelltext testen und anschließen diesen&amp;nbsp;auf das orginale
Objekt übernehmen oder verschieben. Leider taucht genau an dieser Stelle das Problem
auf (es kann sein, dass dieses "Verschieben" den Quelltext in den SYS Layer schreibt).
&lt;/p&gt;
&lt;p&gt;
Das genaue Verhalten ist in einem Video von "elranu"&amp;nbsp;auf YouTube beschrieben
(&lt;a href="http://www.youtube.com/watch?v=4HEwNyVAwtI"&gt;Link zum Video&lt;/a&gt;):
&lt;/p&gt;
&lt;p&gt;
&lt;object height=344 width=425&gt;
&lt;param name="movie" value="http://www.youtube.com/v/4HEwNyVAwtI&amp;amp;hl=de&amp;amp;fs=1"&gt;
&lt;param name="allowFullScreen" value="true"&gt;
&lt;param name="allowscriptaccess" value="always"&gt;
&lt;embed src="http://www.youtube.com/v/4HEwNyVAwtI&amp;hl=de&amp;fs=1" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="344"&gt;&lt;/embed&gt;
&lt;/object&gt;
&lt;/p&gt;
&lt;p&gt;
In den Newsgroups ist auch ein entsprechender Thread zu finden: &lt;a href="http://www.microsoft.com/Businesssolutions/Community/NewsGroups/dgbrowser/en-us/default.mspx?&amp;amp;query=ax+2009+sys+layer&amp;amp;lang=en&amp;amp;cr=US&amp;amp;guid=&amp;amp;sloc=en-us&amp;amp;dg=microsoft.public.axapta.programming&amp;amp;p=1&amp;amp;tid=9165d668-001b-4d67-8f7c-10569306bbb7&amp;amp;mid=bd0fc4ff-701a-4bed-8c30-ef00687bfbc5"&gt;&lt;strong&gt;Ax
2009 bug in Sys L&lt;wbr&gt;ayer &lt;/strong&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=24601242-7843-49f8-9fee-821f57ac7d55" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,24601242-7843-49f8-9fee-821f57ac7d55.aspx</comments>
      <category>Dynamics Ax;Dynamics AX/Dynamics AX 2009;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,24601242-7843-49f8-9fee-821f57ac7d55.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=dcaffcda-fd12-4fec-984d-97ded22c5517</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,dcaffcda-fd12-4fec-984d-97ded22c5517.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,dcaffcda-fd12-4fec-984d-97ded22c5517.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=dcaffcda-fd12-4fec-984d-97ded22c5517</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie in einem Artikel auf der Microsoft Dynamics AX Webseite zu lesen ist wird der
"alte" COM Business Connector nicht mehr in zukünftigen Versionen von Dynamics AX
enthalten sein.<br /><a href="http://www.microsoft.com/dynamics/ax/using/ax_combizconnector.mspx">The COM
Business Connector will be discontinued in future releases of Microsoft Dynamics AX</a></p>
        <p>
Bereits in der Version 2009 von Microsoft Dynamics AX wird der COM Business Connector
vom "normalen" Setup nicht mehr angeboten.<br />
Dieser muss manuell, wie im Microsoft Dynamics AX Developer Center beschrieben, nachinstalliert
werden.<br /><a href="http://msdn.microsoft.com/en-us/library/cc624322.aspx">How to: Install COM
Business Connector using Command-line Options</a></p>
        <p>
Somit ist es an der Zeit, bestehende Lösungen welche den COM Business Connector verwenden,
auf den neueren .NET Business Connector zu portieren, um diese Lösungen auch in zukünftigen
Versionen verwenden zu können.
</p>
        <p>
Alle benötigten Informationen über die Verwendung des .NET Business Connectors können
in der Library des Microsoft Dynamics AX Developer Centers gefunden werden<br /><a href="http://msdn.microsoft.com/en-us/library/aa659581.aspx">.NET Business Connector
Overview</a></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=dcaffcda-fd12-4fec-984d-97ded22c5517" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft Dynamics AX - Der COM Business Connector wird in zukünftigen Versionen nicht mehr unterstützt</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,dcaffcda-fd12-4fec-984d-97ded22c5517.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/Zmdln7B33Cs/PermaLink,guid,dcaffcda-fd12-4fec-984d-97ded22c5517.aspx</link>
      <pubDate>Mon, 02 Mar 2009 19:21:05 GMT</pubDate>
      <description>&lt;p&gt;
Wie in einem Artikel auf der Microsoft Dynamics AX Webseite zu lesen ist wird der
"alte" COM Business Connector nicht mehr in zukünftigen Versionen von Dynamics AX
enthalten sein.&lt;br&gt;
&lt;a href="http://www.microsoft.com/dynamics/ax/using/ax_combizconnector.mspx"&gt;The COM
Business Connector will be discontinued in future releases of Microsoft Dynamics AX&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Bereits in der Version 2009 von Microsoft Dynamics AX wird der COM Business Connector
vom "normalen" Setup nicht mehr angeboten.&lt;br&gt;
Dieser muss manuell, wie im Microsoft Dynamics AX Developer Center beschrieben,&amp;nbsp;nachinstalliert
werden.&lt;br&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/cc624322.aspx"&gt;How to: Install COM
Business Connector using Command-line Options&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
Somit ist es an der Zeit, bestehende Lösungen welche den COM Business Connector verwenden,
auf den neueren .NET Business Connector zu portieren, um diese Lösungen auch in zukünftigen
Versionen verwenden zu können.
&lt;/p&gt;
&lt;p&gt;
Alle benötigten Informationen über die Verwendung des .NET Business Connectors können
in der Library des Microsoft Dynamics AX Developer Centers gefunden werden&lt;br&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/aa659581.aspx"&gt;.NET Business Connector
Overview&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=dcaffcda-fd12-4fec-984d-97ded22c5517" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,dcaffcda-fd12-4fec-984d-97ded22c5517.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/Administration;Dynamics Ax/Programmierung;Dynamics Ax/Programmierung/.NET</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,dcaffcda-fd12-4fec-984d-97ded22c5517.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=514153a0-b0ff-4af7-b6f3-73645f99f656</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,514153a0-b0ff-4af7-b6f3-73645f99f656.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,514153a0-b0ff-4af7-b6f3-73645f99f656.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=514153a0-b0ff-4af7-b6f3-73645f99f656</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Oft ist in Newsgroups und Foren die Frage zu lesen, wie .NET (CLR) Arrays in X++ verwendet,
bzw. wie diese deklariert werden können.<br />
Im Großen und Ganzen unterscheidet sich die Syntax für die Verwendung eines .NET Array
kaum von der eines reinen X++ Array.<br />
.NET Arrays können in X++ sogar auf zwei verschiedene Arten deklariert werden.
</p>
        <p>
          <u>Variante 1:</u>
        </p>
        <p>
Die Deklaration eines .NET Arrays erfolgt analog zu der Deklaration eines "reinen"
X++ Arrays:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">System.Object[]
arrayOfObjects;<br />
System.Int32[] arrayOfIntegers;<br /><br /></span>
        </p>
        <p>
Die Syntax für die Instanzierung des .NET Array weicht allerdings leicht von der "normalen"
X++ Syntax ab:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">arrayOfObjects <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> System.Object[10]();<br />
arrayOfIntegers <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> System.Int32[3]();<br /><br /></span>
        </p>
        <p>
Wichtig ist hierbei, dass immer "()" verwendet wird.
</p>
        <p>
Um die Werte eines .NET Arrays zu setzen wird die Methode "SetValue()" verwendet:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">arrayOfObjects.SetValue(myObject,
0);<br />
arrayOfIntegers.SetValue(300, 1);<br /><br /></span>
        </p>
        <p>
Um Werte aus einem Array abzufragen kann die Methode "GetValue" verwendet werden:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">arrayOfObjects.GetValue(0);<br />
arrayOfIntegers.GetValue(1);<br /><br /></span>
        </p>
        <p>
Eine weitere sehr nützliche Methode ist die Methode "get_Length()". Diese liefert
die Anzahl der Array-Elemente zurück.
</p>
        <p>
          <u>Variante 2:</u>
        </p>
        <p>
Alternativ zur ersten Variante besteht noch die Möglichkeit, ein .NET Array über die
Klasse System.Array zu erzeugen.<br />
Leider stößt man bei diesem Weg immer mal wieder auf kleinere Probleme, weswegen die
erste Variante für die Verwendung von .NET Array bevorzugt werden sollte.
</p>
        <p>
Eine etwas ausführlichere Beschreibung der Verwendung von .NET Array in X++ bzw. deren
besonderheiten und Abweichungen zur "normalen" X++ Syntax kann im Microsoft Dynamics
AX Developer Center gefunden werden.
</p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/library/cc557456.aspx">How to: Use X++ Syntax
for CLR Arrays</a>
        </p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=514153a0-b0ff-4af7-b6f3-73645f99f656" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft Dynamics AX - X++ und .NET (CLR) Arrays </title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,514153a0-b0ff-4af7-b6f3-73645f99f656.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/iQ_UFkXDsiI/PermaLink,guid,514153a0-b0ff-4af7-b6f3-73645f99f656.aspx</link>
      <pubDate>Mon, 02 Mar 2009 18:40:39 GMT</pubDate>
      <description>&lt;p&gt;
Oft ist in Newsgroups und Foren die Frage zu lesen, wie .NET (CLR) Arrays in X++ verwendet,
bzw. wie diese deklariert werden können.&lt;br&gt;
Im Großen und Ganzen unterscheidet sich die Syntax für die Verwendung eines .NET Array
kaum von der eines reinen X++ Array.&lt;br&gt;
.NET Arrays können in X++ sogar auf zwei verschiedene Arten deklariert werden.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Variante 1:&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
Die Deklaration eines .NET Arrays erfolgt analog zu der Deklaration eines "reinen"
X++ Arrays:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;System.Object[]
arrayOfObjects;&lt;br&gt;
System.Int32[] arrayOfIntegers;&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Die Syntax für die Instanzierung des .NET Array weicht allerdings leicht von der "normalen"
X++ Syntax ab:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;arrayOfObjects &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; System.Object[10]();&lt;br&gt;
arrayOfIntegers &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; System.Int32[3]();&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Wichtig ist hierbei, dass immer "()" verwendet wird.
&lt;/p&gt;
&lt;p&gt;
Um die Werte eines .NET Arrays zu setzen wird die Methode "SetValue()" verwendet:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;arrayOfObjects.SetValue(myObject,
0);&lt;br&gt;
arrayOfIntegers.SetValue(300, 1);&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Um Werte aus einem Array abzufragen kann die Methode "GetValue" verwendet werden:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;arrayOfObjects.GetValue(0);&lt;br&gt;
arrayOfIntegers.GetValue(1);&lt;br&gt;
&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Eine weitere sehr nützliche Methode ist die Methode "get_Length()". Diese liefert
die Anzahl der Array-Elemente zurück.
&lt;/p&gt;
&lt;p&gt;
&lt;u&gt;Variante 2:&lt;/u&gt;
&lt;/p&gt;
&lt;p&gt;
Alternativ zur ersten Variante besteht noch die Möglichkeit, ein .NET Array über die
Klasse System.Array zu erzeugen.&lt;br&gt;
Leider stößt man bei diesem Weg immer mal wieder auf kleinere Probleme, weswegen die
erste Variante für die Verwendung von .NET Array bevorzugt werden sollte.
&lt;/p&gt;
&lt;p&gt;
Eine etwas ausführlichere Beschreibung der Verwendung von .NET Array in X++ bzw. deren
besonderheiten und Abweichungen zur "normalen" X++ Syntax kann im Microsoft Dynamics
AX Developer Center gefunden werden.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/cc557456.aspx"&gt;How to: Use X++ Syntax
for CLR Arrays&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=514153a0-b0ff-4af7-b6f3-73645f99f656" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,514153a0-b0ff-4af7-b6f3-73645f99f656.aspx</comments>
      <category>Dynamics Ax;Dynamics Ax/HowTo;Dynamics Ax/Programmierung;Dynamics Ax/Programmierung/.NET</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,514153a0-b0ff-4af7-b6f3-73645f99f656.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=d68de873-df06-4172-b927-a9bc15e1f81e</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,d68de873-df06-4172-b927-a9bc15e1f81e.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,d68de873-df06-4172-b927-a9bc15e1f81e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d68de873-df06-4172-b927-a9bc15e1f81e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wer schon mit dem AIF in der Version 4.0 von Microsoft Dynamics AX gearbeitet hat
wird sich daran erinnern, dass ein Debuggen des Quellcodes, welcher durch das
AIF ausgeführt wird, nur möglich ist, wenn hierfür eine kleine Codeanpassung
in den Klassen "AifInboundProcessingService" und "AifOutboundProcessingService" vorgenommen
wird.<br />
Das genaue Vorgehen für die Version 4.0 von Dynamics AX ist in diesem <a href="http://casperkamal.spaces.live.com/blog/cns!9138ED475277CD63!175.entry">Artikel</a> beschrieben.
</p>
        <p>
Für Dynamics AX 2009 kann diese Quellcodeänderung allerdings nicht so ohne weiteres
angewendet werden, da für Dynamics AX 2009 einige Features ergänzt wurden (z.B. paralelle
Verarbeitung von AIF Nachrichten) und somit der Quellcode der beiden Klassen einige
Abweichungen zu dem der Version 4.0 hat.
</p>
        <p>
          <font size="3">
            <u>Debuggen von ausgehenden Nachrichten</u>
          </font>
        </p>
        <p>
Um das Debuggen von ausgehenden Nachrichten zu ermöglichen, muss die Methode "runAsWrapper"
der Klasse "AifOutboundProcessingService" angepasst werden.<br />
Der Aufruf von "runAS" (Zeile 22) muss durch "AifOutboundProcessingService::processAsUser(messageIdContainer)"
ersetzt werden.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">...<br />
try</span>
            <br />
{<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
runAs currentUser and process all messages in the container.</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   new</span> RunAsPermission(runAsUserId).assert();<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
AKU, Enable Debuging for outbound messages - START --&gt;</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
Do not use in production system!!!</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
BP deviation documented</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //runas(runAsUserId,</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
classnum(AifOutboundProcessingService),</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
staticmethodstr(AifOutboundProcessingService, processAsUser),</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
messageIdContainer,</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
runAsCompany);</span><br />
   AifOutboundProcessingService::processAsUser(messageIdContainer);<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
AKU, Enable Debuging for ourbound message - END --&gt;</span><br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
Revert the permission</span><br />
   CodeAccessPermission::revertAssert();<br />
}<br /></span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">...</span>
        </p>
        <p>
          <font size="3">
            <u>Debuggen von eingehenden Nachrichten</u>
          </font>
        </p>
        <p>
Um das Debuggen von eingehenden Nachrichten zu ermöglichen, muss die Methode "runAsWrapper"
der Klasse "AifInboundProcessingService" angepasst werden.<br />
Der Aufruf von "runAS" (Teile 24) muss durch "AifInboundProcessingService::processAsUser(messageIdContainer)"
ersetzt werden.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">...<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">try</span><br />
{<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
Convert to Axapta UserId</span><br />
   axaptaUserId <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> AifEndpointUser::getAxaptaUser(runAsUserId).Id;<br /><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   new</span> RunAsPermission(axaptaUserId).assert();<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
AKU, Enable Debuging - START --&gt;</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
Do not use in production system!!!</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
BP deviation documented</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //runas(axaptaUserId,</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
classnum(AifInboundProcessingService),</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
staticmethodstr(AifInboundProcessingService, processAsUser),</span><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
messageIdContainer);</span><br />
   AifInboundProcessingService::processAsUser(messageIdContainer);<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //
AKU, Enable Debuging - END --&gt;</span><br /><br />
   CodeAccessPermission::revertAssert();<br />
}<br />
...<br /></span>
        </p>
        <p>
Für beide Quellcodeänderung sollte noch erwähnt werden, dass diese in einem Produktivsystem
nicht durchgeführt werden sollten, da dies Auswirkungen auf die Verarbeitung der Stapelprozesse
des AIF's haben könnte.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=d68de873-df06-4172-b927-a9bc15e1f81e" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>AIF debuggen mit Dynamics AX 2009</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,d68de873-df06-4172-b927-a9bc15e1f81e.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/kGc3yQQLStY/PermaLink,guid,d68de873-df06-4172-b927-a9bc15e1f81e.aspx</link>
      <pubDate>Fri, 06 Feb 2009 22:29:08 GMT</pubDate>
      <description>&lt;p&gt;
Wer schon mit dem AIF in der Version 4.0 von Microsoft Dynamics AX gearbeitet hat
wird sich daran erinnern, dass ein Debuggen des Quellcodes, welcher durch&amp;nbsp;das
AIF ausgeführt wird,&amp;nbsp;nur möglich ist, wenn hierfür eine kleine Codeanpassung
in den Klassen "AifInboundProcessingService" und "AifOutboundProcessingService" vorgenommen
wird.&lt;br&gt;
Das genaue Vorgehen für die Version 4.0 von Dynamics AX ist in diesem &lt;a href="http://casperkamal.spaces.live.com/blog/cns!9138ED475277CD63!175.entry"&gt;Artikel&lt;/a&gt; beschrieben.
&lt;/p&gt;
&lt;p&gt;
Für Dynamics AX 2009 kann diese Quellcodeänderung allerdings nicht so ohne weiteres
angewendet werden, da für Dynamics AX 2009 einige Features ergänzt wurden (z.B. paralelle
Verarbeitung von AIF Nachrichten) und somit der Quellcode der beiden Klassen einige
Abweichungen zu dem der Version 4.0 hat.
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;u&gt;Debuggen von ausgehenden Nachrichten&lt;/u&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Um das Debuggen von ausgehenden Nachrichten zu ermöglichen, muss die Methode "runAsWrapper"
der Klasse "AifOutboundProcessingService" angepasst werden.&lt;br&gt;
Der Aufruf von "runAS" (Zeile 22) muss durch "AifOutboundProcessingService::processAsUser(messageIdContainer)"
ersetzt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;...&lt;br&gt;
try&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
runAs currentUser and process all messages in the container.&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new&lt;/span&gt; RunAsPermission(runAsUserId).assert();&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
AKU, Enable Debuging for outbound messages - START --&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
Do not use in production system!!!&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
BP deviation documented&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//runas(runAsUserId,&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
classnum(AifOutboundProcessingService),&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
staticmethodstr(AifOutboundProcessingService, processAsUser),&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
messageIdContainer,&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
runAsCompany);&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;AifOutboundProcessingService::processAsUser(messageIdContainer);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
AKU, Enable Debuging for ourbound message - END --&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
Revert the permission&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;CodeAccessPermission::revertAssert();&lt;br&gt;
}&lt;br&gt;
&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;...&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;font size=3&gt;&lt;u&gt;Debuggen von eingehenden Nachrichten&lt;/u&gt;&lt;/font&gt;
&lt;/p&gt;
&lt;p&gt;
Um das Debuggen von eingehenden Nachrichten zu ermöglichen, muss die Methode "runAsWrapper"
der Klasse "AifInboundProcessingService" angepasst werden.&lt;br&gt;
Der Aufruf von "runAS" (Teile 24) muss durch "AifInboundProcessingService::processAsUser(messageIdContainer)"
ersetzt werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;...&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;try&lt;/span&gt;
&lt;br&gt;
{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
Convert to Axapta UserId&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;axaptaUserId &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; AifEndpointUser::getAxaptaUser(runAsUserId).Id;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;new&lt;/span&gt; RunAsPermission(axaptaUserId).assert();&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
AKU, Enable Debuging - START --&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
Do not use in production system!!!&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
BP deviation documented&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//runas(axaptaUserId,&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
classnum(AifInboundProcessingService),&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
staticmethodstr(AifInboundProcessingService, processAsUser),&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
messageIdContainer);&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;AifInboundProcessingService::processAsUser(messageIdContainer);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//
AKU, Enable Debuging - END --&amp;gt;&lt;/span&gt;
&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;CodeAccessPermission::revertAssert();&lt;br&gt;
}&lt;br&gt;
...&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Für beide Quellcodeänderung sollte noch erwähnt werden, dass diese in einem Produktivsystem
nicht durchgeführt werden sollten, da dies Auswirkungen auf die Verarbeitung der Stapelprozesse
des AIF's haben könnte.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=d68de873-df06-4172-b927-a9bc15e1f81e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,d68de873-df06-4172-b927-a9bc15e1f81e.aspx</comments>
      <category>Dynamics AX/AIF;Dynamics AX/Dynamics AX 2009;Dynamics Ax/HowTo;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,d68de873-df06-4172-b927-a9bc15e1f81e.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=ef93e4ea-4344-445a-8afa-db59ed706dfa</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,ef93e4ea-4344-445a-8afa-db59ed706dfa.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,ef93e4ea-4344-445a-8afa-db59ed706dfa.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=ef93e4ea-4344-445a-8afa-db59ed706dfa</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Das Application Integration Framework von Dynamics AX basiert auf Dokumenten (Axd&lt;Document&gt;
Klassen).<br />
Eigene Dokumente lassen sich reicht einfach per Hand oder mit Hilfe des Dokumenten-Wizards
erstellen.<br />
In der Version 2009 von Dynamics AX erstellt dieser Wizard auch gleichzeitig den benötigenten
Service (WCF-Webservice) und andere benötigte Elemente wie (Serviceklassen und Macros).<br />
Welche Schritte hierfür benötigt werden ist zum Beispiel im <a href="http://msdn.microsoft.com/en-us/library/aa856656.aspx">Microsoft
Dynamics AX Developer Center</a> beschrieben.
</p>
        <p>
Ein kleines Problem entsteht, wenn das neue Dokument, genauer gesagt die Elemente
oder Objekte des Dokuments, in einem Layer (zum Beispiel CUS-Layer) entwickelt wird
und später, aus welchen Gründen auch immer, alle Objekte des Dokuments (Query, Ax&lt;Table&gt;
Class, Axd&lt;Document&gt; Class) in einen anderen Layer (zum Beispiel VAR-Layer)
verschoben werden.
</p>
        <p>
Nach der "Verschiebung" des neuen Dokuments in einen anderen Entwicklungslayer werden
durch die AIF-Konfigurationsmasken (siehe Maske Dienstleistungen) allerdings keine
Operationen (Insert, Update, Delete, FindKey, etc.) mehr angezeigt.<br />
Auch an anderen Stellen, wie zum Beispiel der Endpunktkonfiguration, sind die entsprechenden
Operationen nicht mehr auswählbar oder vorhanden.
</p>
        <p>
Der Grund hierfür liegt in der ClassId der Serviceklasse des neuen Dokuments. Dieser,
wie auch jedem anderen Objekt, wird beim Import in einen anderen Layer eine neue ID
zugewiesen, wenn nicht explizit angegeben wurde, dass der Export und Import mit ID's
erfolgen soll. So kann es sein, dass die Klasse mit der ID 40001 nach dem Import in
einen anderen Layer die ID 300001 zugeordnet ist.
</p>
        <p>
Da wärend der Konfiguration des AIF's der AOT nach Dokumenten/Services durchsucht
wird und für jedes Dokument bzw. jeden Service ein Datensatz in der Tabelle "AifService"
sowie ein bis mehrere Datensätze in der Tabelle "AifAction" erzeugt wird, welche alle
eine Referenz auf die ClassId der Serviceklasse enthalten, kommt es jetzt zu dem genannten
Problem.<br />
Der Id 40001 ist nun keine Klasse oder noch schlimmer eine andere Klasse zugewiesen.
Auch eine "Aktualisierung" dieser Datensätze über die Aktualisierungsfunktion, welche
auf der Maske Dienstleistungen bereit gestellt wird, führt nicht zum gewünschten Erfolg.
</p>
        <p>
Genau in dieser Funktion scheint sich ein kleiner Fehler eingeschlichen zu haben.
Dort wird zwar eine Aktulisierung der ClassId für die Datensätze der Tabelle "AifService",
aber nicht für die Datensätze der Tabelle "AifAction", durchgeführt.
</p>
        <p>
Um diese Verhalten zu reproduzieren, muss folgendes gemacht werden:
</p>
        <ol>
          <li>
Erstellen eines neuen AIF Dokuments bzw. AIF Services.</li>
          <li>
Über die Maske Dienstleistungen, zu finden unter "Grundeinstellungen -&gt; Einstellungen
-&gt; Application Integration Framework -&gt; Dienstleistungen", Funktion "Aktualisieren"
das neue Dokument / den neuen Service "aktivieren".</li>
          <li>
Über den Button "Servicearbeitsgänge" können nun alle Operationen welche durch das
Dokument / den Service bereit gestellt werden eingesehen werden.</li>
          <li>
Verschieben aller Elemente des Dokuments / des Services in einen anderen Layer.</li>
          <li>
Schritt 2 erneut druchführen.</li>
          <li>
Über den Button "Servicearbeitsgänge" werden keine Operation mehr angezeigt.</li>
        </ol>
        <p>
Um dieses Problem zu lösen, gibt 2 Möglichkeiten.
</p>
        <p>
Entweder manuelles Löschen alle zu diesem Dokument/Service gehörigen Datensätze
der Tabelle "AifAction" oder aber man ergänzt die Methode "registerOperations" der
Klasse "AifServiceGenerationManager" um ein wenig X++ Code (bei Zeile 43) welcher
nicht nur den Namen der Operation aktualisiert sondern auch die ClassId.<br />
Da dieser Code sehr einfach ist verzichte ich an dieser Stelle auf ein Beispiel.
</p>
        <p>
Leider tritt dieses Problem auch mit Dynamics AX 2009 Service Pack 1 auf.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=ef93e4ea-4344-445a-8afa-db59ed706dfa" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft Dynamics AX AIF - Dokumente, Services aber keine Operationen?</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,ef93e4ea-4344-445a-8afa-db59ed706dfa.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/cBscU40yn_g/PermaLink,guid,ef93e4ea-4344-445a-8afa-db59ed706dfa.aspx</link>
      <pubDate>Tue, 27 Jan 2009 18:46:19 GMT</pubDate>
      <description>&lt;p&gt;
Das Application Integration Framework von Dynamics AX basiert auf Dokumenten (Axd&amp;lt;Document&amp;gt;
Klassen).&lt;br&gt;
Eigene Dokumente lassen sich reicht einfach per Hand oder mit Hilfe des Dokumenten-Wizards
erstellen.&lt;br&gt;
In der Version 2009 von Dynamics AX erstellt dieser Wizard auch gleichzeitig den benötigenten
Service (WCF-Webservice) und andere benötigte Elemente wie (Serviceklassen und Macros).&lt;br&gt;
Welche Schritte hierfür benötigt werden ist zum Beispiel im &lt;a href="http://msdn.microsoft.com/en-us/library/aa856656.aspx"&gt;Microsoft
Dynamics AX Developer Center&lt;/a&gt; beschrieben.
&lt;/p&gt;
&lt;p&gt;
Ein kleines Problem entsteht, wenn das neue Dokument, genauer gesagt die Elemente
oder Objekte des Dokuments, in einem Layer (zum Beispiel CUS-Layer) entwickelt wird
und später, aus welchen Gründen auch immer, alle Objekte des Dokuments (Query, Ax&amp;lt;Table&amp;gt;
Class, Axd&amp;lt;Document&amp;gt; Class) in einen anderen Layer (zum Beispiel VAR-Layer)
verschoben werden.
&lt;/p&gt;
&lt;p&gt;
Nach der "Verschiebung" des neuen Dokuments in einen anderen Entwicklungslayer werden
durch die AIF-Konfigurationsmasken (siehe Maske Dienstleistungen) allerdings keine
Operationen (Insert, Update, Delete, FindKey, etc.)&amp;nbsp;mehr angezeigt.&lt;br&gt;
Auch an anderen Stellen, wie zum Beispiel der Endpunktkonfiguration, sind die entsprechenden
Operationen nicht mehr auswählbar oder vorhanden.
&lt;/p&gt;
&lt;p&gt;
Der Grund hierfür liegt in der ClassId der Serviceklasse des neuen Dokuments. Dieser,
wie auch jedem anderen Objekt, wird beim Import in einen anderen Layer eine neue ID
zugewiesen, wenn nicht explizit angegeben wurde, dass der Export und Import mit ID's
erfolgen soll. So kann es sein, dass die Klasse mit der ID 40001 nach dem Import in
einen anderen Layer die ID 300001 zugeordnet ist.
&lt;/p&gt;
&lt;p&gt;
Da wärend der Konfiguration des AIF's der AOT nach Dokumenten/Services durchsucht
wird und für jedes Dokument bzw. jeden Service ein Datensatz in der Tabelle "AifService"
sowie ein bis mehrere Datensätze in der Tabelle "AifAction" erzeugt wird, welche alle
eine Referenz auf die ClassId der Serviceklasse enthalten, kommt es jetzt zu dem genannten
Problem.&lt;br&gt;
Der Id 40001 ist nun keine Klasse oder noch schlimmer eine andere Klasse zugewiesen.
Auch eine "Aktualisierung" dieser Datensätze über die Aktualisierungsfunktion, welche
auf der Maske Dienstleistungen bereit gestellt wird, führt nicht zum gewünschten Erfolg.
&lt;/p&gt;
&lt;p&gt;
Genau in dieser Funktion scheint sich ein kleiner Fehler eingeschlichen zu haben.
Dort wird zwar eine Aktulisierung der ClassId für die Datensätze der Tabelle "AifService",
aber nicht für die Datensätze der Tabelle "AifAction", durchgeführt.
&lt;/p&gt;
&lt;p&gt;
Um diese Verhalten zu reproduzieren, muss folgendes gemacht werden:
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Erstellen eines neuen AIF Dokuments bzw. AIF Services.&lt;/li&gt;
&lt;li&gt;
Über die Maske Dienstleistungen, zu finden unter&amp;nbsp;"Grundeinstellungen -&amp;gt; Einstellungen
-&amp;gt; Application Integration Framework -&amp;gt; Dienstleistungen", Funktion "Aktualisieren"
das neue Dokument / den neuen Service "aktivieren".&lt;/li&gt;
&lt;li&gt;
Über den Button "Servicearbeitsgänge" können nun alle Operationen welche durch das
Dokument / den Service bereit gestellt werden eingesehen werden.&lt;/li&gt;
&lt;li&gt;
Verschieben aller Elemente des Dokuments / des Services in einen anderen Layer.&lt;/li&gt;
&lt;li&gt;
Schritt 2 erneut druchführen.&lt;/li&gt;
&lt;li&gt;
Über den Button "Servicearbeitsgänge" werden keine Operation mehr angezeigt.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Um dieses Problem zu lösen, gibt 2 Möglichkeiten.
&lt;/p&gt;
&lt;p&gt;
Entweder&amp;nbsp;manuelles Löschen&amp;nbsp;alle zu diesem Dokument/Service gehörigen Datensätze
der Tabelle "AifAction" oder aber man ergänzt die Methode "registerOperations" der
Klasse "AifServiceGenerationManager" um ein wenig X++ Code (bei Zeile 43)&amp;nbsp;welcher
nicht nur den Namen der Operation aktualisiert sondern auch die ClassId.&lt;br&gt;
Da dieser Code sehr einfach ist verzichte ich an dieser Stelle auf ein Beispiel.
&lt;/p&gt;
&lt;p&gt;
Leider tritt dieses Problem auch mit Dynamics AX 2009 Service Pack 1 auf.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=ef93e4ea-4344-445a-8afa-db59ed706dfa" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,ef93e4ea-4344-445a-8afa-db59ed706dfa.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/Administration;Dynamics AX/AIF;Dynamics AX/Dynamics AX 2009;Dynamics Ax/HowTo;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,ef93e4ea-4344-445a-8afa-db59ed706dfa.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=db4cdf8e-8cfa-4837-9371-a8362a319290</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,db4cdf8e-8cfa-4837-9371-a8362a319290.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,db4cdf8e-8cfa-4837-9371-a8362a319290.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=db4cdf8e-8cfa-4837-9371-a8362a319290</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In Microsoft Dynamics AX werden alle Informationsmeldungen, Warnungen und Fehlermeldungen
in einem Fenster, dem so genannten Infolog, ausgegeben.
</p>
        <p>
Wie Informationen, Warnungen oder Fehlermeldungen erzeugt werden können, ist an vielen
Stellen bereits beschrieben.<br />
Ein wie ich finde sehr guter Artikel über dieses Thema ist dieser: <a href="http://blogs.msdn.com/mfp/pages/the-user-friendly-infolog.aspx">The
user friendly Infolog</a>.
</p>
        <p>
An dieser Stelle soll aber kurz beschrieben werden, wie die Meldungen des
Infologs ausgewertet werden können, um zum Beispiel zu ermitteln, ob das Infolog eine
Fehlermeldung oder auch eine Warnung enthält.
</p>
        <p>
Zuerst stellt sich die Frage, warum benötigt man überhaupt diese Art von Information
da in Dynamics AX die Möglichkeit besteht, verschiedenste Operationen innerhalb
einer Transaktion zu Kapsel und diese bei Auftreten eines Fehlers oder Erzeugung einer
Fehlermeldung (Stichwort "throw error") automatisch rückgängig zu machen.
</p>
        <p>
Diese Frage soll anhand eines Beispiels beantwortet werden.
</p>
        <p>
Angenommen wir möchten eine Anpassung in Dynamics AX schreiben, welche es ermöglicht,
Änderungen an Stücklisten und Arbeitsplänen von Produktionsaufträgen zu automatisieren
und alle getätigten Änderungen in einer Transaktion zu kapseln. Anschließend soll
noch der Status der Produktions aktualisiert werden. Ebenfalls innerhalb der Transaktion.<br />
Zum Beispiel soll der Produktionsauftrag gestartet werden.
</p>
        <p>
Hierfür ist es notwendig verschiedene Standardfunktionen von Dynamics AX zu verwenden,
die bereits eine Fehlerbehandlung implementiert haben und somit keine Fehler mehr
"melden", welche den Abbruch einer Transaktion zu Folge haben könnten.<br />
Somit wird zwar gewährleistet, dass alle "Unterfunktionen" in sich richtig auf Fehler
richtig reagieren, aber dennoch könnte eine Dateninkonsistenz entstehen, da nicht
alle Operationen rückgängig gemacht werden. Es könnte Beispielhaft sein, dass
die Anlage von neuen Stücklistenpositionen und/oder Arbeitsgangpositionen funktioniert,
die spätere Statusaktualisierung des Produktionsauftrags aber nicht. Die erstellten
Stücklistenpositionen und/oder Arbeitsgangpositionen würden im System gespeichert
(bleiben).
</p>
        <p>
Abhilfe für dieses Problem kann duch die Auswertung des Infologs und manuellen Aufrufs
von "ttsabort" geschaffen werden.
</p>
        <p>
Mit dem "SysInfologEnumerator" können alle Meldungen, welche in das Infolog geschrieben
wurden, durchlaufen werden.<br />
Über die Methode "currentException" kann anschließend ausgewertet werden, um was für
eine Meldung (Information, Warnung, Fehler) es sich handelt.
</p>
        <p>
Hier ein kurzes Beispiel, wie dies aussehen könnte:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">boolean
hasError()<br />
{<br />
   SysInfologEnumerator <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">enum</span>;<br />
   SysInfoAction action;<br />
   boolean hasError <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">false</span>;<br />
   ;<br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   //Analyse
the infolog to see if there are any warnings/errors</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   enum</span><span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> SysInfologEnumerator::newData(infolog.infologData());<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   while</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">enum</span>.moveNext())<br />
   {<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">      switch</span> (<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">enum</span>.currentException())<br />
      {<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">         case</span> Exception::Error:<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">         case</span> Exception::Warning:<br />
            hasError <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">            break</span>;<br />
      }<br /><br />
      infolog.add(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">enum</span>.currentException(), <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">enum</span>.currentMessage(), <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">enum</span>.currentHelpUrl());<br />
   }<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   return</span> hasError;<br />
}</span>
        </p>
        <p>
Es muss allerdings beachtet werden, dass alle Meldungen des Infologs, durch den Aufruf
von "SysInfologEnumerator::newData(...)", gelöscht werden.<br />
Sollen diesese Meldungen nach der "Auswertung" dennoch dem Benutzer angezeigt werden,
müssen diese wieder manuell in das Infolog geschrieben werden (über "infolog.add(..)").
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=db4cdf8e-8cfa-4837-9371-a8362a319290" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Ermitteln ob Warnungen oder Fehlermeldung im Infolog enthalten sind</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,db4cdf8e-8cfa-4837-9371-a8362a319290.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/4e2DkjkSBN0/PermaLink,guid,db4cdf8e-8cfa-4837-9371-a8362a319290.aspx</link>
      <pubDate>Thu, 08 Jan 2009 18:09:12 GMT</pubDate>
      <description>&lt;p&gt;
In Microsoft Dynamics AX werden alle Informationsmeldungen, Warnungen und Fehlermeldungen
in einem Fenster, dem so genannten Infolog, ausgegeben.
&lt;/p&gt;
&lt;p&gt;
Wie Informationen, Warnungen oder Fehlermeldungen erzeugt werden können, ist an vielen
Stellen bereits beschrieben.&lt;br&gt;
Ein wie ich finde sehr guter Artikel über dieses Thema ist dieser: &lt;a href="http://blogs.msdn.com/mfp/pages/the-user-friendly-infolog.aspx"&gt;The
user friendly Infolog&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
An dieser&amp;nbsp;Stelle soll&amp;nbsp;aber kurz beschrieben werden, wie die Meldungen des
Infologs ausgewertet werden können, um zum Beispiel zu ermitteln, ob das Infolog eine
Fehlermeldung oder auch eine Warnung enthält.
&lt;/p&gt;
&lt;p&gt;
Zuerst stellt sich die Frage, warum benötigt man überhaupt diese Art von Information
da&amp;nbsp;in Dynamics AX die Möglichkeit besteht, verschiedenste Operationen innerhalb
einer Transaktion zu Kapsel und diese bei Auftreten eines Fehlers oder Erzeugung einer
Fehlermeldung (Stichwort "throw error") automatisch rückgängig zu machen.
&lt;/p&gt;
&lt;p&gt;
Diese Frage soll anhand eines Beispiels beantwortet werden.
&lt;/p&gt;
&lt;p&gt;
Angenommen wir möchten eine Anpassung in Dynamics AX schreiben, welche es ermöglicht,
Änderungen an Stücklisten und Arbeitsplänen von Produktionsaufträgen zu automatisieren
und alle getätigten Änderungen in einer Transaktion zu kapseln. Anschließend soll
noch der Status der Produktions aktualisiert werden. Ebenfalls innerhalb der Transaktion.&lt;br&gt;
Zum Beispiel soll der Produktionsauftrag gestartet werden.
&lt;/p&gt;
&lt;p&gt;
Hierfür ist es notwendig verschiedene Standardfunktionen von Dynamics AX zu verwenden,
die bereits eine Fehlerbehandlung implementiert haben und somit keine Fehler mehr
"melden", welche den Abbruch einer Transaktion zu Folge haben könnten.&lt;br&gt;
Somit wird zwar gewährleistet, dass alle "Unterfunktionen" in sich richtig auf Fehler
richtig reagieren, aber dennoch könnte eine Dateninkonsistenz entstehen, da nicht
alle Operationen rückgängig gemacht werden.&amp;nbsp;Es könnte Beispielhaft sein, dass
die Anlage von neuen Stücklistenpositionen und/oder Arbeitsgangpositionen funktioniert,
die spätere Statusaktualisierung des Produktionsauftrags&amp;nbsp;aber nicht. Die erstellten
Stücklistenpositionen und/oder Arbeitsgangpositionen würden im System gespeichert
(bleiben).
&lt;/p&gt;
&lt;p&gt;
Abhilfe für dieses Problem kann duch die Auswertung des Infologs und manuellen Aufrufs
von "ttsabort" geschaffen werden.
&lt;/p&gt;
&lt;p&gt;
Mit dem "SysInfologEnumerator" können alle Meldungen, welche in das Infolog geschrieben
wurden, durchlaufen werden.&lt;br&gt;
Über die Methode "currentException" kann anschließend ausgewertet werden, um was für
eine Meldung (Information, Warnung, Fehler) es sich handelt.
&lt;/p&gt;
&lt;p&gt;
Hier ein kurzes Beispiel, wie dies aussehen könnte:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;boolean
hasError()&lt;br&gt;
{&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;SysInfologEnumerator &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;enum&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;SysInfoAction action;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;boolean hasError &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;false&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;//Analyse
the infolog to see if there are any warnings/errors&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;enum&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; SysInfologEnumerator::newData(infolog.infologData());&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;while&lt;/span&gt; (&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;enum&lt;/span&gt;.moveNext())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;switch&lt;/span&gt; (&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;enum&lt;/span&gt;.currentException())&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&lt;/span&gt; Exception::Error:&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;case&lt;/span&gt; Exception::Warning:&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;hasError &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;break&lt;/span&gt;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;infolog.add(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;enum&lt;/span&gt;.currentException(), &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;enum&lt;/span&gt;.currentMessage(), &lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;enum&lt;/span&gt;.currentHelpUrl());&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; hasError;&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Es muss allerdings beachtet werden, dass alle Meldungen des Infologs, durch den Aufruf
von "SysInfologEnumerator::newData(...)", gelöscht werden.&lt;br&gt;
Sollen diesese Meldungen nach der "Auswertung" dennoch dem Benutzer angezeigt werden,
müssen diese wieder manuell in das Infolog geschrieben werden (über "infolog.add(..)").
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=db4cdf8e-8cfa-4837-9371-a8362a319290" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,db4cdf8e-8cfa-4837-9371-a8362a319290.aspx</comments>
      <category>Dynamics Ax;Dynamics Ax/HowTo;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,db4cdf8e-8cfa-4837-9371-a8362a319290.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=d980d861-6cdc-4ebe-8dec-c2da27567f8e</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,d980d861-6cdc-4ebe-8dec-c2da27567f8e.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,d980d861-6cdc-4ebe-8dec-c2da27567f8e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d980d861-6cdc-4ebe-8dec-c2da27567f8e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im Standard von Microsoft Dynamics AX 2009 werden verschiedenste Business Intelligence
Funktionen mitgeliefert.<br />
Die hierfür benötigen Cubes und Dimensionen erstellt Dynamics AX 2009 unter Verwendung
der Analysis-Extension direkt in den Analysis Services des SQL Servers.<br />
Dies ist schon einmal sehr schön, da die meiste Arbeit durch die Installationsroutinen
abgenommen wird.
</p>
        <p>
Muss oder möchte man allerdings die mitgelieferten Cubes oder Dimensionen an
die eigenen Gegebenheiten anpassen, muss zuerst ein BI-Projekt für Visual Studio erzeugt
werden, da die Bearbeitung in Visual Studio erfolgt (über die Funktion „BI-Projekt
generieren“).
</p>
        <p>
Es können einige „allgemeine“ Einstellungen für die Erstellung eines BI-Projektes
über die Funktion „Generierungsoptionen für BI-Projekt“ getätigt werden.<br />
Beispielhaft sei hier die Einstellung der Zeitdimensionen genannt.
</p>
        <p>
Allerdings kann es sein, dass man anstatt der erwartet Maske eine Fehlermeldung ausgegeben
bekommt.<br />
Dies kann besonders bei Verwendung, der für Dynamics AX 2009 bereit gestellten, Demo
Daten der Fall sein.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/Fehlermeldung.jpg" border="0" />
        </p>
        <p>
Leider ist diese Fehlermeldung nicht sehr Aussagekräftig.
</p>
        <p>
Hier hilft ein Blick in das Ereignisprotokoll des Dynamics AX Object Servers.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/Fehlermeldung_ereignisprotokoll.jpg" border="0" />
        </p>
        <p>
Dies lässt zumindest schon einmal den „groben“ Grund erkennen, was für ein Fehler
verursacht wurde bzw. wo der Fehler liegen könnte.
</p>
        <p>
Nach einem Blick in die Tabellendefinition und den Tabellebrowser der angegebenen
Tabelle „BIUDMROLES“ wird man feststellen, dass es die angegeben Spalte wirklich nicht
gibt. Es gibt aber einen Datensatz mit entsprechender UserGroupId (UserGroupId = PRComplete).
Verwendet man nun die Funktion „Gehe zu Haupttabelle“, wird man feststellen, dass
es diese Benutzergruppe nicht im System gibt.
</p>
        <p>
Somit ist die Lösung recht einfach.<br />
Nachdem der Fehlerhafte Datensatz gelöscht wurde, kann die Maske „Generierungsoptionen
für BI-Projekt“ ohne Probleme geöffnet werden.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=d980d861-6cdc-4ebe-8dec-c2da27567f8e" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Maske "Generierungsoptionen für BI-Projekt" von Microsoft Dynamics AX 2009</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,d980d861-6cdc-4ebe-8dec-c2da27567f8e.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/xy12eDfeWmQ/PermaLink,guid,d980d861-6cdc-4ebe-8dec-c2da27567f8e.aspx</link>
      <pubDate>Tue, 09 Dec 2008 20:26:28 GMT</pubDate>
      <description>&lt;p&gt;
Im Standard von Microsoft Dynamics AX 2009 werden verschiedenste Business Intelligence
Funktionen mitgeliefert.&lt;br&gt;
Die hierfür benötigen Cubes und Dimensionen erstellt Dynamics AX 2009 unter Verwendung
der Analysis-Extension direkt in den Analysis Services des SQL Servers.&lt;br&gt;
Dies ist schon einmal sehr schön, da die meiste Arbeit durch die Installationsroutinen
abgenommen wird.
&lt;/p&gt;
&lt;p&gt;
Muss oder möchte man allerdings die mitgelieferten Cubes oder Dimensionen&amp;nbsp;an
die eigenen Gegebenheiten anpassen, muss zuerst ein BI-Projekt für Visual Studio erzeugt
werden, da die Bearbeitung in Visual Studio erfolgt (über die Funktion „BI-Projekt
generieren“).
&lt;/p&gt;
&lt;p&gt;
Es können einige „allgemeine“ Einstellungen für die Erstellung eines BI-Projektes
über die Funktion „Generierungsoptionen für BI-Projekt“ getätigt werden.&lt;br&gt;
Beispielhaft sei hier die Einstellung der Zeitdimensionen genannt.
&lt;/p&gt;
&lt;p&gt;
Allerdings kann es sein, dass man anstatt der erwartet Maske eine Fehlermeldung ausgegeben
bekommt.&lt;br&gt;
Dies kann besonders bei Verwendung, der für Dynamics AX 2009 bereit gestellten, Demo
Daten der Fall sein.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/Fehlermeldung.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Leider ist diese Fehlermeldung nicht sehr Aussagekräftig.
&lt;/p&gt;
&lt;p&gt;
Hier hilft ein Blick in das Ereignisprotokoll des Dynamics AX Object Servers.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/Fehlermeldung_ereignisprotokoll.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Dies lässt zumindest schon einmal den „groben“ Grund erkennen, was für ein Fehler
verursacht wurde bzw. wo der Fehler liegen könnte.
&lt;/p&gt;
&lt;p&gt;
Nach einem Blick in die Tabellendefinition und den Tabellebrowser der angegebenen
Tabelle „BIUDMROLES“ wird man feststellen, dass es die angegeben Spalte wirklich nicht
gibt. Es gibt aber einen Datensatz mit entsprechender UserGroupId (UserGroupId = PRComplete).
Verwendet man nun die Funktion „Gehe zu Haupttabelle“, wird man feststellen, dass
es diese Benutzergruppe nicht im System gibt.
&lt;/p&gt;
&lt;p&gt;
Somit ist die Lösung recht einfach.&lt;br&gt;
Nachdem der Fehlerhafte Datensatz gelöscht wurde, kann die Maske „Generierungsoptionen
für BI-Projekt“ ohne Probleme geöffnet werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=d980d861-6cdc-4ebe-8dec-c2da27567f8e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,d980d861-6cdc-4ebe-8dec-c2da27567f8e.aspx</comments>
      <category>Dynamics Ax;Dynamics Ax/Administration;Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,d980d861-6cdc-4ebe-8dec-c2da27567f8e.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=31c80671-6268-44d3-b929-ea305a64308a</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,31c80671-6268-44d3-b929-ea305a64308a.aspx</pingback:target>
      <dc:creator>Mathias Füßler</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,31c80671-6268-44d3-b929-ea305a64308a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=31c80671-6268-44d3-b929-ea305a64308a</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List" />
        <link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData" />
        <link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping" />
        <style>
          <!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
        </style>
        <p class="MsoNormal">
Wie bestimmt man ein Alias für ein Tabellenfeld in Microsoft Dynamics AX um über mehr
als ein Feld die Auswahl des Datensatzes zu bestimmen? 
</p>
        <p class="MsoNormal">
In den Auftragspositionen kann man anstelle einer Artikelnummer auch den Suchbegriff
aus dem Artikelstamm eingeben um den gewünschte Artikel auszuwählen.
</p>
        <p class="MsoNormal">
Beispiel:
</p>
        <p class="MsoNormal">
Artikelnummer: 12345<br />
Suchbegriff: MeinArtikel
</p>
        <p class="MsoNormal">
Da, sofern man keine sprechenden Artikelnummern verwendet, ein Suchbegriff oft einprägsamer
ist als eine Artikelnummer hat man Systemweit die Möglichkeit anstelle der Artikelnummer
„12345“ den Suchbegriff „MeinArtikel“ einzugeben.
</p>
        <p class="MsoNormal">
Diese Funktion kann man ganz einfach auch selbst erstellen. Hierzu wird auf Tabellenfeldebene
in den Eigenschaften des Feldes Suchbegriff, die Eigenschaft AliasFor auf Artikelnummer
(ItemId) gesetzt. 
<br /></p>
        <p class="MsoNormal">
          <br />
        </p>
        <p>
        </p>
        <img src="http://starside.eu/content/binary/SetAliasFor_AX.jpg" border="0" />
        <br />
        <br />
        <link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel="File-List" />
        <link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel="themeData" />
        <link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel="colorSchemeMapping" />
        <style>
          <!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
-->
        </style>
        <p class="MsoNormal">
Sobald man nun „MeinArtikel“ im Feld Artikelnummer eingibt, wird automatisch die Artikelnummer
eingefügt. 
<br />
Dieses Verhalten ist nun Systemweit anwendbar. Überall wo ein Artikel über die Artikelnummer
ausgewählt werden kann (Bspw. Aufträge, Bestellungen) kann nun in der manuellen Eingabe
der Suchbegriff verwendet werden. Nach der Eingabe des Suchbegriffs wird dieser durch
die Artikelnummer ersetzt (sofern vorhanden).<br /></p>
        <img width="0" height="0" src="http://starside.eu/cptrk.ashx?id=220e4d04-7c2d-4ebe-ab17-bb074a9e47a7" />
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=31c80671-6268-44d3-b929-ea305a64308a" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Eigenschaft AliasFor in Microsoft Dynamics AX</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,31c80671-6268-44d3-b929-ea305a64308a.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/_-wqVX3ydtg/PermaLink,guid,31c80671-6268-44d3-b929-ea305a64308a.aspx</link>
      <pubDate>Wed, 03 Dec 2008 19:18:04 GMT</pubDate>
      <description>&lt;link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel=File-List&gt;
&lt;link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel=themeData&gt;
&lt;link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel=colorSchemeMapping&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;
&lt;p class=MsoNormal&gt;
Wie bestimmt man ein Alias für ein Tabellenfeld in Microsoft Dynamics AX um über mehr
als ein Feld die Auswahl des Datensatzes zu bestimmen? 
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
In den Auftragspositionen kann man anstelle einer Artikelnummer auch den Suchbegriff
aus dem Artikelstamm eingeben um den gewünschte Artikel auszuwählen.
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
Beispiel:
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
Artikelnummer: 12345&lt;br&gt;
Suchbegriff: MeinArtikel
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
Da, sofern man keine sprechenden Artikelnummern verwendet, ein Suchbegriff oft einprägsamer
ist als eine Artikelnummer hat man Systemweit die Möglichkeit anstelle der Artikelnummer
„12345“ den Suchbegriff „MeinArtikel“ einzugeben.
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
Diese Funktion kann man ganz einfach auch selbst erstellen. Hierzu wird auf Tabellenfeldebene
in den Eigenschaften des Feldes Suchbegriff, die Eigenschaft AliasFor auf Artikelnummer
(ItemId) gesetzt. 
&lt;br&gt;
&lt;/p&gt;
&lt;p class=MsoNormal&gt;
&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img src="http://starside.eu/content/binary/SetAliasFor_AX.jpg" border=0&gt;
&lt;br&gt;
&lt;br&gt;
&lt;link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_filelist.xml" rel=File-List&gt;
&lt;link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_themedata.thmx" rel=themeData&gt;
&lt;link href="file:///C:%5CUsers%5CMathias%5CAppData%5CLocal%5CTemp%5Cmsohtmlclip1%5C01%5Cclip_colorschememapping.xml" rel=colorSchemeMapping&gt;
&lt;style&gt;
&lt;!--
 /* Font Definitions */
 @font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;
	mso-font-charset:1;
	mso-generic-font-family:roman;
	mso-font-format:other;
	mso-font-pitch:variable;
	mso-font-signature:0 0 0 0 0 0;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;
	mso-font-charset:0;
	mso-generic-font-family:swiss;
	mso-font-pitch:variable;
	mso-font-signature:-1610611985 1073750139 0 0 159 0;}
 /* Style Definitions */
 p.MsoNormal, li.MsoNormal, div.MsoNormal
	{mso-style-unhide:no;
	mso-style-qformat:yes;
	mso-style-parent:"";
	margin-top:0cm;
	margin-right:0cm;
	margin-bottom:10.0pt;
	margin-left:0cm;
	line-height:115%;
	mso-pagination:widow-orphan;
	font-size:11.0pt;
	font-family:"Calibri","sans-serif";
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoChpDefault
	{mso-style-type:export-only;
	mso-default-props:yes;
	mso-ascii-font-family:Calibri;
	mso-ascii-theme-font:minor-latin;
	mso-fareast-font-family:Calibri;
	mso-fareast-theme-font:minor-latin;
	mso-hansi-font-family:Calibri;
	mso-hansi-theme-font:minor-latin;
	mso-bidi-font-family:"Times New Roman";
	mso-bidi-theme-font:minor-bidi;
	mso-fareast-language:EN-US;}
.MsoPapDefault
	{mso-style-type:export-only;
	margin-bottom:10.0pt;
	line-height:115%;}
@page Section1
	{size:612.0pt 792.0pt;
	margin:70.85pt 70.85pt 2.0cm 70.85pt;
	mso-header-margin:36.0pt;
	mso-footer-margin:36.0pt;
	mso-paper-source:0;}
div.Section1
	{page:Section1;}
--&gt;
&lt;/style&gt;
&lt;p class=MsoNormal&gt;
Sobald man nun „MeinArtikel“ im Feld Artikelnummer eingibt, wird automatisch die Artikelnummer
eingefügt. 
&lt;br&gt;
Dieses Verhalten ist nun Systemweit anwendbar. Überall wo ein Artikel über die Artikelnummer
ausgewählt werden kann (Bspw. Aufträge, Bestellungen) kann nun in der manuellen Eingabe
der Suchbegriff verwendet werden. Nach der Eingabe des Suchbegriffs wird dieser durch
die Artikelnummer ersetzt (sofern vorhanden).&lt;br&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://starside.eu/cptrk.ashx?id=220e4d04-7c2d-4ebe-ab17-bb074a9e47a7"&gt;&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=31c80671-6268-44d3-b929-ea305a64308a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,31c80671-6268-44d3-b929-ea305a64308a.aspx</comments>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,31c80671-6268-44d3-b929-ea305a64308a.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=0b55aa90-c644-4505-9fa7-5a99d7c4a2d0</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,0b55aa90-c644-4505-9fa7-5a99d7c4a2d0.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,0b55aa90-c644-4505-9fa7-5a99d7c4a2d0.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=0b55aa90-c644-4505-9fa7-5a99d7c4a2d0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft Dynamics AX 2009 bietet die Möglichkeit, den Verlauf eines Dokuments, welches
über das AIF exportiert oder importiert wurde zu betrachten.<br />
Dies war auch schon mit Microsoft Dynamics AX 4.0 möglich.
</p>
        <p>
Über die Maske "Dokumentverlauf" können alle Dokumente/Nachrichten eingesehen werden,
welche über das AIF verarbeitet wurden.<br />
Über den Button "Korrelation" ist es sogar möglich, die von der Verarbeitung (schreiben,
ändern, lesen, etc.) betroffenen Datensätze anzuzeigen.
</p>
        <p>
        </p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/AIFFehler_Maske2.jpg" border="0" />
        </p>
        <p>
So ist es zumindest in der Theorie.<br />
In der Praxis sieht es leider etwas anders aus. Nach einem Klick auf den Button "Korrelation"
öffnet sich leider nicht wie erwartet die Maske "Dokumentkorrelierung".<br />
Stattdessen wird der Debugger (wenn installiert) geöffnet und die Fehlermeldung
ausgegeben, dass ein Objekt nicht über die Methode "extendedTypeId" verfügt.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/AIFFehler2.jpg" border="0" />
        </p>
        <p>
So wie es scheint, hat sich in den Quellcode ein kleiner Fehler eingeschlichen, welcher
dazu führt, dass die Maske "Dokumentkorrelierung" niemals geöffnet werden kann.<br />
Nach einem Vergleich der Funktionalitäten zwischen Dynamics AX 4.0 und Dynamics AX
2009 kann dieses Verhalten (der Fehler) aber wie folgt beschrieben behoben werden.
</p>
        <ol>
          <li>
AOT öffnen und zu der Tabelle "AifCorrelation" navigieren. 
</li>
          <li>
Den Quelltext der Methode "displayEntityKey" anzeigen lassen bzw. diese für die Bearbeitung
öffnen. 
</li>
          <li>
Folgende Quelltextzeile suchen:<br /><font face="Courier New">dictField = new <strong>DictField</strong>(entityKey.parmTableId(),
enumerator.currentKey());</font></li>
          <li>
Dieses Zeile abändern in:<br /><font face="Courier New">dictField = new <strong>SySDictField</strong>(entityKey.parmTableId(),
enumerator.currentKey());</font></li>
        </ol>
        <p>
Nach dieser kleinen Quelltextänderung sollte alles wie erwartet funktionierten und
die Maske "Dokumentkorrelierung" mit den entsprechenden Datensätzen angezeigt werden.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=0b55aa90-c644-4505-9fa7-5a99d7c4a2d0" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Dynamics AX 2009 AIF - Aufruf der Dokumentkorrelierung im Dokumentverlauf</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,0b55aa90-c644-4505-9fa7-5a99d7c4a2d0.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/G-n-jlFvBzg/PermaLink,guid,0b55aa90-c644-4505-9fa7-5a99d7c4a2d0.aspx</link>
      <pubDate>Wed, 05 Nov 2008 18:06:49 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft Dynamics AX 2009 bietet die Möglichkeit, den Verlauf eines Dokuments, welches
über das AIF exportiert oder importiert wurde zu betrachten.&lt;br&gt;
Dies war auch schon mit Microsoft Dynamics AX 4.0 möglich.
&lt;/p&gt;
&lt;p&gt;
Über die Maske "Dokumentverlauf" können alle Dokumente/Nachrichten eingesehen werden,
welche über das AIF verarbeitet wurden.&lt;br&gt;
Über den Button "Korrelation" ist es sogar möglich, die von der Verarbeitung (schreiben,
ändern, lesen, etc.) betroffenen Datensätze anzuzeigen.
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/AIFFehler_Maske2.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
So ist es zumindest in der Theorie.&lt;br&gt;
In der Praxis sieht es leider etwas anders aus. Nach einem Klick auf den Button "Korrelation"
öffnet sich leider nicht wie erwartet die Maske "Dokumentkorrelierung".&lt;br&gt;
Stattdessen wird der Debugger (wenn installiert)&amp;nbsp;geöffnet und&amp;nbsp;die Fehlermeldung
ausgegeben, dass ein Objekt nicht über die Methode "extendedTypeId" verfügt.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/AIFFehler2.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
So wie es scheint, hat sich in den Quellcode ein kleiner Fehler eingeschlichen, welcher
dazu führt, dass die Maske "Dokumentkorrelierung" niemals geöffnet werden kann.&lt;br&gt;
Nach einem Vergleich der Funktionalitäten zwischen Dynamics AX 4.0 und Dynamics AX
2009 kann dieses Verhalten (der Fehler) aber wie folgt beschrieben behoben werden.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
AOT öffnen und zu der Tabelle "AifCorrelation" navigieren. 
&lt;li&gt;
Den Quelltext der Methode "displayEntityKey" anzeigen lassen bzw. diese für die Bearbeitung
öffnen. 
&lt;li&gt;
Folgende Quelltextzeile suchen:&lt;br&gt;
&lt;font face="Courier New"&gt;dictField = new &lt;strong&gt;DictField&lt;/strong&gt;(entityKey.parmTableId(),
enumerator.currentKey());&lt;/font&gt; 
&lt;li&gt;
Dieses Zeile abändern in:&lt;br&gt;
&lt;font face="Courier New"&gt;dictField = new &lt;strong&gt;SySDictField&lt;/strong&gt;(entityKey.parmTableId(),
enumerator.currentKey());&lt;/font&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;
Nach dieser kleinen Quelltextänderung sollte alles wie erwartet funktionierten und
die Maske "Dokumentkorrelierung" mit den entsprechenden Datensätzen angezeigt werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=0b55aa90-c644-4505-9fa7-5a99d7c4a2d0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,0b55aa90-c644-4505-9fa7-5a99d7c4a2d0.aspx</comments>
      <category>Dynamics Ax;Dynamics Ax/HowTo;Dynamics Ax/Programmierung;Dynamics AX/AIF</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,0b55aa90-c644-4505-9fa7-5a99d7c4a2d0.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=3eb33918-8a0c-479f-b368-26ea77b0be46</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,3eb33918-8a0c-479f-b368-26ea77b0be46.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,3eb33918-8a0c-479f-b368-26ea77b0be46.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=3eb33918-8a0c-479f-b368-26ea77b0be46</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im wieder taucht in den Newsgroups und einschlägigen Foren die Frage auf, ob es möglich
ist, Dynamics AX 2009 unter Windows Server 2008 und/oder in Verbindung mit SQL Server
2008 zu betreiben.
</p>
        <p>
Die Antwort auf diese Frage lautet eigentlich „Ja“, zugleich aber auch „Nein“.
</p>
        <p>
Offiziell sind die beiden Produkte zwar noch nicht für die Verwendung mit Dynamics
AX 2009 freigegeben, aber prinzipiell funktioniert Dynamics AX 2009 auch mit dieser
Systemkonfiguration (Kernfunktionalität).<br />
Allerdings muss auch erwähnt werden, dass der eine oder andere Punkt bei der Installation
bzw. beim Betrieb von Dynamics AX 2009 mit Windows Server 2008 und/oder dem SQL Server
2008 für Verwirrung sorgen kann.
</p>
        <p>
So wird, nach erfolgreicher Installation der Basiskomponenten von Dynamics AX 2009
und anschließendem AOS Start, eine Fehlermeldung im Ereignisprotokoll von Windows
Server 2008 erzeugt, welche aussagt, dass Dynamics AX 2009 (genauer der AOS) das gewählte
Betriebssystem nicht unterstützt.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/Eventlog nach AOS start.jpg" border="0" />
        </p>
        <p>
Ungeachtet dieser Fehlermeldung, läuft der AOS Dienst von Dynamics AX 2009 unter Windows
Server 2008 ohne weitere Probleme. Unschön ist nur, dass diese Meldung bei jedem Start
des AOS erzeugt wird.
</p>
        <p>
Für die Verwendung des Enterprise Portals bzw. des Rolecenters muss beachtet werden,
dass wie im Installation Guide von Dynamics AX 2009 beschrieben, die Sharepoint Services
3.0 mit SP1 verwendet werden müssen, da frühere Versionen nicht richtig unter Windows
Server 2008 laufen.
</p>
        <p>
Ein weiterer Punkt der unbedingt beachtet werden sollte, sind die Reporting-Erweiterungen
von Dynamics AX 2009.<br />
Eine Installation der Reporting-Erweiterungen ist derzeit leider nur möglich, wenn
die Reporting Services des SQL Server 2005 in der Service Pack Version 2 verwendet
werden.<br />
Sollen die Reporting Services des SQL Server 2008 verwendet werden, scheitert es schon
an der Installation der Reporting-Erweiterungen von Dynamics AX 2009.<br />
Diese lassen sich in einer solchen Systemumgebung erst gar nicht installieren. Das
Setup wird durch eine entsprechende Fehlermeldung abgebrochen.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/Fehler_ReportingServices.jpg" border="0" />
        </p>
        <p>
Dies hat zur Folge, dass die Reporting Services des SQL Server 2008 nicht mit Dynamics
AX 2009 verwendet werden können.
</p>
        <p>
Gleiches gilt für die Analysis Extensions von Dynamics AX 2009 in Kombination mit
den Analysis Services des SQL Server 2008.<br />
Diese lassen sich zwar ohne Problem installieren, aber eine Verarbeitung der Cubes
ist nicht möglich, da diese auf Grund von Verarbeitungsfehlern abgebrochen wird.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/Cubeverarbeitung_fehler.jpg" border="0" />
        </p>
        <p>
Schlussendlich bedeutet dies, dass die Verwendung von Windows Server 2008 als Betriebssystem
für Dynamics AX 2009 keine Probleme bereiten sollte.
</p>
        <p>
Für die reinen Datenbankdienste von SQL Server 2008 trifft dies ebenfalls zu. In meinen
Test konnte ich keinerlei Probleme beim Betrieb mit Dynamics AX 2009 erkennen.<br />
Anderes gilt für die Reporting und Analysis Services von SQL Server2008. Deren Verwendung
ist leider noch nicht möglich und es müssen weiterhin die Reporting und Analysis Services
des SQL Server 2005 verwendet werden um alle möglichen Funktionalitäten von Dynamics
AX 2009 zur Verfügung stellen zu können.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=3eb33918-8a0c-479f-b368-26ea77b0be46" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft Dynamics AX 2009, Windows Server 2008 und SQL Server 2008</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,3eb33918-8a0c-479f-b368-26ea77b0be46.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/M_dR5GyWXzQ/PermaLink,guid,3eb33918-8a0c-479f-b368-26ea77b0be46.aspx</link>
      <pubDate>Sun, 12 Oct 2008 15:43:26 GMT</pubDate>
      <description>&lt;p&gt;
Im wieder taucht in den Newsgroups und einschlägigen Foren die Frage auf, ob es möglich
ist, Dynamics AX 2009 unter Windows Server 2008 und/oder in Verbindung mit SQL Server
2008 zu betreiben.
&lt;/p&gt;
&lt;p&gt;
Die Antwort auf diese Frage lautet eigentlich „Ja“, zugleich aber auch „Nein“.
&lt;/p&gt;
&lt;p&gt;
Offiziell sind die beiden Produkte zwar noch nicht für die Verwendung mit Dynamics
AX 2009 freigegeben, aber prinzipiell funktioniert Dynamics AX 2009 auch mit dieser
Systemkonfiguration (Kernfunktionalität).&lt;br&gt;
Allerdings muss auch erwähnt werden, dass der eine oder andere Punkt bei der Installation
bzw. beim Betrieb von Dynamics AX 2009 mit Windows Server 2008 und/oder dem SQL Server
2008 für Verwirrung sorgen kann.
&lt;/p&gt;
&lt;p&gt;
So wird, nach erfolgreicher Installation der Basiskomponenten von Dynamics AX 2009
und anschließendem AOS Start, eine Fehlermeldung im Ereignisprotokoll von Windows
Server 2008 erzeugt, welche aussagt, dass Dynamics AX 2009 (genauer der AOS) das gewählte
Betriebssystem nicht unterstützt.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/Eventlog nach AOS start.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Ungeachtet dieser Fehlermeldung, läuft der AOS Dienst von Dynamics AX 2009 unter Windows
Server 2008 ohne weitere Probleme. Unschön ist nur, dass diese Meldung bei jedem Start
des AOS erzeugt wird.
&lt;/p&gt;
&lt;p&gt;
Für die Verwendung des Enterprise Portals bzw. des Rolecenters muss beachtet werden,
dass wie im Installation Guide von Dynamics AX 2009 beschrieben, die Sharepoint Services
3.0 mit SP1 verwendet werden müssen, da frühere Versionen nicht richtig unter Windows
Server 2008 laufen.
&lt;/p&gt;
&lt;p&gt;
Ein weiterer Punkt der unbedingt beachtet werden sollte, sind die Reporting-Erweiterungen
von Dynamics AX 2009.&lt;br&gt;
Eine Installation der Reporting-Erweiterungen ist derzeit leider nur möglich, wenn
die Reporting Services des SQL Server 2005 in der Service Pack Version 2 verwendet
werden.&lt;br&gt;
Sollen die Reporting Services des SQL Server 2008 verwendet werden, scheitert es schon
an der Installation der Reporting-Erweiterungen von Dynamics AX 2009.&lt;br&gt;
Diese lassen sich in einer solchen Systemumgebung erst gar nicht installieren. Das
Setup wird durch eine entsprechende Fehlermeldung abgebrochen.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/Fehler_ReportingServices.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Dies hat zur Folge, dass die Reporting Services des SQL Server 2008 nicht mit Dynamics
AX 2009 verwendet werden können.
&lt;/p&gt;
&lt;p&gt;
Gleiches gilt für die Analysis Extensions von Dynamics AX 2009 in Kombination mit
den Analysis Services des SQL Server 2008.&lt;br&gt;
Diese lassen sich zwar ohne Problem installieren, aber eine Verarbeitung der Cubes
ist nicht möglich, da diese auf Grund von Verarbeitungsfehlern abgebrochen wird.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/Cubeverarbeitung_fehler.jpg" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Schlussendlich bedeutet dies, dass die Verwendung von Windows Server 2008 als Betriebssystem
für Dynamics AX 2009 keine Probleme bereiten sollte.
&lt;/p&gt;
&lt;p&gt;
Für die reinen Datenbankdienste von SQL Server 2008 trifft dies ebenfalls zu. In meinen
Test konnte ich keinerlei Probleme beim Betrieb mit Dynamics AX 2009 erkennen.&lt;br&gt;
Anderes gilt für die Reporting und Analysis Services von SQL Server2008. Deren Verwendung
ist leider noch nicht möglich und es müssen weiterhin die Reporting und Analysis Services
des SQL Server 2005 verwendet werden um alle möglichen Funktionalitäten von Dynamics
AX 2009 zur Verfügung stellen zu können.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=3eb33918-8a0c-479f-b368-26ea77b0be46" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,3eb33918-8a0c-479f-b368-26ea77b0be46.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/Administration;SQL Server</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,3eb33918-8a0c-479f-b368-26ea77b0be46.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=def34208-06f0-465d-a783-2dc2b7edac1a</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,def34208-06f0-465d-a783-2dc2b7edac1a.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,def34208-06f0-465d-a783-2dc2b7edac1a.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=def34208-06f0-465d-a783-2dc2b7edac1a</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Im Microsoft Partner Portal stehen die Präsentationsfolien der Vorträge, die
beim Dynamics AX Technical Airlift 2008 sowie dem Dynamics ERP-Launch, gehalten
wurden zum download bereit.
</p>
        <p>
Die Präsentationsfolien können über folgenden Link gedownloaded werden.<br /><a href="https://partner.microsoft.com/germany/40082086">Microsoft Dynamics ERP-Launch
und Technical Airlift - Vortragsfolien</a></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=def34208-06f0-465d-a783-2dc2b7edac1a" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Vortragsfolien des Dynamics Technical Airlift 2008 und Dynamics ERP-Launch </title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,def34208-06f0-465d-a783-2dc2b7edac1a.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/2JT2V5MFCuc/PermaLink,guid,def34208-06f0-465d-a783-2dc2b7edac1a.aspx</link>
      <pubDate>Fri, 03 Oct 2008 15:14:32 GMT</pubDate>
      <description>&lt;p&gt;
Im Microsoft Partner Portal&amp;nbsp;stehen die Präsentationsfolien der Vorträge, die
beim Dynamics AX Technical Airlift 2008 sowie dem Dynamics ERP-Launch,&amp;nbsp;gehalten
wurden zum download bereit.
&lt;/p&gt;
&lt;p&gt;
Die Präsentationsfolien können über folgenden Link gedownloaded werden.&lt;br&gt;
&lt;a href="https://partner.microsoft.com/germany/40082086"&gt;Microsoft Dynamics ERP-Launch
und Technical Airlift - Vortragsfolien&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=def34208-06f0-465d-a783-2dc2b7edac1a" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,def34208-06f0-465d-a783-2dc2b7edac1a.aspx</comments>
      <category>Allgemein;Dynamics Ax</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,def34208-06f0-465d-a783-2dc2b7edac1a.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=b7194b65-1d38-4c94-9a5f-75460351f3a6</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=b7194b65-1d38-4c94-9a5f-75460351f3a6</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Am 9. September 2008 fand der Dynamics Technical Airlift 2008 in Fürstenfeldbruck
bei München statt. Wie auch schon im letzten Jahr, richtete sich die Veranstaltung
an die eher technisch ausgerichteten Personen (Consultants/Entwickler) aus der Dynamics-Gemeinde.
</p>
        <p>
Ich selbst durfte in diesem Jahr als ATE (Ask the Expert) an dieser Veranstaltung
teilnehmen.<br />
Der eine oder andere wird mich in dem orangen Poloshirt gesehen haben. :-)
</p>
        <p>
Insgesamt kann ich nur sagen, es war eine sehr gut organisierte Veranstaltung, auch
wenn einige Vorträge, für den einen oder anderen, nicht die gewünschte technische
Tiefe hatten.<br />
Auch der gemeinsame Informationsaustausch und die vielen Gespräche mit Personen
der Dynamics-Gemeinde haben die Veranstaltung positiv abgerundet.
</p>
        <p>
Da Meinungen ja bekanntlich weit auseinander gehen, möchte ich jeden einzelnen bitten,
seine Eindrücke und Meinungen zu dem Dynamics Technical Airlift 2008 zu schildern.<br />
Wer dies nicht "öffentlich", durch die Kommentarfunktion (<a href="http://blog.ak-home.net/CommentView,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx#commentstart">hier</a>),
machen möchte, kann mir auch gerne eine Email schreiben (<a href="javascript:var e1='%61%6b%2d%68%6f%6d%65%2e%6e%65%74',e2='mailto: ', e3='%6b%75%65%68%6e';var e0=e2+e3+'%40'+e1+'?Subject=Comments on: Aku\'s Ax Blog';(window.location?window.location.replace(e0):document.write(e0));">Email
me</a>).
</p>
        <p>
Ich möchte auch die jenigen bitten, die nicht an dieser Veranstalltung teilgenommen
haben, mir ein kurzes "Feedback" zukommen zu lassen.<br />
Besonders die Erwartungen an eine solche Veranstaltung und/oder die Community
im Allgemeinen würden mich interessieren.
</p>
        <p>
Bitte beachtet, dass alle Kommentare erst durch mich "überprüft" werden müssen, bevor
sie angezeigt werden.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=b7194b65-1d38-4c94-9a5f-75460351f3a6" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Dynamics Technical Airlift 2008 - Rückblick</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/4ejPZjq7jfI/PermaLink,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx</link>
      <pubDate>Fri, 12 Sep 2008 14:45:45 GMT</pubDate>
      <description>&lt;p&gt;
Am 9. September 2008&amp;nbsp;fand der Dynamics Technical Airlift 2008 in Fürstenfeldbruck
bei München statt. Wie auch schon im letzten Jahr, richtete sich die Veranstaltung
an die eher technisch ausgerichteten Personen (Consultants/Entwickler) aus der Dynamics-Gemeinde.
&lt;/p&gt;
&lt;p&gt;
Ich selbst durfte in diesem Jahr als ATE (Ask the Expert) an dieser Veranstaltung
teilnehmen.&lt;br&gt;
Der eine oder andere wird mich in dem orangen Poloshirt gesehen haben. :-)
&lt;/p&gt;
&lt;p&gt;
Insgesamt kann ich nur sagen, es war eine sehr gut organisierte Veranstaltung, auch
wenn einige Vorträge, für den einen oder anderen, nicht die gewünschte technische
Tiefe hatten.&lt;br&gt;
Auch&amp;nbsp;der gemeinsame Informationsaustausch und die vielen Gespräche mit Personen
der Dynamics-Gemeinde haben die Veranstaltung positiv abgerundet.
&lt;/p&gt;
&lt;p&gt;
Da Meinungen ja bekanntlich weit auseinander gehen, möchte ich jeden einzelnen bitten,
seine Eindrücke&amp;nbsp;und Meinungen zu dem Dynamics Technical Airlift 2008 zu schildern.&lt;br&gt;
Wer dies nicht "öffentlich", durch die Kommentarfunktion (&lt;a href="http://blog.ak-home.net/CommentView,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx#commentstart"&gt;hier&lt;/a&gt;),
machen möchte, kann mir auch gerne eine Email schreiben (&lt;a href="javascript:var e1='%61%6b%2d%68%6f%6d%65%2e%6e%65%74',e2='mailto: ', e3='%6b%75%65%68%6e';var e0=e2+e3+'%40'+e1+'?Subject=Comments on: Aku\'s Ax Blog';(window.location?window.location.replace(e0):document.write(e0));"&gt;Email
me&lt;/a&gt;).
&lt;/p&gt;
&lt;p&gt;
Ich möchte auch die jenigen bitten, die nicht an dieser Veranstalltung teilgenommen
haben, mir ein kurzes "Feedback" zukommen zu lassen.&lt;br&gt;
Besonders die Erwartungen&amp;nbsp;an eine solche&amp;nbsp;Veranstaltung und/oder die Community
im Allgemeinen würden mich interessieren.
&lt;/p&gt;
&lt;p&gt;
Bitte beachtet, dass alle Kommentare erst durch mich "überprüft" werden müssen, bevor
sie angezeigt werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=b7194b65-1d38-4c94-9a5f-75460351f3a6" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx</comments>
      <category>Allgemein;Dynamics Ax</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,b7194b65-1d38-4c94-9a5f-75460351f3a6.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=7dc18fa7-b87f-40c5-a3e9-c034775e72b0</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,7dc18fa7-b87f-40c5-a3e9-c034775e72b0.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,7dc18fa7-b87f-40c5-a3e9-c034775e72b0.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=7dc18fa7-b87f-40c5-a3e9-c034775e72b0</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Alle frei erhältlichen Dokumente über Microsoft Dynamixs AX 2009 stehen jetzt über
Windows Live SkyDrive für jedermann frei zur Verfügung.
</p>
        <p>
Vielen Dank an <a href="http://daxguy.blogspot.com/">Arijit Basu</a>, der sich die
Arbeit gemacht hat, diese dort zum downlaod zur Verfügung zu stelllen. 
</p>
        <p>
Mehr Informationen hierzu gibt es im <a href="http://daxguy.blogspot.com/2008/08/ax-2009-documents.html">Blog
von Arijit Basu</a>.
</p>
        <p>
Hier der "direkt" Link zu den Dokumenten: <a href="http://cid-0594e6dbf6c3ce94.skydrive.live.com/browse.aspx/AX%202009%20Documents">AX
2009 Documents</a></p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=7dc18fa7-b87f-40c5-a3e9-c034775e72b0" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft Dynamics AX 2009 Dokumente / Whitepaper</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,7dc18fa7-b87f-40c5-a3e9-c034775e72b0.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/4ISnq--X9dg/PermaLink,guid,7dc18fa7-b87f-40c5-a3e9-c034775e72b0.aspx</link>
      <pubDate>Sat, 30 Aug 2008 12:53:37 GMT</pubDate>
      <description>&lt;p&gt;
Alle frei erhältlichen Dokumente über Microsoft Dynamixs AX 2009&amp;nbsp;stehen jetzt&amp;nbsp;über
Windows Live SkyDrive für jedermann frei zur Verfügung.
&lt;/p&gt;
&lt;p&gt;
Vielen Dank an &lt;a href="http://daxguy.blogspot.com/"&gt;Arijit Basu&lt;/a&gt;, der sich die
Arbeit gemacht hat, diese dort zum downlaod zur Verfügung zu stelllen.&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
Mehr Informationen hierzu gibt es im &lt;a href="http://daxguy.blogspot.com/2008/08/ax-2009-documents.html"&gt;Blog
von Arijit Basu&lt;/a&gt;.
&lt;/p&gt;
&lt;p&gt;
Hier der "direkt" Link zu den Dokumenten: &lt;a href="http://cid-0594e6dbf6c3ce94.skydrive.live.com/browse.aspx/AX%202009%20Documents"&gt;AX
2009 Documents&lt;/a&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=7dc18fa7-b87f-40c5-a3e9-c034775e72b0" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,7dc18fa7-b87f-40c5-a3e9-c034775e72b0.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics AX/Dynamics AX 2009</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,7dc18fa7-b87f-40c5-a3e9-c034775e72b0.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=17f8f32e-35e3-4050-942a-97d8577673b7</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,17f8f32e-35e3-4050-942a-97d8577673b7.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,17f8f32e-35e3-4050-942a-97d8577673b7.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=17f8f32e-35e3-4050-942a-97d8577673b7</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie bereits im diesem Artikel "<a href="http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx" rel="bookmark">Fehlermeldung
beim Starten des Microsoft Dynamics AX Clients</a>" beschrieben, kann es zu Fehlermeldungen
beim Starten des Dynamixs AX 4.0 Client kommen.
</p>
        <p>
Eine weitere Fehlermeldung, welche erzeugt werden kann ist "<font color="#ff0000">Incompatible
ext. version</font>".<br />
Es ist auch möglich, dass diese sogar mehrfach ausgegeben wird.
</p>
        <p>
Grund hierfür ist meist ein Problem mit der TAPI-Integartion des CRM Moduls, bzw.
genauer gesagt, ein Problem mit den eingestellten Wählregeln/Standorte der Windows
Telefon- und Modemoptionen.
</p>
        <p>
Die Behebung des Fehlers ist eigentlich ganz einfach.
</p>
        <ol>
          <li>
Wenn die TAPI-Integration nicht genutzt wird, kann diese deaktiviert werden.<br />
Wie dies genau geht kann in diesem Artikel "<a href="http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx" rel="bookmark">Fehlermeldung
beim Starten des Microsoft Dynamics AX Clients</a>" nachgelesen werden.<br /><br /></li>
          <li>
Wenn die TAPI-Integration verwendet werden soll, muss ein neuer Standort in den
Windows Telefon- und Modemoptionen erstellt werden.<br />
Das Erstellen eines neuen Standorts erfolgt über "Start -&gt; Systemsteuerung -&gt;
Telefon- und Modemoptionen" auf dem jeweiligen Clientcomputer (pro Benutzer).<br />
Dort sollte, wenn vorhanden, ein bestehender Standort gelöscht werden und ein neuer
angelegt werden.</li>
        </ol>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=17f8f32e-35e3-4050-942a-97d8577673b7" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Fehlermeldung beim Starten des Microsoft Dynamics AX Clients - Incompatible ext. version</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,17f8f32e-35e3-4050-942a-97d8577673b7.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/ANQxMtVDTBM/PermaLink,guid,17f8f32e-35e3-4050-942a-97d8577673b7.aspx</link>
      <pubDate>Sat, 30 Aug 2008 11:39:27 GMT</pubDate>
      <description>&lt;p&gt;
Wie bereits im diesem Artikel "&lt;a href="http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx" rel=bookmark&gt;Fehlermeldung
beim Starten des Microsoft Dynamics AX Clients&lt;/a&gt;"&amp;nbsp;beschrieben, kann es zu Fehlermeldungen
beim Starten des Dynamixs AX 4.0 Client kommen.
&lt;/p&gt;
&lt;p&gt;
Eine weitere Fehlermeldung,&amp;nbsp;welche erzeugt werden kann ist "&lt;font color=#ff0000&gt;Incompatible
ext. version&lt;/font&gt;".&lt;br&gt;
Es ist auch möglich, dass diese sogar mehrfach ausgegeben wird.
&lt;/p&gt;
&lt;p&gt;
Grund hierfür ist meist ein Problem mit der TAPI-Integartion des CRM Moduls, bzw.
genauer gesagt, ein Problem mit den eingestellten Wählregeln/Standorte der Windows
Telefon- und Modemoptionen.
&lt;/p&gt;
&lt;p&gt;
Die&amp;nbsp;Behebung des Fehlers ist eigentlich ganz einfach.
&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
Wenn die TAPI-Integration nicht genutzt wird, kann diese deaktiviert werden.&lt;br&gt;
Wie dies genau geht kann in diesem Artikel "&lt;a href="http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx" rel=bookmark&gt;Fehlermeldung
beim Starten des Microsoft Dynamics AX Clients&lt;/a&gt;" nachgelesen werden.&lt;br&gt;
&lt;br&gt;
&lt;li&gt;
Wenn die TAPI-Integration verwendet werden soll, muss&amp;nbsp;ein neuer Standort in den
Windows Telefon- und Modemoptionen erstellt werden.&lt;br&gt;
Das Erstellen eines neuen Standorts erfolgt über "Start -&amp;gt; Systemsteuerung -&amp;gt;
Telefon- und Modemoptionen" auf dem jeweiligen Clientcomputer (pro Benutzer).&lt;br&gt;
Dort sollte, wenn vorhanden, ein bestehender Standort gelöscht werden und ein neuer
angelegt werden.&lt;/li&gt;
&lt;/ol&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=17f8f32e-35e3-4050-942a-97d8577673b7" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,17f8f32e-35e3-4050-942a-97d8577673b7.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/Administration;Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,17f8f32e-35e3-4050-942a-97d8577673b7.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=52c21c8f-5aa5-4d84-aa88-d640b80e9701</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,52c21c8f-5aa5-4d84-aa88-d640b80e9701.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,52c21c8f-5aa5-4d84-aa88-d640b80e9701.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=52c21c8f-5aa5-4d84-aa88-d640b80e9701</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wie bereits in diesem Artikel <a href="http://blog.ak-home.net/PermaLink,guid,c1798182-de60-4146-85ed-06035d74c6c6.aspx">"Auswahl
von mehreren Datensätzen in einem Grid-Control (MultiSelect)"</a> beschrieben, kann
für ein Grid-Control die Eigenschaft MultiSelect gesetzt werden, womit es ermöglicht
wird, dass mehrere Datensätze für eine weitere Verarbeitung ausgewählt werden können.
</p>
        <p>
Dies Funktioniert solange, bis &lt;DataSource&gt;_ds.research() aufgerufen wird. Dieser
Aufruf hat zur Folge, dass die Daten der DataSource neu geladen werden und somit auch
die Selektierung verworfen wird.
</p>
        <p>
Ein Beispiel wie es nicht funktioniert:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">
            <span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">void</span> clicked() 
<br />
{ <br />
   CustTable custTable; <br />
   ; <br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   for</span> (custTable <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> CustTable_ds.getFirst(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>)
? CustTable_ds.getFirst(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>)
: CustTable_ds.cursor(); <br />
        custTable; <br />
        custTable <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> CustTable_ds.getNext()) <br />
   { <br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">      //do
something with custTable </span><br />
      info(custTable.accountNum);<br />
      </span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">custTable_ds.research();   </span>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"> <br />
   } 
<br />
}</span>
        </p>
        <p>
Es gilt also genau zu beachten zu welchem Zeitpunkt bzw. an welcher Stelle im Quelltext
die Methode &lt;DataSource&gt;_ds.research() aufgerufen wird.
</p>
        <p>
Weiterhin kann es zu Problemen beim MultiSelect kommen, wenn in den Methoden der DataSource
ein Aufruf von &lt;DataSource&gt;_ds.research() erfolgt.<br />
Normalerweise werden die DataSource-Methoden für jeden selektierten Datensatz ausgeführt.
Wenn aber innerhalb einer der Methoden, wie z.B. Delete(), wird diese Methode nur
für den ersten ausgewählten Datensatz ausgeführt und dann ein Research ausgeführt,
was wie schon beschrieben zu einem Verwerfen der Selektierung führt.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=52c21c8f-5aa5-4d84-aa88-d640b80e9701" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>MultiSelect und die DataSource-Methode research().</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,52c21c8f-5aa5-4d84-aa88-d640b80e9701.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/4z6E2kLA1P8/PermaLink,guid,52c21c8f-5aa5-4d84-aa88-d640b80e9701.aspx</link>
      <pubDate>Thu, 14 Aug 2008 17:00:44 GMT</pubDate>
      <description>&lt;p&gt;
Wie bereits in diesem Artikel &lt;a href="http://blog.ak-home.net/PermaLink,guid,c1798182-de60-4146-85ed-06035d74c6c6.aspx"&gt;"Auswahl
von mehreren Datensätzen in einem Grid-Control (MultiSelect)"&lt;/a&gt; beschrieben, kann
für ein Grid-Control die Eigenschaft MultiSelect gesetzt werden, womit es ermöglicht
wird, dass mehrere Datensätze für eine weitere Verarbeitung ausgewählt werden können.
&lt;/p&gt;
&lt;p&gt;
Dies Funktioniert solange, bis &amp;lt;DataSource&amp;gt;_ds.research() aufgerufen wird. Dieser
Aufruf hat zur Folge, dass die Daten der DataSource neu geladen werden und somit auch
die Selektierung verworfen wird.
&lt;/p&gt;
&lt;p&gt;
Ein Beispiel wie es nicht funktioniert:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;void&lt;/span&gt; clicked() 
&lt;br&gt;
{&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;CustTable custTable;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&amp;nbsp;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;for&lt;/span&gt; (custTable &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; CustTable_ds.getFirst(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;)
?&amp;nbsp;CustTable_ds.getFirst(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;)
: CustTable_ds.cursor();&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; custTable;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;custTable &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; CustTable_ds.getNext())&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;{&amp;nbsp;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;//do
something with custTable&amp;nbsp;&lt;/span&gt;
&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;info(custTable.accountNum);&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;custTable_ds.research();&amp;nbsp;&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;} 
&lt;br&gt;
}&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Es gilt also genau zu beachten zu welchem Zeitpunkt bzw. an welcher Stelle im Quelltext
die Methode &amp;lt;DataSource&amp;gt;_ds.research() aufgerufen wird.
&lt;/p&gt;
&lt;p&gt;
Weiterhin kann es zu Problemen beim MultiSelect kommen, wenn in den Methoden der DataSource
ein Aufruf von &amp;lt;DataSource&amp;gt;_ds.research() erfolgt.&lt;br&gt;
Normalerweise werden die DataSource-Methoden für jeden selektierten Datensatz ausgeführt.
Wenn aber innerhalb einer der Methoden, wie z.B. Delete(), wird diese Methode nur
für den ersten ausgewählten Datensatz ausgeführt und dann ein Research ausgeführt,
was wie schon beschrieben zu einem Verwerfen der Selektierung führt.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=52c21c8f-5aa5-4d84-aa88-d640b80e9701" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,52c21c8f-5aa5-4d84-aa88-d640b80e9701.aspx</comments>
      <category>Dynamics Ax/HowTo;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,52c21c8f-5aa5-4d84-aa88-d640b80e9701.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=be8bfbd5-e4ac-4858-8c19-9d45aaa37220</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,be8bfbd5-e4ac-4858-8c19-9d45aaa37220.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,be8bfbd5-e4ac-4858-8c19-9d45aaa37220.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=be8bfbd5-e4ac-4858-8c19-9d45aaa37220</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Microsoft Dynamics AX verwendet für eindeutige Kennungswerte (Id’s) die eingebauten
Nummernkreise, für welche ein Feld vom Typ „String“ benötigt wird. Dies macht auch
Sinn, da Nummernkreise in Dynamics AX oft ein oder mehrere alphanumerische Zeichen
enthalten. Natürlich können auch rein nummerische Nummernkreise mit diesem „Framework“
erstellt werden.
</p>
        <p>
Allerdings sind die Nummernkreise im Dynamics AX Standard nicht ganz optimal bei der
Verwendung von einem rein nummerischen Nummernkreisen. Dies fängt z.B. schon beim
Datentyp an, der für das ID-Feld der Tabelle verwendet werden muss. Bedingt dadurch,
dass ein Feld vom Typ „String“ verwendet werden muss, belegt dieses Feld unnötig viel
Speicher in der Datenbank. Weiterhin gestalten sich Sortierungen, Rechenoperationen,
etc. erheblich schwieriger.
</p>
        <p>
Diese Probleme können umgangen werden, wenn für das ID-Feld der Datentyp „Integer“
oder „Int64“ verwendet wird. Leider kann nun nicht mehr das Nummernkreis-Framework
des Dynamics AX Standards verwendet werden, da dies den Datentyp „String“ für ein
ID-Feld vorschreibt.
</p>
        <p>
Es muss also ein eigenes, kleines Nummernkreis-Framework oder ein eigener Nummernkreis
geschrieben werden, der die Verwendung des Datentyps „Integer“ für ID-Felder ermöglicht.
Dies hört sich zuerst schwierig an, da Dinge wie fortlaufende Nummernvergabe oder
die Wiederverwendung von freien Nummern (Löchern im Nummernkreis) berücksichtigt werden
sollten.
</p>
        <p>
Es ist aber ganz und gar nicht schwierig, eine eigene Nummernkreisfunktionalität zu
erstellen. Das einzige was hierfür benötigt wird ist eine entsprechen aufgebaute Select-Abfrage.
</p>
        <p>
Die nächste Nummer eines Nummernkreises ist immer die zuletzt vergebenen Nummer (höchste)
+ 1.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   Aku_TestTable
t1;<br />
   ;<br />
   select maxof(ID) from t1;<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   return</span> t1.ID <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span> 1;</span>
        </p>
        <p>
Etwas schwieriger wird es, wenn auch die frei gewordenen Nummern des Nummernkreises
wieder vergeben/verwendet werden sollen. Dann muss immer die kleinste Id aus der Tabelle
gesucht werden, für die es keinen Datensatz in der Tabelle gibt. Gibt es kein "Nummernloch",
muss die nächst höchste Nummer vergeben werden.
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   Aku_TestTable
t1;<br />
   Aku_TestTable t2;<br />
   ;<br />
   select minof(ID) from t1 notexists join t2 where t2.ID == (t1.ID <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span> 1);<br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">   return</span> t1.ID <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">+</span> 1;</span>
        </p>
        <p>
Um diese ein wenig zu verdeutlichen, kann eine beispielhafte Implementierung eines
eigenen Nummernkreises in diesem <a href="http://blog.ak-home.net/content/binary/SharedProject_AKU_OwnIntNumberSeq.rar">Demoprojekt
"SharedProject_AKU_OwnIntNumberSeq"</a> angesehen und runter geladen werden.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=be8bfbd5-e4ac-4858-8c19-9d45aaa37220" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Numerische Nummernkreise im Eigenbau</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,be8bfbd5-e4ac-4858-8c19-9d45aaa37220.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/KCNsqlQYtoA/PermaLink,guid,be8bfbd5-e4ac-4858-8c19-9d45aaa37220.aspx</link>
      <pubDate>Fri, 08 Aug 2008 14:38:44 GMT</pubDate>
      <description>&lt;p&gt;
Microsoft Dynamics AX verwendet für eindeutige Kennungswerte (Id’s) die eingebauten
Nummernkreise, für welche ein Feld vom Typ „String“ benötigt wird. Dies macht auch
Sinn, da Nummernkreise in Dynamics AX oft ein oder mehrere alphanumerische Zeichen
enthalten. Natürlich können auch rein nummerische Nummernkreise mit diesem „Framework“
erstellt werden.
&lt;/p&gt;
&lt;p&gt;
Allerdings sind die Nummernkreise im Dynamics AX Standard nicht ganz optimal bei der
Verwendung von einem rein nummerischen Nummernkreisen. Dies fängt z.B. schon beim
Datentyp an, der für das ID-Feld der Tabelle verwendet werden muss. Bedingt dadurch,
dass ein Feld vom Typ „String“ verwendet werden muss, belegt dieses Feld unnötig viel
Speicher in der Datenbank. Weiterhin gestalten sich Sortierungen, Rechenoperationen,
etc. erheblich schwieriger.
&lt;/p&gt;
&lt;p&gt;
Diese Probleme können umgangen werden, wenn für das ID-Feld der Datentyp „Integer“
oder „Int64“ verwendet wird. Leider kann nun nicht mehr das Nummernkreis-Framework
des Dynamics AX Standards verwendet werden, da dies den Datentyp „String“ für ein
ID-Feld vorschreibt.
&lt;/p&gt;
&lt;p&gt;
Es muss also ein eigenes, kleines Nummernkreis-Framework oder ein eigener Nummernkreis
geschrieben werden, der die Verwendung des Datentyps „Integer“ für ID-Felder ermöglicht.
Dies hört sich zuerst schwierig an, da Dinge wie fortlaufende Nummernvergabe oder
die Wiederverwendung von freien Nummern (Löchern im Nummernkreis) berücksichtigt werden
sollten.
&lt;/p&gt;
&lt;p&gt;
Es ist aber ganz und gar nicht schwierig, eine eigene Nummernkreisfunktionalität zu
erstellen. Das einzige was hierfür benötigt wird ist eine entsprechen aufgebaute Select-Abfrage.
&lt;/p&gt;
&lt;p&gt;
Die nächste Nummer eines Nummernkreises ist immer die zuletzt vergebenen Nummer (höchste)
+ 1.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Aku_TestTable
t1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;select maxof(ID) from t1;&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; t1.ID &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; 1;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Etwas schwieriger wird es, wenn auch die frei gewordenen Nummern des Nummernkreises
wieder vergeben/verwendet werden sollen. Dann muss immer die kleinste Id aus der Tabelle
gesucht werden, für die es keinen Datensatz in der Tabelle gibt. Gibt es kein "Nummernloch",
muss die nächst höchste Nummer vergeben werden.
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;Aku_TestTable
t1;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;Aku_TestTable t2;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;;&lt;br&gt;
&amp;nbsp;&amp;nbsp;&amp;nbsp;select minof(ID) from t1 notexists join t2 where t2.ID == (t1.ID &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; 1);&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;return&lt;/span&gt; t1.ID &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;+&lt;/span&gt; 1;&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Um diese ein wenig zu verdeutlichen, kann eine beispielhafte Implementierung eines
eigenen Nummernkreises in diesem &lt;a href="http://blog.ak-home.net/content/binary/SharedProject_AKU_OwnIntNumberSeq.rar"&gt;Demoprojekt
"SharedProject_AKU_OwnIntNumberSeq"&lt;/a&gt; angesehen und runter geladen werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=be8bfbd5-e4ac-4858-8c19-9d45aaa37220" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,be8bfbd5-e4ac-4858-8c19-9d45aaa37220.aspx</comments>
      <category>Dynamics Ax/Programmierung;Dynamics Ax/Programmierung, Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,be8bfbd5-e4ac-4858-8c19-9d45aaa37220.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=2f0fff4f-35ef-4399-9f21-9d2c4498b653</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,2f0fff4f-35ef-4399-9f21-9d2c4498b653.aspx</pingback:target>
      <dc:creator>Mathias Füßler</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,2f0fff4f-35ef-4399-9f21-9d2c4498b653.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=2f0fff4f-35ef-4399-9f21-9d2c4498b653</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Die Benamung von Tabellenfeldern erfolgt über Labels, die in der Feldeigenschaft "Label"
festgelegt werden.<br />
Diese Benamung wird immer angezeigt, wenn das Feld in der Applikation angezeigt wird.
Es gibt in den Eigenschaften der Tabellenfelder noch die Eigenschaft "GroupPrompt",
die die Benamung in Masken festlegt, wenn das Feld innerhalb einer Gruppe angezeigt
wird. 
</p>
        <p>
          <img src="http://starside.eu/content/binary/Feldeigenschaften.JPG" border="0" />
        </p>
        <p>
Die hinterlegte Benamung in der Eigenschaft GroupPrompt wird immer dann verwendet,
wenn das Feld in einer Gruppe dargestellt wird. Das können Tabellenfeldgruppen oder
Gruppen, die in Forms erzeugt wurden, sein.
</p>
        <p>
          <img src="http://starside.eu/content/binary/AnsichtinForm.JPG" border="0" />
        </p>
        <img width="0" height="0" src="http://starside.eu/cptrk.ashx?id=1dd0527d-3adf-4177-b1de-99f8681890c1" />
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=2f0fff4f-35ef-4399-9f21-9d2c4498b653" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Label von Tabellenfeldern</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,2f0fff4f-35ef-4399-9f21-9d2c4498b653.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/yqlE9HgDxyQ/PermaLink,guid,2f0fff4f-35ef-4399-9f21-9d2c4498b653.aspx</link>
      <pubDate>Wed, 16 Jul 2008 06:28:11 GMT</pubDate>
      <description>&lt;p&gt;
Die Benamung von Tabellenfeldern erfolgt über Labels, die in der Feldeigenschaft "Label"
festgelegt werden.&lt;br&gt;
Diese Benamung wird immer angezeigt, wenn das Feld in der Applikation angezeigt wird.
Es gibt in den Eigenschaften der Tabellenfelder noch&amp;nbsp;die Eigenschaft "GroupPrompt",
die die Benamung in Masken festlegt, wenn das Feld innerhalb einer Gruppe angezeigt
wird. 
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://starside.eu/content/binary/Feldeigenschaften.JPG" border=0&gt;
&lt;/p&gt;
&lt;p&gt;
Die hinterlegte Benamung in der Eigenschaft GroupPrompt wird immer dann verwendet,
wenn das Feld in einer Gruppe dargestellt wird. Das können Tabellenfeldgruppen&amp;nbsp;oder
Gruppen, die in Forms erzeugt wurden, sein.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://starside.eu/content/binary/AnsichtinForm.JPG" border=0&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://starside.eu/cptrk.ashx?id=1dd0527d-3adf-4177-b1de-99f8681890c1"&gt;&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=2f0fff4f-35ef-4399-9f21-9d2c4498b653" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,2f0fff4f-35ef-4399-9f21-9d2c4498b653.aspx</comments>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,2f0fff4f-35ef-4399-9f21-9d2c4498b653.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=689bbb74-5a5d-443e-967b-2313ab2736e4</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=689bbb74-5a5d-443e-967b-2313ab2736e4</wfw:commentRss>
      <slash:comments>1</slash:comments>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Manchmal ist es möglich, dass beim Starten des Microsoft Dynamics AX 4.0 Clients eine
oder meherer Fehlermeldungen in einem Infolog-Fenster ausgegeben werden.
</p>
        <p>
Diese Fehlermeldung könnten z.B. "Corrupted ini file" sein.
</p>
        <p>
Die große Frage ist nun, woher kommt diese Fehlermeldung bzw. wodurch wird diese erzeugt.<br />
Leider ist die Fehlermeldung, welche im Ereignisprotokoll gefunden werden kann,
meist auch nicht besonders hilfreich.
</p>
        <p>
Sollten solche, eher unerklärlichen Fehlermeldungen beim Starten des Dynamics AX Client
ausgegeben werden, lohnt sich oft ein Blick in die Systemkonfiguration, welche über
Verwaltung, Einstellungen, System, Konfiguration aufgerufen werden kann.
</p>
        <p>
Der Grund für diese Fehlermeldung könnte die aktivierte Telefonieintegration des CRM
Moduls sein.<br />
Wird diese deaktiviert, sollte die Fehlermeldung nicht mehr erzeugt werden.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=689bbb74-5a5d-443e-967b-2313ab2736e4" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Fehlermeldung beim Starten des Microsoft Dynamics AX Clients</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/Vh9HFJnYO_Y/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx</link>
      <pubDate>Thu, 10 Jul 2008 18:13:05 GMT</pubDate>
      <description>&lt;p&gt;
Manchmal ist es möglich, dass beim Starten des Microsoft Dynamics AX 4.0 Clients eine
oder meherer Fehlermeldungen in einem Infolog-Fenster ausgegeben werden.
&lt;/p&gt;
&lt;p&gt;
Diese Fehlermeldung könnten z.B. "Corrupted ini file" sein.
&lt;/p&gt;
&lt;p&gt;
Die große Frage ist nun, woher kommt diese Fehlermeldung bzw. wodurch wird diese erzeugt.&lt;br&gt;
Leider ist die Fehlermeldung, welche&amp;nbsp;im Ereignisprotokoll gefunden werden kann,
meist auch nicht besonders hilfreich.
&lt;/p&gt;
&lt;p&gt;
Sollten solche, eher unerklärlichen Fehlermeldungen beim Starten des Dynamics AX Client
ausgegeben werden, lohnt sich oft ein Blick in die Systemkonfiguration, welche über
Verwaltung, Einstellungen, System, Konfiguration aufgerufen werden kann.
&lt;/p&gt;
&lt;p&gt;
Der Grund für diese Fehlermeldung könnte die aktivierte Telefonieintegration des CRM
Moduls sein.&lt;br&gt;
Wird diese deaktiviert, sollte die Fehlermeldung nicht mehr erzeugt werden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=689bbb74-5a5d-443e-967b-2313ab2736e4" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/Administration;Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,689bbb74-5a5d-443e-967b-2313ab2736e4.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=1d00947d-ff17-471a-8e06-7ed13640c46d</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,1d00947d-ff17-471a-8e06-7ed13640c46d.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,1d00947d-ff17-471a-8e06-7ed13640c46d.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1d00947d-ff17-471a-8e06-7ed13640c46d</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
In der Screencast Sektion von Channel 9 hat Mey Meenakshisundaram 6 Screencasts über
die Entwicklung mit dem Enterprise Portal veröffentlicht.
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_Starter_TitleLink" title="Permalink" href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Creating-simple-List-Page-in-Enterprise-Portal/">Microsoft
Dynamics AX 2009 – Creating simple List Page in Enterprise Portal</a>
          <br />
This how-to video demonstrates how to create a simple List Page in Enterprise Portal
using AxGridView control.
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_Starter_TitleLink" title="Permalink" href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Creating-simple-Task-Page-in-Enterprise-Portal/">Microsoft
Dynamics AX 2009 – Creating simple Task Page in Enterprise Portal</a>
          <br />
This how-to video demonstrates how to create a simple Task Page in Enterprise Portal
using AxForm control.
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_Starter_TitleLink" title="Permalink" href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Creating-simple-TunnelWizard-Page-in-Enterprise-Portal/">Microsoft
Dynamics AX 2009 – Creating simple Tunnel(Wizard) Page in Enterprise Portal</a>
          <br />
This how-to video demonstrates how to create a simple Tunnel(Wizard) Page in Enterprise
Portal using ASP.net Wizard control and EP AxForm control.
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_Starter_TitleLink" title="Permalink" href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Calling-X-classes-in-Enterprise-Portal-User-Controls-in-C/">Microsoft
Dynamics AX 2009 – Calling X++ classes in Enterprise Portal User Controls in C#</a>
          <br />
This how-to video demonstrates how to create a simple X++ Class in AOT and create
a C# proxy for this class and call it in Enterprise Portal user control written in
C#.
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_Starter_TitleLink" title="Permalink" href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Using-Record-Context-in-Enterprise-Portal/">Microsoft
Dynamics AX 2009 – Using Record Context in Enterprise Portal</a>
          <br />
Microsoft Dynamics AX developers will learn how to use record context in Enterprise
Portal. Record context is used to pass currently selected record information on a
page or Web part to another page or connected Web part. This how-to-video demonstrates
three ways of passing record context...
</p>
        <p>
          <a id="ctl00_MainPlaceHolder_Starter_TitleLink" title="Permalink" href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Advanced-Grid-in-Enterprise-Portal-List-Page/">Microsoft
Dynamics AX 2009 – Advanced Grid in Enterprise Portal List Page</a>
          <br />
This how-to video demonstrates how to add ranges in dataset to restrict the data displayed
and the different options supported (open,hidden,locked). This also demonstrates how
to use display and edit methods defined in the table in the Grid.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=1d00947d-ff17-471a-8e06-7ed13640c46d" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Microsoft Dynamics AX 2009 Enterprise Portal Entwicklung Samples</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,1d00947d-ff17-471a-8e06-7ed13640c46d.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/pCEZJXvtCsc/PermaLink,guid,1d00947d-ff17-471a-8e06-7ed13640c46d.aspx</link>
      <pubDate>Thu, 26 Jun 2008 17:46:58 GMT</pubDate>
      <description>&lt;p&gt;
In der Screencast Sektion von Channel 9 hat Mey Meenakshisundaram 6 Screencasts über
die Entwicklung mit dem Enterprise Portal veröffentlicht.
&lt;/p&gt;
&lt;p&gt;
&lt;a id=ctl00_MainPlaceHolder_Starter_TitleLink title=Permalink href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Creating-simple-List-Page-in-Enterprise-Portal/"&gt;Microsoft
Dynamics AX 2009 – Creating simple List Page in Enterprise Portal&lt;/a&gt;
&lt;br&gt;
This how-to video demonstrates how to create a simple List Page in Enterprise Portal
using AxGridView control.
&lt;/p&gt;
&lt;p&gt;
&lt;a id=ctl00_MainPlaceHolder_Starter_TitleLink title=Permalink href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Creating-simple-Task-Page-in-Enterprise-Portal/"&gt;Microsoft
Dynamics AX 2009 – Creating simple Task Page in Enterprise Portal&lt;/a&gt;
&lt;br&gt;
This how-to video demonstrates how to create a simple Task Page in Enterprise Portal
using AxForm control.
&lt;/p&gt;
&lt;p&gt;
&lt;a id=ctl00_MainPlaceHolder_Starter_TitleLink title=Permalink href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Creating-simple-TunnelWizard-Page-in-Enterprise-Portal/"&gt;Microsoft
Dynamics AX 2009 – Creating simple Tunnel(Wizard) Page in Enterprise Portal&lt;/a&gt;
&lt;br&gt;
This how-to video demonstrates how to create a simple Tunnel(Wizard) Page in Enterprise
Portal using ASP.net Wizard control and EP AxForm control.
&lt;/p&gt;
&lt;p&gt;
&lt;a id=ctl00_MainPlaceHolder_Starter_TitleLink title=Permalink href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Calling-X-classes-in-Enterprise-Portal-User-Controls-in-C/"&gt;Microsoft
Dynamics AX 2009 – Calling X++ classes in Enterprise Portal User Controls in C#&lt;/a&gt;
&lt;br&gt;
This how-to video demonstrates how to create a simple X++ Class in AOT and create
a C# proxy for this class and call it in Enterprise Portal user control written in
C#.
&lt;/p&gt;
&lt;p&gt;
&lt;a id=ctl00_MainPlaceHolder_Starter_TitleLink title=Permalink href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Using-Record-Context-in-Enterprise-Portal/"&gt;Microsoft
Dynamics AX 2009 – Using Record Context in Enterprise Portal&lt;/a&gt;
&lt;br&gt;
Microsoft Dynamics AX developers will learn how to use record context in Enterprise
Portal. Record context is used to pass currently selected record information on a
page or Web part to another page or connected Web part. This how-to-video demonstrates
three ways of passing record context...
&lt;/p&gt;
&lt;p&gt;
&lt;a id=ctl00_MainPlaceHolder_Starter_TitleLink title=Permalink href="http://channel9.msdn.com/posts/meysun/Microsoft-Dynamics-AX-2009--Advanced-Grid-in-Enterprise-Portal-List-Page/"&gt;Microsoft
Dynamics AX 2009 – Advanced Grid in Enterprise Portal List Page&lt;/a&gt;
&lt;br&gt;
This how-to video demonstrates how to add ranges in dataset to restrict the data displayed
and the different options supported (open,hidden,locked). This also demonstrates how
to use display and edit methods defined in the table in the Grid.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=1d00947d-ff17-471a-8e06-7ed13640c46d" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,1d00947d-ff17-471a-8e06-7ed13640c46d.aspx</comments>
      <category>Dynamics Ax;Dynamics Ax/Programmierung;Dynamics AX / Programmierung / Enterprise Portal</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,1d00947d-ff17-471a-8e06-7ed13640c46d.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=40c372cb-a0e8-4963-9627-dbcb08d37d7b</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,40c372cb-a0e8-4963-9627-dbcb08d37d7b.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,40c372cb-a0e8-4963-9627-dbcb08d37d7b.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=40c372cb-a0e8-4963-9627-dbcb08d37d7b</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Wenn bei der Entwicklung mit Microsoft Dynamics AX 4.0 die Quellcodeverwaltung mittels
Visual SourceSafe 2005 eingeschaltet wurde, besteht die Möglichkeit einzelne Versionen
eines Objekts miteinander zu vergleichen.
</p>
        <p>
Hierbei kann es aber bei einer "ungünstigen" Konfiguration des lokal Repository-Verzeichnisses
sein, dass bei einem Vergleich von zwei Objektversionen die Fehlermeldung "<font color="#ff0000">Fehler:
Fortsetzen nicht möglich</font>" ausgegeben wird.
</p>
        <p>
Diese Fehlermeldung wird immer erzeugt, wenn sich das lokale Repository-Verzeichnis
und das Verzeichnis, in dem die temporären Internetdateien (Temporary Internet Files)
gespeichert werden, nicht auf der gleichen Partition (Datenträger) befinden.
</p>
        <p>
Beispiel:
</p>
        <p>
Ordner der Temporary Internet Files = C:\Dokumente und Einstellungen\UserXY\Lokale
Einstellungen\Temporary Internet Files<br />
Ordner des lokalen Repositories = D:\VSSRepository\Test
</p>
        <p>
-&gt; Die Fehlermeldung wird ausgegeben.
</p>
        <p>
Ordner der Temporary Internet Files = C:\Dokumente und Einstellungen\UserXY\Lokale
Einstellungen\Temporary Internet Files<br />
Ordner des lokalen Repositories = C:\VSSRepository\Test
</p>
        <p>
-&gt; Die Fehlermeldung wird nicht ausgegeben und der Versionvergleich funktioniert
problemlos.
</p>
        <p>
Dieses Problem wird durch ein <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8a1a68d8-db11-417c-91ad-02aab484776b&amp;displaylang=en">Update
für Visual SourceSafe 2005</a> behoben. Es empfiehlt sich, bei Verwendung der Quellcodeverwaltung
mit Visual SourceSafe 2005 als VC-System, dieses Update einzuspielen.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=40c372cb-a0e8-4963-9627-dbcb08d37d7b" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Versionsverwaltung mit Visual SourceSafe - Vergleichen von Objektversionen</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,40c372cb-a0e8-4963-9627-dbcb08d37d7b.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/-1zlUJEvInw/PermaLink,guid,40c372cb-a0e8-4963-9627-dbcb08d37d7b.aspx</link>
      <pubDate>Thu, 12 Jun 2008 09:57:09 GMT</pubDate>
      <description>&lt;p&gt;
Wenn bei der Entwicklung mit Microsoft Dynamics AX 4.0 die Quellcodeverwaltung mittels
Visual SourceSafe 2005 eingeschaltet wurde, besteht die Möglichkeit einzelne Versionen
eines Objekts miteinander zu vergleichen.
&lt;/p&gt;
&lt;p&gt;
Hierbei kann es aber bei einer "ungünstigen" Konfiguration des lokal Repository-Verzeichnisses
sein, dass bei einem Vergleich von zwei Objektversionen die Fehlermeldung "&lt;font color=#ff0000&gt;Fehler:
Fortsetzen nicht möglich&lt;/font&gt;" ausgegeben wird.
&lt;/p&gt;
&lt;p&gt;
Diese Fehlermeldung wird immer erzeugt, wenn sich das lokale Repository-Verzeichnis
und das Verzeichnis, in dem die temporären Internetdateien (Temporary Internet Files)
gespeichert werden,&amp;nbsp;nicht auf der gleichen Partition (Datenträger) befinden.
&lt;/p&gt;
&lt;p&gt;
Beispiel:
&lt;/p&gt;
&lt;p&gt;
Ordner&amp;nbsp;der Temporary Internet Files =&amp;nbsp;C:\Dokumente und Einstellungen\UserXY\Lokale
Einstellungen\Temporary Internet Files&lt;br&gt;
Ordner des lokalen Repositories = D:\VSSRepository\Test
&lt;/p&gt;
&lt;p&gt;
-&amp;gt; Die Fehlermeldung wird ausgegeben.
&lt;/p&gt;
&lt;p&gt;
Ordner&amp;nbsp;der Temporary Internet Files =&amp;nbsp;C:\Dokumente und Einstellungen\UserXY\Lokale
Einstellungen\Temporary Internet Files&lt;br&gt;
Ordner des lokalen Repositories = C:\VSSRepository\Test
&lt;/p&gt;
&lt;p&gt;
-&amp;gt; Die Fehlermeldung wird nicht ausgegeben und der Versionvergleich funktioniert
problemlos.
&lt;/p&gt;
&lt;p&gt;
Dieses Problem wird durch ein &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=8a1a68d8-db11-417c-91ad-02aab484776b&amp;amp;displaylang=en"&gt;Update
für Visual SourceSafe 2005&lt;/a&gt; behoben. Es empfiehlt sich, bei Verwendung der Quellcodeverwaltung
mit Visual SourceSafe 2005 als VC-System, dieses Update einzuspielen.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=40c372cb-a0e8-4963-9627-dbcb08d37d7b" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,40c372cb-a0e8-4963-9627-dbcb08d37d7b.aspx</comments>
      <category>Allgemein;Dynamics Ax/Administration;Dynamics Ax/Programmierung;Dynamics Ax/Programmierung, Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,40c372cb-a0e8-4963-9627-dbcb08d37d7b.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=d72bc5b6-75d0-49ef-85ed-0c650b258b47</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,d72bc5b6-75d0-49ef-85ed-0c650b258b47.aspx</pingback:target>
      <dc:creator>Mathias Füßler</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,d72bc5b6-75d0-49ef-85ed-0c650b258b47.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=d72bc5b6-75d0-49ef-85ed-0c650b258b47</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">Die Eigenschaften von FormControls, wie
heightMode und widthMode werden im Form Designer über Enums gesetzt. Leider hat man
hier mittels X++ Probleme, denn es wird bei der Verwendung dieser Methoden nicht angegeben
um welchem Enum es sich handelt. Das hat zufolge, dass man immer wieder probieren
muss, um die gewünschte Eigenschaft richtig zu setzten. Desweiteren ist so auch der
Quellcode schlechter lesbar.<br /><br />
Der Aufruf sieht normal so aus:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.heightMode(1);<br /></span></p>
Besser ist es, wenn man sprechende Parameter mit dem richtigen Enum verwendet<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.heightMode(FormHeight::ColumnHeight);</span></p>
Mögliche Optionen:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormHeight::Auto<br />
FormHeight::ColumnHeight</span></p><br />
Ähnlich sieht der Parameter bei widthMode aus, nur wird hier der Enum FormWidth genutzt.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.witdthMode(FormWidth::ColumnHeight);</span></p>
Mögliche Optionen:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormWidth::Auto<br />
FormWidth::ColumnHeight</span></p><br />
Wie schon bei den letzten beiden Eigenschaft kann man bei TopMode auch nur raten,
was mittels X++ übergeben werden muss.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.TopMode(0);</span></p>
Besser ist, wenn auch hier ein sprechender Parameter mit dem richtigen Enum verwendet
wird.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.TopMode(FormTop::Auto);</span></p><p>
Mögliche Optionen:<br /></p><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormTop::Auto<br />
FormTop::ButtomEdge<br />
FormTop::Center<br />
FormTop::TopEdge</span></p><p />
Bei FormGroupControls gibt es die Eigenschaft frameOptionButton, auch hier tritt dasselbe
Problem auf.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.frameOptionButton(0);</span></p>
Der Enum lautet hier FormFrameOptionButton und ermöglicht somit die korrekte Zuweisung
oder besser lesbaren Quellcode zu schreiben.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormControl.frameOptionButton(FormFrameOptionButton::None);</span></p>
Mögliche Optionen:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">FormFrameOptionButton::None<br />
FormFrameOptionButton::Hide<br />
FormFrameOptionButton::Check<br />
FormFrameOptionButton::Radio</span></p>
Es kommt nicht nur bei FormControls zu dieser Art von Problemen. Bei QueryRanges gibt
es die Eigenschaft Status, auch hier kann es beim Setzen zu Schwierigkeiten dieser
Eigenschaft mittels X++ kommen.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">QueryBuildRange.Status(0);</span></p>
Besser ist auch hier den sprechenden Parameter mit dem Richtigen Enum zu verwenden.<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">QueryBuildRange.Status(RangeStatus::Hidden);</span></p>
Mögliche Optionen:<br /><p><span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">RangeStatus::Hidden<br />
RangeStatus::Locked<br />
RangeStatus::Open</span></p>
Das waren erstmal die Sachen, die mir noch in Erinnerung sind. Es gibt wahrscheinlich
einige andere Stellen, bei denen es Schwierigkeiten bereitet, den richtigen Parameter
zu wählen. 
<br />
Ich habe mit den genannten Enums bisher positive Erfahrungen sammeln können, ob es
aber wirklich die Richtigen sind, wird man wohl nicht in Erfahrung bringen können.<br /><br /><p /><img width="0" height="0" src="http://starside.eu/cptrk.ashx?id=28c1e506-885e-49c5-af6c-526eed878d8e" /><img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=d72bc5b6-75d0-49ef-85ed-0c650b258b47" /><br /><hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Sprechende Methodenparameter verwenden</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,d72bc5b6-75d0-49ef-85ed-0c650b258b47.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/XZNrTdBCLto/PermaLink,guid,d72bc5b6-75d0-49ef-85ed-0c650b258b47.aspx</link>
      <pubDate>Wed, 11 Jun 2008 18:50:59 GMT</pubDate>
      <description>Die Eigenschaften von FormControls, wie heightMode und widthMode werden im Form Designer über Enums gesetzt. Leider hat man hier mittels X++ Probleme, denn es wird bei der Verwendung dieser Methoden nicht angegeben um welchem Enum es sich handelt. Das hat zufolge, dass man immer wieder probieren muss, um die gewünschte Eigenschaft richtig zu setzten. Desweiteren ist so auch der Quellcode schlechter lesbar.&lt;br&gt;
&lt;br&gt;
Der Aufruf sieht normal so aus:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.heightMode(1);&lt;br&gt;
&lt;/span&gt;
&lt;/p&gt;
Besser ist es, wenn man sprechende Parameter mit dem richtigen Enum verwendet&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.heightMode(FormHeight::ColumnHeight);&lt;/span&gt;
&lt;/p&gt;
Mögliche Optionen:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormHeight::Auto&lt;br&gt;
FormHeight::ColumnHeight&lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
Ähnlich sieht der Parameter bei widthMode aus, nur wird hier der Enum FormWidth genutzt.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.witdthMode(FormWidth::ColumnHeight);&lt;/span&gt;
&lt;/p&gt;
Mögliche Optionen:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormWidth::Auto&lt;br&gt;
FormWidth::ColumnHeight&lt;/span&gt;
&lt;/p&gt;
&lt;br&gt;
Wie schon bei den letzten beiden Eigenschaft kann man bei TopMode auch nur raten,
was mittels X++ übergeben werden muss.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.TopMode(0);&lt;/span&gt;
&lt;/p&gt;
Besser ist, wenn auch hier ein sprechender Parameter mit dem richtigen Enum verwendet
wird.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.TopMode(FormTop::Auto);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Mögliche Optionen:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormTop::Auto&lt;br&gt;
FormTop::ButtomEdge&lt;br&gt;
FormTop::Center&lt;br&gt;
FormTop::TopEdge&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;/p&gt;
Bei FormGroupControls gibt es die Eigenschaft frameOptionButton, auch hier tritt dasselbe
Problem auf.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.frameOptionButton(0);&lt;/span&gt;
&lt;/p&gt;
Der Enum lautet hier FormFrameOptionButton und ermöglicht somit die korrekte Zuweisung
oder besser lesbaren Quellcode zu schreiben.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormControl.frameOptionButton(FormFrameOptionButton::None);&lt;/span&gt;
&lt;/p&gt;
Mögliche Optionen:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;FormFrameOptionButton::None&lt;br&gt;
FormFrameOptionButton::Hide&lt;br&gt;
FormFrameOptionButton::Check&lt;br&gt;
FormFrameOptionButton::Radio&lt;/span&gt;
&lt;/p&gt;
Es kommt nicht nur bei FormControls zu dieser Art von Problemen. Bei QueryRanges gibt
es die Eigenschaft Status, auch hier kann es beim Setzen zu Schwierigkeiten dieser
Eigenschaft mittels X++ kommen.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;QueryBuildRange.Status(0);&lt;/span&gt;
&lt;/p&gt;
Besser ist auch hier den sprechenden Parameter mit dem Richtigen Enum zu verwenden.&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;QueryBuildRange.Status(RangeStatus::Hidden);&lt;/span&gt;
&lt;/p&gt;
Mögliche Optionen:&lt;br&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;RangeStatus::Hidden&lt;br&gt;
RangeStatus::Locked&lt;br&gt;
RangeStatus::Open&lt;/span&gt;
&lt;/p&gt;
Das waren erstmal die Sachen, die mir noch in Erinnerung sind. Es gibt wahrscheinlich
einige andere Stellen, bei denen es Schwierigkeiten bereitet, den richtigen Parameter
zu wählen. 
&lt;br&gt;
Ich habe mit den genannten Enums bisher positive Erfahrungen sammeln können, ob es
aber wirklich die Richtigen sind, wird man wohl nicht in Erfahrung bringen können.&lt;br&gt;
&lt;br&gt;
&lt;p&gt;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://starside.eu/cptrk.ashx?id=28c1e506-885e-49c5-af6c-526eed878d8e"&gt;&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=d72bc5b6-75d0-49ef-85ed-0c650b258b47" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,d72bc5b6-75d0-49ef-85ed-0c650b258b47.aspx</comments>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,d72bc5b6-75d0-49ef-85ed-0c650b258b47.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=38d95169-c598-4123-ae48-77d75e0c9a9e</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,38d95169-c598-4123-ae48-77d75e0c9a9e.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,38d95169-c598-4123-ae48-77d75e0c9a9e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=38d95169-c598-4123-ae48-77d75e0c9a9e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So nach und nach erscheinen immer mehr Informationen über die Version 2009 von
Dynamics AX im Internet.<br />
Hier eine Liste der bereits verfügbaren Quellen:
</p>
        <p>
          <a href="http://www.microsoft.com/dynamics/ax/using/ax_installationinfo.mspx">Install
Microsoft Dynamics AX 2009</a> (Informationen zur Installtion von Dynamics AX
2009)
</p>
        <p>
          <a href="http://www.microsoft.com/dynamics/ax/using/default.mspx">Using Microsoft
Dynamics AX 2009</a> (Allgemeine Informationen zu Dynamics AX 2009)<a /></p>
        <p>
          <a href="http://msdn.microsoft.com/en-us/library/aa496071.aspx">Microsoft Dynamics
AX 2009 SDK</a>
        </p>
        <p>
          <a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7B80DC17-BCF0-4AF5-A4D0-81ABA51F8002&amp;displaylang=en">What's
new for Microsoft Dynamics AX 2009</a> (Änderungen/Neuerungen als download)
</p>
        <p>
          <a href="http://blogs.msdn.com/epblog/">The Microsoft Dynamics AX Enterprise Portal
Blog</a> (Informationen über das EP, direkt vom MS EP Team)
</p>
        <p>
 
</p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=38d95169-c598-4123-ae48-77d75e0c9a9e" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Technische Informationen über Microsoft Dynamics AX 2009 im Internet</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,38d95169-c598-4123-ae48-77d75e0c9a9e.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/uqlw02qti4g/PermaLink,guid,38d95169-c598-4123-ae48-77d75e0c9a9e.aspx</link>
      <pubDate>Fri, 06 Jun 2008 13:30:27 GMT</pubDate>
      <description>&lt;p&gt;
So nach und nach erscheinen immer mehr Informationen über die Version&amp;nbsp;2009 von
Dynamics AX im Internet.&lt;br&gt;
Hier eine Liste der bereits verfügbaren Quellen:
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/dynamics/ax/using/ax_installationinfo.mspx"&gt;Install
Microsoft Dynamics AX 2009&lt;/a&gt;&amp;nbsp;(Informationen zur Installtion von Dynamics AX
2009)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/dynamics/ax/using/default.mspx"&gt;Using Microsoft
Dynamics AX 2009&lt;/a&gt;&amp;nbsp;(Allgemeine Informationen zu Dynamics AX 2009)&lt;a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://msdn.microsoft.com/en-us/library/aa496071.aspx"&gt;Microsoft Dynamics
AX 2009 SDK&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyId=7B80DC17-BCF0-4AF5-A4D0-81ABA51F8002&amp;amp;displaylang=en"&gt;What's
new for Microsoft Dynamics AX 2009&lt;/a&gt; (Änderungen/Neuerungen als download)
&lt;/p&gt;
&lt;p&gt;
&lt;a href="http://blogs.msdn.com/epblog/"&gt;The Microsoft Dynamics AX Enterprise Portal
Blog&lt;/a&gt;&amp;nbsp;(Informationen über das EP, direkt vom MS EP Team)
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&gt;&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=38d95169-c598-4123-ae48-77d75e0c9a9e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,38d95169-c598-4123-ae48-77d75e0c9a9e.aspx</comments>
      <category>Allgemein;Dynamics Ax;Dynamics Ax/Administration;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,38d95169-c598-4123-ae48-77d75e0c9a9e.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=92d3dd05-07a6-446f-b2f4-20e5fd09ff1e</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,92d3dd05-07a6-446f-b2f4-20e5fd09ff1e.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,92d3dd05-07a6-446f-b2f4-20e5fd09ff1e.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=92d3dd05-07a6-446f-b2f4-20e5fd09ff1e</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Für jede Tabelle können Systemfelder wie Erstellt von, Geändert von, Erstellungsdatum,
Erstellungszeit oder Änderungsdatum von Dynamics AX aktiviert werden.<br />
Diese Felder werden durch Dynamics AX automatisch gefüllt. Wird zum Beispiel ein neuer
Datensatz erzeugt, füllt Dynamics AX die Systemfelder mit den entsprechenden
Daten.
</p>
        <p>
Es gibt aber Situationen wo man selber Einfuß auf die Werte dieser Felder nehmen
muss. Ein Beispiel hierfür könnte eine Datenübernahme sein, bei der die Informationen
über den Ersteller oder das Erstellungsdatum des Datensatzes nicht verloren gehen
dürfen.
</p>
        <p>
Wie dies gehen kann zeigt dieses kleine Beispiel:
</p>
        <p>
          <span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">YourTable
table;<br />
;<br />
ttsbegin;<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//can
only be called on server tier. -&gt; method must be executed on server tier.</span><br /><span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">new</span> SkipAOSValidationPermission().assert();<br />
table.skipAosValidation(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>);<br /><br />
table.YourField <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"Value"</span>;<br /><br />
table.overwriteSystemfields(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">true</span>);<br /><br /><span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">//set
your own values for the system fields.</span><br />
table.(fieldnum(Table1, ModifiedDate)) <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> today() <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">-</span> 2;<br />
table.(fieldnum(Table1, CreatedDate)) <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span> today() <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">-</span> 5;<br />
table.(fieldnum(Table1, CreatedBy)) <span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">=</span><span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4">"TEST"</span>;<br /><br />
table.insert();<br />
ttscommit;<br /><br />
table.skipAosValidation(<span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent">false</span>);</span>
        </p>
        <p>
Allerdings können die Systemfelder nur beim Erstellen eines neuen Datensatzes "von
Hand" festgelegt werden.
</p>
        <p>
Wie das Ändern von Werten der Systemfelder bei bereits bestehenden Datensätzen geht
demonstriert die Klasse "BatchRun", Methode "runJob" und "finishJob".<br />
Kurz gesagt wird genau genommen der Datensatz nicht geändert, sondern es werden nur
die Daten des bestehenden Datensatzes in den neuen Datensatz kopiert (mit newBuffer
= oldBuffer.data()) und dann wie bereits beschrieben die Systemfelder mit eigenen
Werten befüllt. Dann wird der bestehnde Datensatz gelöscht und der neue Datensatz
in die Datenbank geschrieben.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=92d3dd05-07a6-446f-b2f4-20e5fd09ff1e" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Werte der Systemfelder eines Datensatzes setzen </title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,92d3dd05-07a6-446f-b2f4-20e5fd09ff1e.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/ayu40qxqbnM/PermaLink,guid,92d3dd05-07a6-446f-b2f4-20e5fd09ff1e.aspx</link>
      <pubDate>Thu, 29 May 2008 19:36:51 GMT</pubDate>
      <description>&lt;p&gt;
Für jede Tabelle können Systemfelder wie Erstellt von, Geändert von, Erstellungsdatum,
Erstellungszeit oder Änderungsdatum&amp;nbsp;von Dynamics AX aktiviert werden.&lt;br&gt;
Diese Felder werden durch Dynamics AX automatisch gefüllt. Wird zum Beispiel ein neuer
Datensatz erzeugt,&amp;nbsp;füllt Dynamics AX die Systemfelder mit&amp;nbsp;den entsprechenden
Daten.
&lt;/p&gt;
&lt;p&gt;
Es gibt aber Situationen wo man selber Einfuß&amp;nbsp;auf die Werte dieser Felder nehmen
muss. Ein Beispiel hierfür könnte eine Datenübernahme sein, bei der die Informationen
über den Ersteller oder das Erstellungsdatum des Datensatzes nicht verloren gehen
dürfen.
&lt;/p&gt;
&lt;p&gt;
Wie dies gehen kann zeigt dieses kleine Beispiel:
&lt;/p&gt;
&lt;p&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: black; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;YourTable
table;&lt;br&gt;
;&lt;br&gt;
ttsbegin;&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//can
only be called on server tier. -&amp;gt; method must be executed on server tier.&lt;/span&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;new&lt;/span&gt; SkipAOSValidationPermission().assert();&lt;br&gt;
table.skipAosValidation(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
table.YourField &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"Value"&lt;/span&gt;;&lt;br&gt;
&lt;br&gt;
table.overwriteSystemfields(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;true&lt;/span&gt;);&lt;br&gt;
&lt;br&gt;
&lt;span style="FONT-SIZE: 11px; COLOR: green; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;//set
your own values for the system fields.&lt;/span&gt;
&lt;br&gt;
table.(fieldnum(Table1, ModifiedDate)) &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; today() &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;-&lt;/span&gt; 2;&lt;br&gt;
table.(fieldnum(Table1, CreatedDate)) &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; today() &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;-&lt;/span&gt; 5;&lt;br&gt;
table.(fieldnum(Table1, CreatedBy)) &lt;span style="FONT-SIZE: 11px; COLOR: red; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;=&lt;/span&gt; &lt;span style="FONT-SIZE: 11px; COLOR: #666666; FONT-FAMILY: Courier New; BACKGROUND-COLOR: #e4e4e4"&gt;"TEST"&lt;/span&gt;;&lt;br&gt;
&lt;br&gt;
table.insert();&lt;br&gt;
ttscommit;&lt;br&gt;
&lt;br&gt;
table.skipAosValidation(&lt;span style="FONT-SIZE: 11px; COLOR: blue; FONT-FAMILY: Courier New; BACKGROUND-COLOR: transparent"&gt;false&lt;/span&gt;);&lt;/span&gt;
&lt;/p&gt;
&lt;p&gt;
Allerdings können die Systemfelder nur beim Erstellen eines neuen Datensatzes "von
Hand" festgelegt werden.
&lt;/p&gt;
&lt;p&gt;
Wie das Ändern von Werten der Systemfelder bei bereits bestehenden Datensätzen geht
demonstriert die Klasse "BatchRun", Methode "runJob" und "finishJob".&lt;br&gt;
Kurz gesagt wird genau genommen der Datensatz nicht geändert, sondern es werden nur
die Daten des bestehenden Datensatzes in den neuen Datensatz kopiert (mit&amp;nbsp;newBuffer
= oldBuffer.data()) und dann wie bereits beschrieben die Systemfelder mit eigenen
Werten befüllt. Dann wird der bestehnde Datensatz gelöscht und der neue Datensatz
in die Datenbank geschrieben.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=92d3dd05-07a6-446f-b2f4-20e5fd09ff1e" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,92d3dd05-07a6-446f-b2f4-20e5fd09ff1e.aspx</comments>
      <category>Dynamics Ax;Dynamics Ax/HowTo;Dynamics Ax/Programmierung</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,92d3dd05-07a6-446f-b2f4-20e5fd09ff1e.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=1f632e0d-a23a-4af5-a132-b22349291676</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,1f632e0d-a23a-4af5-a132-b22349291676.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,1f632e0d-a23a-4af5-a132-b22349291676.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=1f632e0d-a23a-4af5-a132-b22349291676</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
So nach und nach sind immer mehr Informationen über die nächste Version von Microsoft
Dynamics AX im Internet erhältlich, die einen ersten Einblick in das verschaffen,
was alles an Neuerungen mit Dynamics AX 2009 kommt.
</p>
        <p>
          <a href="https://mvp.support.microsoft.com/profile/Arijit.Basu">Arijit Basu</a> hat
in seinem <a href="http://daxguy.blogspot.com/2008/05/ax-2009-quick-overview.html">Blog</a> einen
Artikel über einige der Änderungen gepostet.<br />
Der Artikel beschreibt unter Anderem die Änderungen am Benutzerinterface, das
neue Role Center, die neuen Workflow-Features sowie die Erweiterungen
am Enterprise Portal.
</p>
        <p>
Weiterhin ist auf <a href="http://channel9.msdn.com/Showpost.aspx?postid=405045">Channel9</a> ist
ein <a href="http://channel9.msdn.com/Showpost.aspx?postid=405045">Video</a> zu
finden, welches das Enterprise Portal von Dynamics AX 2009 und dessen System-Architektur erläutert.<br />
Es wird gezeigt, wie eigene Controls (mit ASP.NET) für das Enterprise Portal erstellt
werden können und wie diese in das Enterprise Portal sowie das Role-Center eingebunden
werden können.<br /></p>
        <p>
 
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=1f632e0d-a23a-4af5-a132-b22349291676" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Weitere Informationen über Dynamics AX 2009</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,1f632e0d-a23a-4af5-a132-b22349291676.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/IA9GMUsZsss/PermaLink,guid,1f632e0d-a23a-4af5-a132-b22349291676.aspx</link>
      <pubDate>Mon, 19 May 2008 18:41:46 GMT</pubDate>
      <description>&lt;p&gt;
So nach und nach sind immer mehr Informationen über die nächste Version von Microsoft
Dynamics AX im Internet erhältlich, die einen ersten Einblick in das verschaffen,
was alles an Neuerungen mit Dynamics AX 2009 kommt.
&lt;/p&gt;
&lt;p&gt;
&lt;a href="https://mvp.support.microsoft.com/profile/Arijit.Basu"&gt;Arijit Basu&lt;/a&gt; hat
in seinem &lt;a href="http://daxguy.blogspot.com/2008/05/ax-2009-quick-overview.html"&gt;Blog&lt;/a&gt; einen
Artikel über einige der Änderungen gepostet.&lt;br&gt;
Der Artikel beschreibt unter Anderem&amp;nbsp;die Änderungen am Benutzerinterface, das
neue&amp;nbsp;Role Center, die neuen&amp;nbsp;Workflow-Features&amp;nbsp;sowie die Erweiterungen
am Enterprise Portal.
&lt;/p&gt;
&lt;p&gt;
Weiterhin ist auf &lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=405045"&gt;Channel9&lt;/a&gt; ist
ein&amp;nbsp;&lt;a href="http://channel9.msdn.com/Showpost.aspx?postid=405045"&gt;Video&lt;/a&gt; zu
finden, welches&amp;nbsp;das Enterprise Portal von Dynamics AX 2009 und dessen System-Architektur&amp;nbsp;erläutert.&lt;br&gt;
Es wird gezeigt, wie eigene Controls (mit ASP.NET) für das Enterprise Portal erstellt
werden können und wie diese in das Enterprise Portal sowie das Role-Center eingebunden
werden können.&lt;br&gt;
&lt;/p&gt;
&lt;p&gt;
&amp;nbsp;
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=1f632e0d-a23a-4af5-a132-b22349291676" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,1f632e0d-a23a-4af5-a132-b22349291676.aspx</comments>
      <category>Allgemein;Dynamics Ax</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,1f632e0d-a23a-4af5-a132-b22349291676.aspx</feedburner:origLink></item>
    <item>
      <trackback:ping>http://blog.ak-home.net/Trackback.aspx?guid=f4d824f5-434d-4b51-8bdb-671182f66cd5</trackback:ping>
      <pingback:server>http://blog.ak-home.net/pingback.aspx</pingback:server>
      <pingback:target>http://blog.ak-home.net/PermaLink,guid,f4d824f5-434d-4b51-8bdb-671182f66cd5.aspx</pingback:target>
      <dc:creator>Axel Kühn</dc:creator>
      <wfw:comment>http://blog.ak-home.net/CommentView,guid,f4d824f5-434d-4b51-8bdb-671182f66cd5.aspx</wfw:comment>
      <wfw:commentRss>http://blog.ak-home.net/SyndicationService.asmx/GetEntryCommentsRss?guid=f4d824f5-434d-4b51-8bdb-671182f66cd5</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
Häufig werden Optionen (Ja/Nein-Fragen) in Microsoft Dynamics AX durch ein CheckBox
Control und einem entsprechendem Feld einer Tabelle abgebildet. 
</p>
        <p>
Ein gutes Beispiel hierfür ist die Maske „Lagerparameter“, Reiter „Lagerungsdimensionen“.
Hier kann eingestellt werden, welche Lagerungsdimension wo im System angezeigt werden
soll. Zur Speicherung der gewählten Einstellungen wird die Tabelle „InventDimSetupGrid“
verwendet. Diese Tabelle enthält für jede Option jeweils ein Feld (abgeleitet vom
Enum „NoYes“).<br />
Diese Art der Speicherung von Optionswerten ist sicherlich sehr leicht zu verstehen
und auch sehr einfach zu erstellen. Da aber für jede Option ein Feld in der Tabelle
angelegt werden muss, kann dies relativ zeitaufwendig sein.
</p>
        <p>
Es besteht aber die Möglichkeit, Optionswerte in nur einem Feld zu speichern. Diese
Art der Speicherung kann unter Umständen sogar als die elegantere angesehen werden,
da z.B. für einen Datensatz weniger Speicher in der Datenbank benötigt wird.
</p>
        <p>
Um dies zu realisieren, wird als erstes ein Feld vom Typ „int“ in der Tabelle benötigt.
Dieses Feld dient als Datenspeicher für alle benötigten Optionswerte (Ja oder Nein).
Jedes Bit dieses „int“ Feldes stellt genau einen Optionswert und somit eine Option
dar. Um nun die gewählten Werte der Optionen speichern zu können, müssen diese mit
Bit-Operationen (right / left shift, binary and, etc.) in das „int“ Feld geschrieben
werden.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/TableBrowser.jpg" border="0" />
          <br />
Das Feld "bitMask" wird in dieser Darstellung als Datenspeicher der Optionswerte verwendet.
</p>
        <p>
          <img src="http://blog.ak-home.net/content/binary/Maske.jpg" border="0" />
          <br />
Auf einer Maske werden alle Optionen als einzelne CheckBoxen bereit gestellt.
</p>
        <p>
Da diese Art der Speicherung in Dynamics AX nicht besonders oft verwendet wird und
Quellcode oft mehr sagt als (nur) ein langer Artikel, habe ich ein kleines „Tutorial“
erstellt, um die benötigten Schritte zu beschreiben.
</p>
        <a href="http://blog.ak-home.net/content/binary/SharedProject_AKU_EnumControl_Frm.rar">SharedProject_AKU_EnumControl_Frm.rar
(2,03 KB)</a>
        <p>
Eine Erklärung aller Bit-Operatoren ist im <a href="http://msdn2.microsoft.com/en-us/library/aa870833.aspx">Microsoft
Dynamics AX Developer Center</a> zu finden.
</p>
        <img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=f4d824f5-434d-4b51-8bdb-671182f66cd5" />
        <br />
        <hr />
Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben
gegeben. Die Verwendung erfolgt auf eigene Gefahr. Copyright © Axel Kühn (Aku's AX
Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</body>
      <title>Speichern von Optionswerten</title>
      <guid isPermaLink="false">http://blog.ak-home.net/PermaLink,guid,f4d824f5-434d-4b51-8bdb-671182f66cd5.aspx</guid>
      <link>http://feedproxy.google.com/~r/AkusAxBlog/~3/u2YjxI8w1zA/PermaLink,guid,f4d824f5-434d-4b51-8bdb-671182f66cd5.aspx</link>
      <pubDate>Mon, 05 May 2008 19:53:48 GMT</pubDate>
      <description>&lt;p&gt;
Häufig werden Optionen (Ja/Nein-Fragen) in Microsoft Dynamics AX durch ein CheckBox
Control und einem entsprechendem Feld einer Tabelle abgebildet. 
&lt;/p&gt;
&lt;p&gt;
Ein gutes Beispiel hierfür ist die Maske „Lagerparameter“, Reiter „Lagerungsdimensionen“.
Hier kann eingestellt werden, welche Lagerungsdimension wo im System angezeigt werden
soll. Zur Speicherung der gewählten Einstellungen wird die Tabelle „InventDimSetupGrid“
verwendet. Diese Tabelle enthält für jede Option jeweils ein Feld (abgeleitet vom
Enum „NoYes“).&lt;br&gt;
Diese Art der Speicherung von Optionswerten ist sicherlich sehr leicht zu verstehen
und auch sehr einfach zu erstellen. Da aber für jede Option ein Feld in der Tabelle
angelegt werden muss, kann dies relativ zeitaufwendig sein.
&lt;/p&gt;
&lt;p&gt;
Es besteht aber die Möglichkeit, Optionswerte in nur einem Feld zu speichern. Diese
Art der Speicherung kann unter Umständen sogar als die elegantere angesehen werden,
da z.B. für einen Datensatz weniger Speicher in der Datenbank benötigt wird.
&lt;/p&gt;
&lt;p&gt;
Um dies zu realisieren, wird als erstes ein Feld vom Typ „int“ in der Tabelle benötigt.
Dieses Feld dient als Datenspeicher für alle benötigten Optionswerte (Ja oder Nein).
Jedes Bit dieses „int“ Feldes stellt genau einen Optionswert und somit eine Option
dar. Um nun die gewählten Werte der Optionen speichern zu können, müssen diese mit
Bit-Operationen (right / left shift, binary and, etc.) in das „int“ Feld geschrieben
werden.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/TableBrowser.jpg" border=0&gt;
&lt;br&gt;
Das Feld "bitMask" wird in dieser Darstellung als Datenspeicher der Optionswerte verwendet.
&lt;/p&gt;
&lt;p&gt;
&lt;img src="http://blog.ak-home.net/content/binary/Maske.jpg" border=0&gt;
&lt;br&gt;
Auf einer Maske werden alle Optionen als einzelne CheckBoxen bereit gestellt.
&lt;/p&gt;
&lt;p&gt;
Da diese Art der Speicherung in Dynamics AX nicht besonders oft verwendet wird und
Quellcode oft mehr sagt als (nur) ein langer Artikel, habe ich ein kleines „Tutorial“
erstellt, um die benötigten Schritte zu beschreiben.
&lt;/p&gt;
&lt;a href="http://blog.ak-home.net/content/binary/SharedProject_AKU_EnumControl_Frm.rar"&gt;SharedProject_AKU_EnumControl_Frm.rar
(2,03 KB)&lt;/a&gt; 
&lt;p&gt;
Eine Erklärung aller Bit-Operatoren ist im &lt;a href="http://msdn2.microsoft.com/en-us/library/aa870833.aspx"&gt;Microsoft
Dynamics AX Developer Center&lt;/a&gt; zu finden.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.ak-home.net/aggbug.ashx?id=f4d824f5-434d-4b51-8bdb-671182f66cd5" /&gt;
&lt;br /&gt;
&lt;hr /&gt;Es wird keine Haftung oder Gewährleistung auf die Richtigkeit der gemachten Angaben gegeben. Die Verwendung erfolgt auf eigene Gefahr.

Copyright © Axel Kühn (Aku's AX Blog, http://blog.ak-home.net) and Mathias Füßler (jinx's AX Blog, http://starside.eu)</description>
      <comments>http://blog.ak-home.net/CommentView,guid,f4d824f5-434d-4b51-8bdb-671182f66cd5.aspx</comments>
      <category>Dynamics Ax/HowTo;Dynamics Ax/Programmierung;Dynamics Ax/Programmierung, Dynamics Ax/HowTo</category>
    <feedburner:origLink>http://blog.ak-home.net/PermaLink,guid,f4d824f5-434d-4b51-8bdb-671182f66cd5.aspx</feedburner:origLink></item>
  </channel>
</rss>
