<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Dynamics AX Czech Support Team</title><link>http://blogs.msdn.com/czdaxsup/default.aspx</link><description /><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Database log error on AX 2009 with SQL Server 2008</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/11/25/database-log-error-on-ax-2009-with-sql-server-2008.aspx</link><pubDate>Wed, 25 Nov 2009 12:39:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9928516</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9928516.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9928516</wfw:commentRss><description>&lt;p&gt;On a database that is upgraded from AX 4.0 to AX 2009 running on SQL 2008 you may get following error while using database log:&lt;/p&gt;  &lt;p&gt;The target table 'SYSDATABASELOG' of the DML statement cannot have any enabled triggers if the statement contains an OUTPUT clause without INTO clause.. The SQL statement was: &lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;INSERT INTO SYSDATABASELOG (DATA,USERNAME,DESCRIPTION,LOGTYPE,TABLE_,LOGRECID,CREATEDBY,CREATEDTRANSACTIONID, DATAAREAID,RECVERSION,RECID) OUTPUT INSERTED.CREATEDDATETIME VALUES (?,?,?,?,?,?,?,?,?,?,?)&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To solve this issue you need to drop the &lt;strong&gt;&lt;em&gt;onSYSDATABASELOGinsert&lt;/em&gt;&lt;/strong&gt; trigger by executing this statement in SQL Server Management Studio:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;&lt;span style="font: 10pt courier new"&gt;&lt;span class="sql1-reservedword"&gt;USE&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-symbol"&gt;&amp;lt;ax_database_name&amp;gt;;
GO

&lt;/span&gt;&lt;span class="sql1-reservedword"&gt;DROP&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;TRIGGER&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-delimitedidentifier"&gt;[onSYSDATABASELOGinsert];
GO&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;You may also need to modify the default constraint for CreatedDateTime field to replace the default value ‘1900-01-01 00:00:00.000’ coming from AX 4.0 with ‘dateadd(millisecond, -datepart(millisecond,getutcdate()),getutcdate())’. To do this you can execute following code:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&lt;span style="font: 10pt courier new"&gt;&lt;span class="sql1-reservedword"&gt;ALTER&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;TABLE&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-identifier"&gt;dbo.SYSDATABASELOG
&lt;/span&gt;&lt;span class="sql1-space"&gt;	&lt;/span&gt;&lt;span class="sql1-reservedword"&gt;DROP&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;CONSTRAINT&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-symbol"&gt;&amp;lt;constraint_name&amp;gt;
GO
&lt;/span&gt;&lt;span class="sql1-reservedword"&gt;ALTER&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;TABLE&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-identifier"&gt;dbo.SYSDATABASELOG&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;ADD&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;CONSTRAINT
&lt;/span&gt;&lt;span class="sql1-space"&gt;	&lt;/span&gt;&lt;span class="sql1-symbol"&gt;&amp;lt;constraint_name&amp;gt;&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;DEFAULT&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-function"&gt;dateadd&lt;/span&gt;&lt;span class="sql1-symbol"&gt;(millisecond,&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-symbol"&gt;-&lt;/span&gt;&lt;span class="sql1-function"&gt;datepart&lt;/span&gt;&lt;span class="sql1-symbol"&gt;(millisecond,getutcdate()),getutcdate())&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-reservedword"&gt;FOR&lt;/span&gt;&lt;span class="sql1-space"&gt; &lt;/span&gt;&lt;span class="sql1-identifier"&gt;CREATEDDATETIME
GO&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;&lt;font face="Verdana"&gt;Martin F&lt;/font&gt;&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9928516" width="1" height="1"&gt;</description></item><item><title>How to move Demand Planner database to another server</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/10/15/how-to-move-demand-planner-database-to-another-server.aspx</link><pubDate>Thu, 15 Oct 2009 11:36:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907617</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9907617.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9907617</wfw:commentRss><description>&lt;p&gt;Sometimes you need to move your existing Demand Planner database to another server. If you do this just using backup/restore, you will run into the issue while synchronizing the Demand Planner. The error you get is:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Could not find ‘server name’ in sys.sysservers&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This is because Demand Planner uses fully qualified object names in some stored procedures and functions, what results in original server name to be used. &lt;/p&gt;  &lt;p&gt;Follow these steps to change the server name in existing functions and stored procedures:&lt;/p&gt;  &lt;p&gt;1. Open SQL Server Management Studio and expand Databases&lt;/p&gt;  &lt;p align="left"&gt;2. Right-click the Demand Planner database and select Tasks –&amp;gt; Generate Scripts    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_2.png" target="_blank"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_thumb.png" width="244" height="203" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;3. Click &lt;strong&gt;Next &lt;/strong&gt;on the welcome screen&lt;/p&gt;  &lt;p&gt;4. Select the Demand Planner database on Select Database screen and click &lt;strong&gt;Next&lt;/strong&gt;.     &lt;br /&gt;&lt;strong&gt;&lt;font color="#ff0000"&gt;Do not check the “Script all objects in the selected database” check box!&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;5. On the Choose Screen Options screen change value for &lt;strong&gt;Script Drop&lt;/strong&gt; to &lt;strong&gt;True&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_6.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_thumb_2.png" width="196" height="244" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;6. On the Select Object Types screen select &lt;strong&gt;Stored procedures&lt;/strong&gt;, &lt;strong&gt;Functions&lt;/strong&gt; and &lt;strong&gt;Views&lt;/strong&gt; and click &lt;strong&gt;Next&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;7. On the Choose Stored Procedures screen click &lt;strong&gt;Select All&lt;/strong&gt; and then &lt;strong&gt;Next&lt;/strong&gt;. Repeat this also to select all functions and views&lt;/p&gt;  &lt;p&gt;8. On the Output Option screen keep the default selection and click &lt;strong&gt;Finish      &lt;br /&gt;      &lt;br /&gt;&lt;a href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_10.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_thumb_4.png" width="196" height="244" /&gt;&lt;/a&gt; &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;9. On the summary page click &lt;strong&gt;Finish&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;10. In the query window press &lt;strong&gt;CTRL+H&lt;/strong&gt; to open Find and replace window and type name of the original server into &lt;strong&gt;Find what&lt;/strong&gt; field and name of the new server into &lt;strong&gt;Replace with&lt;/strong&gt; field and click &lt;strong&gt;Replace All&lt;/strong&gt;.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_14.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HowtomoveDemandPlannerdatabasetoanothers_BF4A/image_thumb_6.png" width="244" height="190" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;11. Press &lt;strong&gt;F5&lt;/strong&gt; to execute the script when all occurrences are replaced.&lt;/p&gt;  &lt;p&gt;Now you should be able to synchronize Demand Planner.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907617" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/SQL/default.aspx">SQL</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/Demand+Planner/default.aspx">Demand Planner</category></item><item><title>Conflict error when list of fields is used in select during update transaction</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/10/14/conflict-error-when-list-of-fields-is-used-in-select-during-update-transaction.aspx</link><pubDate>Wed, 14 Oct 2009 08:32:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907045</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9907045.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9907045</wfw:commentRss><description>&lt;p&gt;If you use this code, you will get an error on the line 29. The error message is following:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Cannot edit a record in Table1 (Table1).      &lt;br /&gt;An update conflict occurred due to another user process deleting the record or changing one or more fields in the record.&lt;/font&gt;&lt;/p&gt;  &lt;pre&gt;&lt;code&gt; 1: static void updateTable1(Args _args)
 2: {
 3:    Table1 tbl;
 4:    ;
 5:
 6:    ttsbegin;
 7:    select firstonly forupdate tbl;
 8:
 9:    if (tbl.RecId)
10:    {
11:        tbl.InfoText = &amp;quot;Reset&amp;quot;;
12:        tbl.update();
13:    }
14:    else
15:    {
16:        tbl.InfoText = &amp;quot;Reset&amp;quot;;
17:        tbl.IntField = 1;
18:        tbl.insert();
19:    }
20:    ttscommit;
21:
22:    tbl.clear();
23:
24:    select firstonly RecId, InfoText from tbl;
25:
26:    ttsbegin;
27:    tbl.selectForUpdate(true);
28:    tbl.InfoText = &amp;quot;Table1 - field select&amp;quot;;
29:    tbl.update();
30:    ttscommit;
31: }&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;The reason for this is that each time the table is updated the field RecVersion is updated with a random number that is saved by kernel. That why when you try to update the record, kernel cannot update record partly, what results in update conflict. &lt;/p&gt;

&lt;p&gt;There are two ways to avoid this issue:&lt;/p&gt;

&lt;p&gt;1. Add RecVersion field into the selection &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;24:    select firstonly RecId, InfoText, RecVersion from tbl;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;2. Use &lt;strong&gt;selectforupdate&lt;/strong&gt; keyword &lt;/p&gt;

&lt;pre&gt;&lt;code&gt;24:    select firstonly forupdate RecId, InfoText from tbl;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9907045" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category></item><item><title>Error while calling Win API function on x64</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/10/13/error-while-calling-win-api-function-on-x64.aspx</link><pubDate>Tue, 13 Oct 2009 06:47:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9906478</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9906478.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9906478</wfw:commentRss><description>&lt;p&gt;When you are calling Win API function (or function from a native DLL) on x64 you get this error:&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;An exception occurred when calling &lt;em&gt;Function&lt;/em&gt; in &lt;em&gt;Library name&lt;/em&gt; DLL library&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;This happens only if the code calling the DLL function is running on server. The reason for this is that the DLLFunction class &lt;strong&gt;is not supported&lt;/strong&gt; on x64.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9906478" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/AX2009/default.aspx">AX2009</category></item><item><title>Rename object in TFS</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/09/10/rename-object-in-tfs.aspx</link><pubDate>Thu, 10 Sep 2009 16:23:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9893636</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9893636.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9893636</wfw:commentRss><description>&lt;p&gt;You can get this error message while renaming object that is checked out from TFS.&lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;Unable to import     &lt;br /&gt;Trying to import Table MFATable_test1 with ID 50003      &lt;br /&gt;ID already held by Table MFATable1      &lt;br /&gt;&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To rename the object you need to follow these steps:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Right click the object in AOT and select &lt;em&gt;Rename&lt;/em&gt; (without checking out the object)&lt;/li&gt;    &lt;li&gt;Type a new name of the object. New object with the new name will be created&lt;/li&gt;    &lt;li&gt;Select Tools –&amp;gt; Development tools –&amp;gt; Version control in AX menu and click Pending objects&lt;/li&gt;    &lt;li&gt;Check in both objects&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;To update all objects that reference the renamed object, you need to check out all objects that refer to the object you want to rename. When you rename an object, two copies of the object are created: one with the old name and one with the new name. When you check in these objects (for delete and add, respectively), the system integrates both objects to maintain the history.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893636" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/AX2009/default.aspx">AX2009</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/Team+Foundation+Server/default.aspx">Team Foundation Server</category></item><item><title>AX 2009 .NET Business Connector fails while creating instance of XmlDocument</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/09/09/ax-2009-net-business-connector-fails-while-creating-instance-of-xmldocument.aspx</link><pubDate>Wed, 09 Sep 2009 14:33:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9893037</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9893037.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9893037</wfw:commentRss><description>&lt;p&gt;RTM version (5.0.593.0) of .NET Business Connect fails with following exception while creating instance of XmlDocument class in X++ code. &lt;/p&gt;  &lt;p&gt;&lt;font color="#ff0000"&gt;System.Runtime.InteropServices.SEHException: External component has thrown an exception.     &lt;br /&gt;at AxCore_CallStatic(Char* , Char* , tagVARIANT* , Int32 , tagVARIANT* )      &lt;br /&gt;at Microsoft.Dynamics.BusinessConnectorNet.Axapta.CallStaticClassMethod(String className, String methodName, Object[] paramList)      &lt;br /&gt;at Microsoft.Dynamics.BusinessConnectorNet.Axapta.CallStaticClassMethod(String className, String methodName)      &lt;br /&gt;at BusinessLogic.DocumentationManager.GetXml() in D:\Development\AX\BC.NET Sample Test\BusinessLogic\DocumentationManager.cs:line 13      &lt;br /&gt;at ConsoleTest.Program.Main() in D:\Development\AX\BC.NET Sample Test\Console Test\Program.cs:line 15&lt;/font&gt;&lt;/p&gt;  &lt;p&gt;To avoid this issue you need to install &lt;a href="https://mbs.microsoft.com/partnersource/support/selfsupport/servicepacks/dynamicsax2009sp1.htm?printpage=false" target="_blank"&gt;SP1 for AX 2009&lt;/a&gt; (you need to have access to &lt;a href="https://mbs.microsoft.com/partnersource" target="_blank"&gt;Partnersource&lt;/a&gt;).&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9893037" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/AX2009/default.aspx">AX2009</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/Business+Connector/default.aspx">Business Connector</category></item><item><title>HOWTO: Print Word document from X++</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/09/08/howto-print-word-document-from-x.aspx</link><pubDate>Tue, 08 Sep 2009 11:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892462</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9892462.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9892462</wfw:commentRss><description>&lt;P&gt;You might need to print Word document directly from X++. Here’s a short sample how to do this:&lt;/P&gt;&lt;PRE&gt;&lt;CODE&gt;{
    str     document = "C:\\test.doc";
    COM     wordApplication;
    COM     wordDocuments;
    COM     wordDoc;
    ;

    // Create instance of Word application
    wordApplication = new COM("Word.Application");

    // Get documents property
    wordDocuments = wordApplication.Documents();

    // Open document
    wordDoc = wordDocuments.Open(document);

    // Activate the document - this is necessary to print it
    wordDoc.Activate();

    // Print the document
    wordDoc.PrintOut();

    // Close document
    wordDoc.Close();

    // Close Word application
    wordApplication.Quit();
}&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;EM&gt;Martin F&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892462" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/How+To/default.aspx">How To</category></item><item><title>Error ‘Invalid object name #ax_tmp_’</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/09/07/error-invalid-object-name-ax-tmp.aspx</link><pubDate>Mon, 07 Sep 2009 17:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9892246</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9892246.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9892246</wfw:commentRss><description>&lt;P&gt;You may see similar error while posting ledger journal:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#ff0000&gt;Posting - Journal &lt;BR&gt;Journal: 000004_061 &lt;BR&gt;Voucher: 8004_062 &lt;BR&gt;Cannot select a record in (). &lt;BR&gt;The SQL database has issued an error. &lt;BR&gt;The journal is not posted and the update is canceled. &lt;BR&gt;SQL error description: [Microsoft][SQL Native Client][SQL Server]Invalid object name '#ax_tmp_dmo3_52_0'.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;This error is caused by collecting Query plans while doing SQL tracing. To avoid this error you need to disable Query plan collection in Tools | Options on SQL tab.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/ErrorInvalidobjectnameax_tmp__EB3A/image_2.png" target=_blank mce_href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/ErrorInvalidobjectnameax_tmp__EB3A/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/ErrorInvalidobjectnameax_tmp__EB3A/image_thumb.png" width=244 height=130 mce_src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/ErrorInvalidobjectnameax_tmp__EB3A/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;EM&gt;Martin F&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9892246" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/SQL/default.aspx">SQL</category></item><item><title>Importing addresses with RecID compression enabled</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/09/04/importing-addresses-with-recid-compression-enabled.aspx</link><pubDate>Fri, 04 Sep 2009 16:24:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9891379</guid><dc:creator>czdaxsup</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9891379.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9891379</wfw:commentRss><description>&lt;P&gt;Sometimes you need to import addresses into AX 2009 and enable RecID compression. This import might result in an error:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;FONT color=#ff0000&gt;Update of RecID-key xxxxxxxx failed for the register DirPartyAddressRelationshipMapping&lt;/FONT&gt;.&lt;/P&gt;
&lt;P&gt;To solve this you need to follow these steps:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Restore the database&lt;/LI&gt;
&lt;LI&gt;Disable RecID unique index on the table affected by this issue&lt;/LI&gt;
&lt;LI&gt;Synchronize&lt;/LI&gt;
&lt;LI&gt;Import data&lt;/LI&gt;
&lt;LI&gt;Enable RecID unique index&lt;/LI&gt;
&lt;LI&gt;Synchronize&lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;&lt;EM&gt;Martin F&lt;/EM&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9891379" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/AX2009/default.aspx">AX2009</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/Data+Import/default.aspx">Data Import</category></item><item><title>HOWTO: Dynamicaly load picture from base64 string into image on form in X++</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/05/28/howto-dynamicaly-load-picture-from-base64-string-into-image-on-form-in-x.aspx</link><pubDate>Thu, 28 May 2009 10:49:16 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9646397</guid><dc:creator>czdaxsup</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9646397.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9646397</wfw:commentRss><description>&lt;p&gt;You may want to load an image from base64 coded string. Then there is a code sample how to achieve it. First is needed to put an "Window" controll on the form with name ex. "imageWindow" and then modify "run()" method of Form. String then could be loaded from database, generated by .NET (for example dynamicaly generate picture) etc.&lt;/p&gt; &lt;code&gt;   &lt;pre&gt;public void run()
{
    container                           baseContainer;
    BinData                             binData;
    Image                               img;

    ;
    super();

    // create container from base64
    baseContainer =  BinData::loadFromBase64(&amp;quot;.... BASE64 STRING....&amp;quot;);
    
    // create bindata from container.
    binData = new BinData();
    binData.setData(baseContainer);

    // lock element
    element.lock();

    // create Image from bindata
    img = new Image();
    img.setData(binData.getData());

    // show and update image.
    imageWindow.image(img);
    imageWindow.widthValue(img.width());
    imageWindow.heightValue(img.height());
    imageWindow.update();

    // unlock elements.
    element.resetSize();
    element.unLock();
}&lt;/pre&gt;
&lt;/code&gt;&lt;i&gt;Karel F&lt;/i&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9646397" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/How+To/default.aspx">How To</category></item><item><title>Sending reports per e-mail from batch</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/05/22/sending-reports-per-e-mail-from-batch.aspx</link><pubDate>Fri, 22 May 2009 12:03:55 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9634896</guid><dc:creator>czdaxsup</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9634896.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9634896</wfw:commentRss><description>&lt;p&gt;I was facing an issue that no mails were arrived while sending invoices in PDF from a batch. Sending e-mails from a client worked fine. The reason is in enabled SMTP relaying on customer's mail server and in &lt;strong&gt;\Classes\RunbaseReportStd\serverSendMail&lt;/strong&gt; method. This method calls quickSend() method from SysMailer class. The first parameter of this method is fromAddress. In this method this parameter is filled with same value as toAddress. This may cause that no mail will be delivered when SMTP server is configured to drop relayed mails.&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9634896" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/AX2009/default.aspx">AX2009</category></item><item><title>How to execute an external process from a batch</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/04/23/how-to-execute-an-external-process-from-a-batch.aspx</link><pubDate>Thu, 23 Apr 2009 11:56:03 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9564298</guid><dc:creator>czdaxsup</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9564298.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9564298</wfw:commentRss><description>&lt;p&gt;You might need to execute an external process in a batch and you’re thinking about using WinApi::shellExecute() method. Unfortunately the whole WinApi class is set to run on client. Also the method WinApi::shellExecute() is marked as client method. That why you can’t use this method to execute an external process from batch. How to execute external process then? One option is to use &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx" target="_blank"&gt;System.Diagnostics.Process&lt;/a&gt; .NET class. Here’s a short sample how to use &lt;a href="http://msdn.microsoft.com/en-us/library/system.diagnostics.process.aspx" target="_blank"&gt;System.Diagnostics.Process&lt;/a&gt; to execute an external process:&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;&lt;span style="font: 10pt courier new"&gt;&lt;span class="general1-symbol"&gt;{
&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;System&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Diagnostics&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Process&lt;/span&gt;&lt;span class="general1-space"&gt;              &lt;/span&gt;&lt;span class="general1-identifier"&gt;process&lt;/span&gt;&lt;span class="general1-symbol"&gt;;
&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;System&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Diagnostics&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;ProcessStartInfo&lt;/span&gt;&lt;span class="general1-space"&gt;     &lt;/span&gt;&lt;span class="general1-identifier"&gt;processStartInfo&lt;/span&gt;&lt;span class="general1-symbol"&gt;;
&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-symbol"&gt;;

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-key"&gt;new&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-identifier"&gt;InteropPermission&lt;/span&gt;&lt;span class="general1-symbol"&gt;(&lt;/span&gt;&lt;span class="general1-identifier"&gt;InteropKind&lt;/span&gt;&lt;span class="general1-symbol"&gt;::&lt;/span&gt;&lt;span class="general1-identifier"&gt;ClrInterop&lt;/span&gt;&lt;span class="general1-symbol"&gt;).&lt;/span&gt;&lt;span class="general1-identifier"&gt;assert&lt;/span&gt;&lt;span class="general1-symbol"&gt;();

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;process&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-symbol"&gt;=&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-key"&gt;new&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-identifier"&gt;System&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Diagnostics&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Process&lt;/span&gt;&lt;span class="general1-symbol"&gt;();

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;processStartInfo&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-symbol"&gt;=&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-key"&gt;new&lt;/span&gt;&lt;span class="general1-space"&gt; &lt;/span&gt;&lt;span class="general1-identifier"&gt;System&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Diagnostics&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;ProcessStartInfo&lt;/span&gt;&lt;span class="general1-symbol"&gt;();
&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;processStartInfo&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;set_FileName&lt;/span&gt;&lt;span class="general1-symbol"&gt;(&lt;/span&gt;&lt;span class="general1-string"&gt;&amp;quot;C:\\temp\\test.bat&amp;quot;&lt;/span&gt;&lt;span class="general1-symbol"&gt;);
&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;processStartInfo&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;set_Arguments&lt;/span&gt;&lt;span class="general1-symbol"&gt;(&lt;/span&gt;&lt;span class="general1-string"&gt;&amp;quot;Value1 Value2 Value3&amp;quot;&lt;/span&gt;&lt;span class="general1-symbol"&gt;);

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;process&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;set_StartInfo&lt;/span&gt;&lt;span class="general1-symbol"&gt;(&lt;/span&gt;&lt;span class="general1-identifier"&gt;processStartInfo&lt;/span&gt;&lt;span class="general1-symbol"&gt;);

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;process&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;Start&lt;/span&gt;&lt;span class="general1-symbol"&gt;();

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;process&lt;/span&gt;&lt;span class="general1-symbol"&gt;.&lt;/span&gt;&lt;span class="general1-identifier"&gt;WaitForExit&lt;/span&gt;&lt;span class="general1-symbol"&gt;();

&lt;/span&gt;&lt;span class="general1-space"&gt;    &lt;/span&gt;&lt;span class="general1-identifier"&gt;info&lt;/span&gt;&lt;span class="general1-symbol"&gt;(&lt;/span&gt;&lt;span class="general1-string"&gt;&amp;quot;Finished&amp;quot;&lt;/span&gt;&lt;span class="general1-symbol"&gt;);
}

&lt;/span&gt;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9564298" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/How+To/default.aspx">How To</category></item><item><title>HOWTO: Open AX form from custom help file.</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/04/21/howto-open-ax-form-from-custom-help-file.aspx</link><pubDate>Tue, 21 Apr 2009 16:05:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9559122</guid><dc:creator>czdaxsup</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9559122.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9559122</wfw:commentRss><description>&lt;p&gt;There is one interesing feature available in help file. You could link AX Form directly from help file. There is an example in standard AX 2009 installation.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Open form &lt;strong&gt;Accounts receivable&lt;/strong&gt; / &lt;strong&gt;Setup / Customer groups&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;Press &lt;strong&gt;F1&lt;/strong&gt; &lt;/li&gt;    &lt;li&gt;Open file will be opened as on following picture &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HOWTOOpenAXformfromcustomhelpfile_D0DF/image_4.png"&gt;&lt;img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/blogfiles/czdaxsup/WindowsLiveWriter/HOWTOOpenAXformfromcustomhelpfile_D0DF/image_thumb_1.png" width="610" height="406" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;There are a links in text as &lt;strong&gt;Customers&lt;/strong&gt; or &lt;strong&gt;Term of payments&lt;/strong&gt;. &lt;/li&gt;    &lt;li&gt;When you click on those links then coresponding AX Form will be opened directly. &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;How to achieve same function&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;With creating help file it will be necesary use a &lt;a title="https://mbs.microsoft.com/Cms/Templates/document/General.aspx?NRMODE=Published&amp;amp;NRNODEGUID={A9CBA030-FF0A-45B0-9C26-A37B78CA8438}&amp;amp;NRORIGINALURL=/partnersource/documentation/helptutorials/daxuahelpkit20061214.htm?printpage=false&amp;amp;NRCACHEHINT=Guest&amp;amp;printpage=false&amp;amp;wa=wsignin1.0" href="https://mbs.microsoft.com/Cms/Templates/document/General.aspx?NRMODE=Published&amp;amp;NRNODEGUID={A9CBA030-FF0A-45B0-9C26-A37B78CA8438}&amp;amp;NRORIGINALURL=/partnersource/documentation/helptutorials/daxuahelpkit20061214.htm?printpage=false&amp;amp;NRCACHEHINT=Guest&amp;amp;printpage=false&amp;amp;wa=wsignin1.0" mce_href="https://mbs.microsoft.com/Cms/Templates/document/General.aspx?NRMODE=Published&amp;amp;NRNODEGUID={A9CBA030-FF0A-45B0-9C26-A37B78CA8438}&amp;amp;NRORIGINALURL=/partnersource/documentation/helptutorials/daxuahelpkit20061214.htm?printpage=false&amp;amp;NRCACHEHINT=Guest&amp;amp;printpage=false&amp;amp;wa=wsignin1.0"&gt;Help Kit for Microsoft Dynamics AX&lt;/a&gt;. Next tool which I will recommand you is a &lt;a title="Download details- HTML Help Workshop and Documentation" href="http://www.google.cz/url?q=http://www.microsoft.com/downloads/details.aspx%3FFamilyID%3D00535334-c8a6-452f-9aa0-d597d16580cc&amp;amp;ei=ubrtSdDIIc3LjAfmxLUX&amp;amp;sa=X&amp;amp;oi=spellmeleon_result&amp;amp;resnum=1&amp;amp;ct=result&amp;amp;usg=AFQjCNGcfYw4Qu6_k3c1muYuKvzc-f8XGA" mce_href="http://www.google.cz/url?q=http://www.microsoft.com/downloads/details.aspx%3FFamilyID%3D00535334-c8a6-452f-9aa0-d597d16580cc&amp;amp;ei=ubrtSdDIIc3LjAfmxLUX&amp;amp;sa=X&amp;amp;oi=spellmeleon_result&amp;amp;resnum=1&amp;amp;ct=result&amp;amp;usg=AFQjCNGcfYw4Qu6_k3c1muYuKvzc-f8XGA"&gt;HTML Help Workshop and Documentation&lt;/a&gt;. For linking AX Form into code there is a special function located in script_main.js file located in folder local of help kit. Syntax of this function is following:&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;function AxMenuItemExecute(MIType, MenuItem)
{
    try
    {
	var intMenuItemType;
	
    switch (MIType)
    {
        case &amp;quot;Display&amp;quot;:
             intMenuItemType=0;
             break;
        
        case &amp;quot;Output&amp;quot;:
             intMenuItemType=1;
             break;
        
        case &amp;quot;Report&amp;quot;:
             intMenuItemType=2;
             break;
        
        default:
             return;  // Take no action.
             break;
    }
    
    AxLabel.RunMenuItem(intMenuItemType, MenuItem);	
    }
    catch (e) {
    //window.alert(&amp;quot;Failed to execute menu item.&amp;quot;);
    }
}
&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;Using of this function is quite simple, there is an example of opening Term of payments.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;a onclick=&amp;quot;AxMenuItemExecute('Display','paymterm')&amp;quot;&amp;gt;Terms of payment&amp;lt;/a&amp;gt;&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;To be able call this function successfull you have to add a reference to AxLabel object in each html page in your help file.&lt;/p&gt;

&lt;pre&gt;&lt;code&gt;&amp;lt;OBJECT ID=&amp;quot;AxLabel&amp;quot; CLASSID=&amp;quot;CLSID:F5DD8727-673F-4523-869A-35AAA05AE782&amp;quot;&amp;gt;&amp;lt;/OBJECT&amp;gt;&lt;/code&gt;&lt;/pre&gt;
&lt;i&gt;Karel F&lt;/i&gt;&lt;/code&gt;&lt;/code&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9559122" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/Administration/default.aspx">Administration</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/Script/default.aspx">Script</category></item><item><title>Blocked queries on any change in AOT</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/04/16/blocked-queries-on-any-change-in-aot.aspx</link><pubDate>Thu, 16 Apr 2009 16:02:01 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9552817</guid><dc:creator>czdaxsup</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9552817.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9552817</wfw:commentRss><description>&lt;p&gt;You may face a blocking issue on SQL Server each time you do any change in AOT. And you’re using database log. This is the problem. While using database log an insert trigger on SysDatabaseLog table is always dropped and recreated what is causing blocking issues on SysDatabaseLog table. There are 2 options how to solve this issue:&lt;/p&gt;  &lt;p&gt;1. Do not use database log&lt;/p&gt;  &lt;p&gt;2. Modify createDateTimeTrigMSSQLOnTable method in SysSQLinitDBTriggers class as follows:&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;&lt;span style="font: 10pt courier new"&gt;...&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="xpp-comment"&gt;// Drop trigger if it exists&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="xpp-keyword"&gt;if&lt;/span&gt; (resultSet.next() &amp;amp;&amp;amp; (resultSet.getString(1) == '1'))&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {
&lt;span class="xpp-comment"&gt;// ADDED - This should avoid dropping and recreating trigger for SysDatabaseLog table&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="xpp-keyword"&gt;if&lt;/span&gt; (tableName == 'SYSDATABASELOG')&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; {&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="xpp-keyword"&gt;return&lt;/span&gt;;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }
  &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="xpp-comment"&gt;// ADDED - This should avoid dropping and recreating trigger for SysDatabaseLog table - END&lt;/span&gt;&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; sqls = 'DROP TRIGGER ' + dbSchema + &amp;quot;.&amp;quot; + triggerName;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ssep2 = new SqlStatementExecutePermission ( sqls );&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; ssep2.assert(); 

&lt;br /&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; &lt;span class="xpp-comment"&gt;//BP Deviation Documented&lt;/span&gt;&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; statement.executeUpdate(sqls);&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; CodeAccessPermission::revertAssert();&lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/span&gt;&lt;/code&gt;
…
&lt;p&gt;&lt;/p&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Martin F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9552817" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category></item><item><title>HOWTO: Using WinAPI FindFirstFile, FindNextNext in Batch Jobs.</title><link>http://blogs.msdn.com/czdaxsup/archive/2009/03/13/howto-using-winapi-findfirstfile-findnextnext-in-batch-jobs.aspx</link><pubDate>Fri, 13 Mar 2009 15:56:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9473100</guid><dc:creator>czdaxsup</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/czdaxsup/comments/9473100.aspx</comments><wfw:commentRss>http://blogs.msdn.com/czdaxsup/commentrss.aspx?PostID=9473100</wfw:commentRss><description>&lt;p&gt;In batch job is not posible to call WinAPI functions &lt;strong&gt;WINAPI::FindFirstFile(..)&lt;/strong&gt; and &lt;strong&gt;WINAPI::FindNextFile(...)&lt;/strong&gt;. This is limited only for code running on client. Sometimes is necesary have similar function for code running on server (or in batches). There is a code sample which is using .NET Framework.&lt;/p&gt;  &lt;pre&gt;&lt;code&gt;static void Job1(Args _args)
{
    FilePath sFilePath;
    
    System.IO.DirectoryInfo di;
    System.IO.FileInfo[] fis;
    System.IO.FileInfo fi;
    int i;
    int l;
    ;

    sFilePath;= &amp;quot;C:\\temp\\test\\&amp;quot;;
    di = new System.IO.DirectoryInfo(sFilePath;);
    fis = di.GetFiles();
    l = fis.get_Length();
    for (i = 0; i &amp;lt; l; i++)
    {
        fi = fis.GetValue(i);
        info(fi.get_FullName());
    }
}&lt;/code&gt;&lt;/pre&gt;

&lt;p&gt;&lt;em&gt;Karel F&lt;/em&gt;&lt;/p&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9473100" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/X_2B002B00_/default.aspx">X++</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/.NET+Framework/default.aspx">.NET Framework</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/How+To/default.aspx">How To</category><category domain="http://blogs.msdn.com/czdaxsup/archive/tags/AX2009/default.aspx">AX2009</category></item></channel></rss>