28 June 2012

Models and Model store in AX 2012

Models and Model files in AX 2012

Models are a logical group of elements like tables and classes. In AX 2012 elements can be group and store in the model file. Model files are easy to create, export and import and this can be uninstlled from system when not required.

Create a new model files

Step 1: goto command prompt
Cd c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AXUtil.exe Create /Model:NewCustomer /Layer:USR

Export a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AxUtil.exe export /file:d:\Modificatoins.axmodel /model:NewCustomer

Delete a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AxUtil.exe Delete /model:NewCustomer

Import a model file
c:\program files\microsoft Dynamics AX\60\server\microsoftDynamicsAX\bin>
AXUtil.exe import /file:d:\Modificatoins.axmodel

Model store

Export model store:
Export-AXModelStore -File "E:\R3ModelStore.axmodelstore"

Import model store:
Open the Microsoft Dynamics AX Management Shell.
Import-AXModelStore -File "E:\R3ModelStore.axmodelstore"

Please click here

09 June 2012

X++ code to write data to XML File in Job

static void CreateXmlPurch(Args _args)
{
XmlDocument xmlDoc; //to create blank XMLDocument
XmlElement xmlRoot; // XML root node
XmlElement xmlField;
XmlElement xmlRecord;
XMLWriter xmlWriter;
InventTable inventTable;
DictTable dTable = new DictTable(tablenum(PurchTable));
DictField dField;
int i, fieldId;
str value;
PurchTable purch;
//#InventTags
;

xmlDoc = XmlDocument::newBlank();
xmlRoot = xmlDoc.createElement("Purch");//#ItemRootNode);

// Loop through all the records in the inventTable
while select purch
where purch.PurchStatus == PurchStatus::Backorder
{
// Create a XmlElement (record) to hold the
// contents of the current record.
xmlRecord = xmlDoc.createElement("Records");//#ItemRecords);
// Loop through all the fields in the record
for (i=1; i<=dTable.fieldCnt(); i++)
{
fieldId = dTable.fieldCnt2Id(i);
// Find the DictField object that matches
// the fieldId
dField = dTable.fieldObject(fieldId);

// Skip system fields
if (dField.isSystem())
continue;
// Create a new XmlElement (field) and
// have the name equal to the name of the
// dictField
xmlField = xmlDoc.createElement(dField.name());
// Convert values to string. I have just added
// a couple of conversion as an example.
// Use tableName.(fieldId) instead of fieldname
// to get the content of the field.
switch (dField.baseType())
{
case Types::Int64 :
value = int642str(purch.(fieldId));
break;
case Types::Integer :
value = int2str(purch.(fieldId));
break;
default :
value = purch.(fieldId);
break;
}
// Set the innerText of the XmlElement (field)
// to the value from the table
xmlField.innerText(value);
// Append the field as a child node to the record
xmlRecord.appendChild(xmlField);
}
// Add the record as a child node to the root
xmlRoot.appendChild(xmlRecord);
}
// Add the root to the XmlDocument
xmlDoc.appendChild(xmlRoot);
// Create a new object of the XmlWriter class
// in order to be able to write the xml to a file
xmlWriter = XMLWriter::newFile(@"c:\PurchaseOrders.xml");
// Write the content of the XmlDocument to the
// file as specified by the XmlWriter
xmlDoc.writeTo(xmlWriter);

//Open the file in Internet Explorer
WINAPI::shellExecute("c:\PurchaseOrders.xml");
}

Trial balance export to Azure Blob Storage

The file will be automatically generated from D365 using a batch job. The trial balance file should include all dimensions. (Main-Dept-Cost ...