Microsoft Dynamics Ax developer's blog

Tuesday, May 15, 2007


The first line which I always write at the start of the 'run' method in a RunBase descenant is:


Settings prefixes is very useful for detect causes of errors later.

There are also very useful macros: PrefixField, PreFixFieldValue

For example, this code will set prefix to the: "

Monday, May 14, 2007

Tabax v 0.3

download (87k)

After the long period of beta stage, the new release of Tabax is out.

This release introduces several new features which will be very useful for developers and end-users

First of all, it works under version 4 of Dynamics Ax.

Second, it introduces the Tabax Plugin API which allows developers to increase functionality of Tabax sufficiently.

There is a plugin for Tabax (in the tabax archive) to integrate AxPath with your system: so, if you install this plugin, you can click on AxPath links in browsers and email clients and go to specific location in code or specific record in the database (thank to AndyD for this functionality).

Ivan Kashperuk has developed a great plugin named RecentWindows which I use heavily. If you close some window, it allows to reopen it quickly.

Also, Ivan added a very useful feature to Tabax: if You press the 'Edit current field' toolbar button, while holding Ctrl and Shift down, Tabax will open a table field or data method related to the currently selected form field.

I have added similar fuctionality to the 'cross referebces' buton - now You can press it while working with form, and you will see cross refereces for the fireld related to the active control.

There are also some minor bugfixes and enhancements in this release

Thursday, May 10, 2007

AxPath is supported by axaptapedia

So you can create links to AOT items in Axaptapedia using regular link syntax and if you have Tabax 0.3 rc 1 installed, you can navigate them.

Thanks to Andrew Jones!

Tuesday, May 08, 2007

DLR & X++

About a week ago Microsoft has announced the new technology named DLR. As far as I know, this is a layer for dynamic languages support on top of .NET framework. I watched the very interesting video where integration of Python, Ruby and JScript is shown.

But what can it give to Dynamics Ax?

I think X++ have some features of dynamic languages.

For example, method identification is being done via method names, not some kinds of method ids (i.e. virtual methiod table indexes like C++). If you write code like

MyClass x;

compiler checks that class MyClass have method myMethod, runtime checks, that object x has method myMethod, but run time does not check whether x is instance of MyClass.

So you can write something like

MyOtherClass y=...;
Object o=y;
MyClass x=o;

the code will be executed successfully if MyOtherClass have method myMethod, even if MyOtherClass and MyClass have no common superclass.

Such tricks are used with forms (for example ; Tabax plugin SDK is using it also to provide compiler checks for tabax service methods usage).

So if Microsoft is planning to move Dynamics Ax to .NET platform, they should provide support for such behaviour for the backward comapatibility.

I think the work being done on DLR can be used in such case. Jim Hugunin, architect of DLR and and the author of IronPython says (see video mentioned above), that this implementation of the Python language outperform original C implementation (CPython) and runs 2 times faster on standard benchmarks. He also pays extremely high attention on backwards compatibility (for example, you can not use .NET object methods in IronPython code until you place "import clr" statement in your code).

I think when this job will be done and authors of DLR will find and mitigate dynamic languages problems in DLR and SilverLight, the result of the job can be used in the future dynamics products.

PS. I played some time with IronPython and found though it have pretty good perormance in requires a lot of time to initialize an engine and load a script.

Tabax 0.3 rc 1:

download (80K)


  • fixes bugs in AxPath

  • AxPath browser integration plugins is in archive in the extras folder

  • Plugin SDK documented