Monday, May 4, 2009

Developer for Microsoft Dynamics AX Certification Roadmap

Microsoft Certified Business Management Solutions Professional - Developer for Microsoft Dynamics AX

MB6-819 AX 2009 Development Introduction

MB6-821 AX 2009 MorphX Solution Development

Collection 80011AE: Development I in Microsoft Dynamics AX 2009 (4 Hours)

Development I – Architecture

Development I - Data Dictionary

Development I - User Interfaces

Development I - Report Adjustments


Collection 80012AE: Development II in Microsoft Dynamics AX 2009 (3 Hours)

Development II - X++ Overview

Development II - Classes and Objects

Development II - X++ Control Statements

Development II - X++ Control Statements

Development II - Accessing the Database

Development II - Exception Handling

Development II - Appendix


MB6-820 AX 2009 Installation & Configuration

80019AE: Installation and Configuration for Microsoft Dynamics AX 2009 (6 Hours)

Installation and Configuration - Overview

Installation and Configuration - Planning Microsoft Dynamics AX Install

Installation and Configuration - Installing and Deploying Enterprise Portal

Installation and Configuration - Installing AIF Web Services

Installation and Configuration - Initializing Microsoft Dynamics AX

Installation and Configuration - Installing the Base System

Installation and Configuration – Deploying

Installation and Configuration - Installing and Deploying Workflow

Installation and Configuration - Install Microsoft Dynamics AX Reporting

MB6-825 AX 2009 Enterprise Portal Development

(-)

MB6-817 AX 2009 Trade & Logistics

80024AE: Trade and Logistics I in Microsoft Dynamics AX 2009 (9 Hours)

Trade and Logistics I - Introduction

Trade and Logistics I - Inventory

Trade and Logistics I - Purchase Orders and Purchase Order Posting

Trade and Logistics I - Serial and Batch Numbers

Trade and Logistics I - Item Arrival and Registration

Trade and Logistics I - Quarantine Management

Trade and Logistics I - Vendor Returns

Trade and Logistics I - Sales Orders and Sales Order Posting

Trade and Logistics I - Sales Order Picking

Trade and Logistics I - Over/Under Delivery and Miscellaneous Charges

Trade and Logistics I - Customer Returns

80025AE: Trade and Logistics II in Microsoft Dynamics AX 2009 (8 Hours)

Trade and Logistics II - Customer and Vendor Trade Agreements

Trade and Logistics II - Inventory Reporting and Statistics

Trade and Logistics II - Purchase Requisitions

Trade and Logistics II - Request for Quote

Trade and Logistics II - Transfer Orders

Trade and Logistics II - Sales Quotations

Trade and Logistics II - Quality Management

Trade and Logistics II - Reservations

Trade and Logistics II - Commissions

Trade and Logistics II - Inventory Journals

80010AE: Bill of Material in Microsoft Dynamics AX 2009 (6 Hours)

Bill of Materials - BOM Overview

Bill of Materials - Create Simple BOMs

Bill of Materials - Reports and Other BOM Functionality

Bill of Materials - Report a BOM as Finished

Bill of Materials - Scrap and Measurement

Bill of Materials - BOM Calculations

Bill of Materials - Creating BOMs with Versions

Bill of Materials - Sales Orders and BOMs

Bill of Materials - Working with BOM and Item Configurations

Full list of AX2009 exams

Thursday, April 30, 2009

How To Restrict Form Setup Conext Menu Item

To resrtict Form Setup context menu item you should:

Create security key, for example, SysSetupFormPermission




Add this key to SysSetupForm control tab



Create a new user group supposed to be restricted




Uncheck the key




A user included in the group will still have the context menu item
but will see an empty form




Thursday, April 9, 2009

Launching and closing Internet Explorer

One can run Internet Explorer in visible or invisible mode, then navigate any url and close the application, finally.

static void TestIE(Args _args)
{
COM c = new COM("InternetExplorer.Application");
str url = "http://msdn.microsoft.com/en-us/library/ms952618.aspx";
;
c.navigate(url);
c.visible(true);
if (DialogButton::Yes == BOX::YesNo("To close the browser press Yes", DialogButton::Yes))
{
info(strfmt("Job is done"));
c.quit();
}
}

Monday, March 30, 2009

Watching variables of a report

A little trick to watch your variables during debugging a report. Add a variable to watch and add the Element. prefix to its name.

Monday, March 16, 2009

Customized Comment In Your Code Editor

Standard code editor allows to create your own kind of comments. Generally, a style of comments depends on your programming style and the company's policies on that.

I prefer to frame changes I make in a code with parentheses in the following style:




// Voytsekhovskiy, Alexey (My company name) (2009/03/16) (#)
//-->
the code as it wasd before my changes
//<--


In order to have such an option in the editor's context menu I changed EditorScripts class as follows:

1. Created a new add-on function

boolean isEmptySelection(str s)
{
;
// delete all special symbols
return strLen(strRem(strRem(strRem(s," "),"\n"),"\r"))>0;
}


2. Changed getSelectedText standard method

// added here the new parameter takeAllIfEmpty
static str getSelectedText(Editor e, boolean takeAllIfEmpty = true)
{
int i;
str text;
str line;
int startLine = e.selectionStartLine()+1;
int endLine = e.selectionEndLine()+1;
int startCol = e.selectionStartCol();
int endCol = e.selectionEndCol();

if (startLine == endLine && startCol == endCol)
{
// added here
//-->
if (!takeAllIfEmpty)
return text;
//<--

e.firstLine();
while (e.moreLines())
{
text += e.getLine()+'\r\n';
e.nextLine();
}
}
else
{
...
(the rest of the method)


3. Created the method which implements this new kind of comments:


// Insert a comment in place of the cursor
// (Example: Developer's name (Your company name) (YYYY/MM/DD) (#))
// //-->
// Your code here as it was before
// //<--
void Comments_BetweenParentheses(Editor e)
{
#define.YourCompanyName("Your company name")
str selText = EditorScripts::getSelectedText(e, false);
str selFirstLine;
int startLine = e.selectionStartLine()+1;
int startCol = e.selectionStartCol();
xppSource xppSource;
;
if(this.isEmptySelection(selText))
{
startLine = e.selectionStartLine()+1;
e.firstSelectedLine();
selFirstLine = e.getLine();

startCol = strLen(selFirstLine) -strLen(strLTrim(selFirstLine));
xppSource = new xppSource(startCol);
e.insertLines(xppSource.indent()+strFmt("// %1 ("+#YourCompanyName+") (%2) (#)", XUserInfo::find(False, curUserId()).name, date2str(today(), 321, 2, 4, 2, 4, 4))+"\n");
e.insertLines(xppSource.indent()+strFmt("//-->\n"));
e.insertLines(selText);
e.insertLines(strFmt(xppSource.indent()+"//<--\n"));
e.gotoLine(startLine+1);
e.gotoCol(startCol+1);
}
else
{
startCol = e.columnNo();
xppSource = new xppSource(startCol);
e.insertLines(strFmt("// %1 ("+#YourCompanyName+") (%2) (#)", XUserInfo::find(False, curUserId()).name, date2str(today(), 321, 2, 4, 2, 4, 4))+"\n");
e.insertLines(xppSource.indent()+strFmt("//-->\n"));
e.insertLines(strFmt(xppSource.indent()+"//<--\n"));
e.gotoLine(e.currentLineNo()-1);
e.gotoCol(50);
e.insertLines(strFmt("\n"+xppSource.indent()));
}
}




So, after compilation you can use the new comments style.



after commenting



Just to be on the safe side I place here the link to the whole project file CommentParentheses.xpo

книга Разработка бизнес-приложений в Microsoft Business Solutions - Axapta версии 3.0



С этой книги я начал изучение ERP-системы MS Axapta, во многом благодаря ей я нашёл первую работу в Канаде, и по сей день, она является наиболее востребованной среди прочих книг на моём столе для разработки для всех версий MS Dynamics: 3.0 4.0 и 2009.

Книга написана одновременно и как справочное пособие по архитектуре, среде разработки и языку X++, и параллельное описание реализации конкретного проекта "Управление гостиницей".
На примере последнего и разбираются варианты использования той или иной функциональности.

Вообще, примеры - это самая сильная часть любого руководства разработчика, и данная книга - отличный образец того, как это нужно делать: здесь можно найти не только соответствующие Best Practice стандартные паттерны программирования, которые особенно важно усвоить вначале работы с системой, но и такие приёмы, как, скажем работа с COM - Axapta Business Connector или организация многомерных массивов.

Название третьей главы "Что должен знать эксперт" говорит само за себя.

Мои любимые параграфы те, где речь идёт о создании и вызове сущностей системы, таких как формы, меню, запросы и так далее, напрямую из кода.

Особенно приятно, что она написана русскими ребятами на хорошем русском языке.

В целом, оценивая этот беспрецедентный по охвату материала, стройности и стилю изложения и оригинальности концепции труд, можно сказать, что данная книга является краеугольным камнем в построении карьеры разработчика MS Dynamics.

Wednesday, February 18, 2009

XPO file viewer

When you deal with a pile of Axapta project files (xpo-files) it might be very useful to take a look at what it consists of.

For this goal, I created a small application that allows to see the content of an XPO file in Tree view as you got used to see during the import procedure in AX.

No need anymore to load AX, just launch XPOViewer.exe (from XPOViewer.zip archive) and open the file you want to see. You can also start this application by double-click on files having set it as default system action: by xpo files association.


Loading large project files can take much time, so, be patient and enjoy the progress bar.

In the Tree view you can copy any branch text to your clipboard by Ctrl-C key combination or from the context menu.