Monday 9 July 2012

Tree node to Excel file

static void CreateExcelMallik(Args _args)


{



SysExcelApplication xlsApplication;

SysExcelWorkBooks xlsWorkBookCollection;

SysExcelWorkBook xlsWorkBook;

SysExcelWorkSheets xlsWorkSheetCollection;

SysExcelWorkSheet xlsWorkSheet;

SysExcelRange xlsRange;

AsciiIO tmpfile;

Filename tmpfilename;

FileIOPermission permission;

TreeNode treeNode;

TreeNode treeNodeTables;

#File

#AOT

int row = 1;

str fileName;

;



treeNodeTables = TreeNode::findNode(#SecurityKeysPath);



// Name of the Excel document.



fileName = "C:\\test.xsl";



// Excel open and initialize.



xlsApplication = SysExcelApplication::construct();

xlsApplication.visible(true); //Generate new Excel worksheet.

xlsWorkBookCollection = xlsApplication.workbooks();

xlsWorkBook = xlsWorkBookCollection.add();

xlsWorkSheetCollection = xlsWorkBook.worksheets();

xlsWorkSheet = xlsWorkSheetCollection.itemFromNum(1);

// Write headlines cells in the worksheet.

xlsWorkSheet.cells().item(row,1).value('Name'); xlsWorkSheet.cells().item(row,2).value('ID');

row++;

// first table

treeNode = treeNodeTables.AOTfirstChild();

// Excel worksheet with fill data (Excel fill-cells).

while (treeNode != null)

{

xlsWorkSheet.cells().item(row,1).value(treeNode.AOTname()); xlsWorkSheet.cells().item(row,2).value(treeNode.applObjectId());

row++; // next table

treeNode = treeNode.AOTnextSibling();

}

// Check whether the document already exists.

if(WinApi::fileExists(fileName))

{

WinApi::deleteFile(fileName);

}

// Excel document store.

xlsWorkbook.saveAs(fileName);

//Close Excel.

xlsApplication.quit(); xlsApplication.finalize();

}

Tree Node for Security Key and write to text file.

static void TextFile_TreeNood_Demo(Args _args)


{

AsciiIO tmpfile;

Filename tmpfilename;

FileIOPermission permission;

#File

#AOT

TreeNode treeNode;

TreeNode treeNodeTables = TreeNode::findNode(#SecurityKeysPath);

tmpfilename = WinApi::getTempFilename(WinAPI::getTempPath(),'SecurityKey');

permission = new FileIOPermission(tmpfilename,#IO_write);

permission.assert();

tmpfile = new AsciiIO(tmpfilename, #IO_write);

if(tmpfile.status()==IO_Status::Ok)

{

tmpfile.outRecordDelimiter('\n');

tmpfile.outFieldDelimiter(';');

}

else

{

return;

}



while (treeNode != null)

{

tmpfile.write(strfmt('Name: %1, ID: %2',treeNode.AOTname(), treeNode.applObjectId())); /

}

tmpfile = null;

CodeAccessPermission::revertAssert();

}

AIF Test JOB

static void AIFTesting(Args _args) { AifGatewayReceiveService AifGatewayReceiveService; AifInboundProcessingService AifInboundProcessingService; ; AifGatewayReceiveService = new AifGatewayReceiveService(); AifInboundProcessingService = new AifInboundProcessingService(); AifGatewayReceiveService.run(); AifInboundProcessingService.run(); //ttsabort; }

Sunday 8 July 2012

Table Tuning (to check this if all tables have Primary,Cluster Index and Caching.

//This Script will check if all tables have // //Primary index //Cluster index //Caching ////NOTE: temp tables are skipped static void TableTuningTest_Mallik(Args _args) { boolean skipEmptyTables = true; boolean result; treeNode treeNode; SysDictTable sdt; str TableAndCound; int recordCount; boolean skipEmptyrecordCount = false; treeNodeIterator treeNodeIterator =TreeNode::findNode("\\Data Dictionary\\Tables").AOTiterator(); ; treeNode = treeNodeIterator.next(); setPrefix("Tuning"); while (treeNode) { sdt = new SysDictTable(tablename2id(treeNode.AOTname())); recordCount = sdt.recordCount(); if(!sdt.isTmp() && (!skipEmptyTables || (recordCount != 0)) ) { TableAndCound = treeNode.AOTname()+ ' ('+ int2str(sdt.recordCount())+')'; setPrefix(TableAndCound); result = false; result = result || sdt.treeNode().AOTgetProperty("CreatedDateTime") == "yes" ? true : false; result = result || sdt.treeNode().AOTgetProperty("ModifiedDateTime")== "yes" ? true : false; if(result && sdt.treeNode().AOTgetProperty("CreateRecIdIndex") == "No" ) { setPrefix(TableAndCound); info("RecIdIndex"); } if(sdt.treeNode().AOTgetProperty("CacheLookup") == "None") { setPrefix(TableAndCound); info("CacheLookup"); } if(sdt.treeNode().AOTgetProperty("ClusterIndex") == "") { setPrefix(TableAndCound); Warning("ClusterIndex"); } if(sdt.treeNode().AOTgetProperty("PrimaryIndex") == "") { setPrefix(TableAndCound); Error("PrimaryIndex"); } } treeNode = treeNodeIterator.next(); } }

AX Job to export Security Key to CSV file.

static void AOTGetProperty(Args _args) { #aot #properties Boolean writeFile; Boolean infoDebug; CommaIo outFile; TreeNode tn = TreeNode::findNode(#SecurityKeysPath); str securityKeysName; str securityKeyID, Property; int sID; str errMsg; ; infoDebug = false; // ***OPTION*** View InfoLog Output (true / false) writeFile = true; // ***OPTION*** Export results to CSV file (true / false) errMsg = ""; //"--- NOT DEFINED ---"; //C:\Users\m.a.gudidevuni\Documents outFile = new AsciiIo("C:\\GTA\\SecurityKey.CSV","W"); outFile.outFieldDelimiter("\r\n"); outFile.outRecordDelimiter("\r"); tn = tn.AOTfirstChild(); while (tn) { securityKeysName = findProperty(tn.AOTgetProperties(), #PropertyName); securityKeyID = findProperty(tn.AOTgetProperties(),#PropertyId); sID = tn.applObjectId(); if(infoDebug) { info(strfmt('SecurityKeysName %1 with ID : %2',securityKeysName,sID)); } if(writeFile) { outFile.write(securityKeysName + " , " + strReplace(int2str(sID),",","")); } // info(strfmt('SecurityKeysName %1 with ID : %2',securityKeysName,sID)); // Property = tn.AOTgetProperties(); // info(strfmt('%1', findProperty(Property, 'ID'))); // info (strfmt( // 'SecurityKeysName %1 has the ID property specified as %2', // securityKeysName, securityKeyID)); tn = tn.AOTnextSibling(); } }

Update NuGet package to new MS D365FO version

1. Import the NuGet package files from LCS for that particular version please take the PU version files only. a. Goto LCS-->Asset Libra...