At work we recently discussed ways to startup Dynamics AX 2012 and navigate to a specific record. The requirement was to open Dynamics AX from a DMS client that manages invoices and other documents.
There are different approaches to achieve this goal. One way is to use the Startup Command framework which is used to instruct Dynamics to execute several functionalities during startup e.g. compile, synchronize or navigate to a menu item. In order to startup a menu item, you provide an XML file which contains the menu item name and point to this file from the .axc Dynamics AX configuration file.
Startup Dynamics AX 2012 with an XML configuration file
Reference the record in the startup XML file
For many forms in Dynamics AX it is sufficient to call the corresponding menu item with an Args object that holds the record. To specify a record in Dynamics AX you need to provide at least the TableId and the RecId. For example the Customer “Adventure Works” can be defined by using TableId 77 (CustTable) and the RecId 22565422070. Add two additional attributes RecId and TableId to the XML file which is used to open the CustTable form. The XML file looks like this:
At the SysAutoRun class, open the execRun() method. At the top declare the following variables:
RecId recId;
TableId tableId;
Args arg = new Args();
Common common;
DictTable dictTable;
At the bottom, find the place where a menu item is started. Before the if(mf) statement add the following code to read the RecId and TableId from the XML file and select the corresponding record:
recId = str2int64(this.getAttributeValue(_command,'RecId'));
tableId = str2int(this.getAttributeValue(_command,'TableId'));
if(recId != 0)
{
dictTable = new DictTable(tableId);
common = dictTable.makeRecord();
select common where common.RecId == recId;
arg.record(common);
}
Within the if(mf) block, add the Args object when the menu fuction is called to pass the record.
mf = new MenuFunction(name, menuItemType);
if (mf)
{
this.logInfo(strfmt("@SYS101206", mf.object(), enum2str(mf.objectType())));
mf.run(Arg);
result = true;
}
Test your configuration
Now you can test your configuration. Create a new .axc file and point it to the XML file. Make sure the XML file has a valid TableId and Recid property. Start Dynamics AX using the .axc file and the defined menu item should open and view the record.