Monday, August 24, 2009

“Go to main table” on a RunBase dialog control

In one of my blog posts, I have been posed with the following question:

“how to achieve go to main table on dialog field.
for example a dialog is having a field of lookup custAccount, now what i need to have a go to main table functionality on the same.”

So, the short answer is: It is not possible to override jumpRef method directly on the dialog control. This is due to the fact that in order to show the “Go to Main table” link in the context menu of a control, you need to actually override that method on the form, which is later used to draw the context menu.

There are 3 possible ways that you can achieve the same functionality though, that I would like to briefly discuss here:

  1. Recommended Don’t bother with the dialog. Simply create a form, and override the jumpRef method on the needed control on the form. To demonstrate this behavior, you can use the Tutorial_RunBaseForm class and form. Override the jumpRef method, put the code to call the main form there. And you are done. Simple, and does not require a lot of coding. There is a lot of confusion, where junior AX developers think it will require a lot of code changes to replace a dialog with a form. This is not entirely that hard, as RunBase classes can use a regular AOT form instead of the regular dialog.
  2. Use controlMethodOverload approach, and create the controlName_context() method, which is executed when you try to open the context menu on the specified control. Inside this method, build the context menu from scratch. This way, only the items you want to be shown will be present in the context menu. Note: this means, that standard context menu items, like Setup, will not be shown in the menu (unless you add and handle them).
  3. Use controlMethodOverload approach, as in the previous example, but instead of overriding context() method, override the showContextMenu method. This will allow you to add your custom context menu items to the standard context menu. This does not seem to work on Axapta 3.0 though, and I did not try to figure out why. Note you need to uncomment some code in order to enable this approach (I left a TODO comment for that).

I have made the necessary changes, demonstrating the latter 2 approaches, using the class located under Classes\Tutorial_RunBaseBatch. You can download the xpo here (it contains only the USR layer changes).

The class used for drawing the context menu in the example is called PopupMenu. A good example of how this class can be used in the application is available in AOT under Forms\Tutorial_PopupMenu. Some information, along with another example, is available on MSDN.

A while ago, I have suggested some minor changes to the Dialog framework classes, which allow to simplify the process of overriding control event methods on the dialog. The original post can be found through this link:

Let me know if any of this requires more clarification.

Inside Dynamics AX 2009 – Russian Translation

As you all know, Microsoft has recently released another book on development in Dynamics AX, called Inside Dynamics AX 2009.

For the past 2.5 months, I have been working on the Russian translation of this book, and now I am glad to say that the translation is over and will soon hit the shelves of online-stores. I guess it will also be available directly from Microsoft Russia, similar to the 4.0 version.

The book has gained a lot in weight :) and content. With more than 200 new pages, as well as many changes and updates of the existing chapters, the book is definitely a good investment. New “hot” features of Dynamics AX, like SSRS reports, Workflow, Role centers, etc., are described in the book from a developer point-of-view.

I really hope that my effort will not go in vain, and the book will be helpful to people working with Microsoft Dynamics AX 2009.


Sunday, August 23, 2009

Microsoft Annual Review 2009

Just a quick post: some of you enjoy posting information relevant to your review, both looking at numbers and a critical view of the message given to you. It has started to happen a bit in the last post so I'm just going to capitulate and put this small post up for the 2009 Annual Review share and compare.

Oh, and obviously grab yourself a few grains of salt. Folks seem to like this format:

  • L# (promo'd?)
  • (Exceeded|Achieved|Underperformed) / (20|70|10)
  • Bonus $K
  • Stock $K
  • (Promo $K)
  • Optional comments about Division / Group, discipline, impression of review

The promotion budget is significantly less this year meaning that if you got promoted you're really at the top of the heap. If you didn't, well, you're going into a long line.

And as we know: no merit raises this year (though you will get a raise if you're promoted). But bonus and stock awards are the same, ensuring we have the flexibility to reward our top performers.

I would expect that the Underperformed Microsofties have already been managed out. If you are an Achieved/10% then I'd expect you're given a very short term idea of what success looks like and can expect to be closely managed. Great time to update that resume and see what else is going on.

I found a bunch of old reviews of mine recently. Flipping through the review forms started with refreshing simplicity from over a decade ago, rapidly turning into confusing churn (company value ratings and all that crap), to now a fragmented collection of task-driven thoughts. While it's nice that the review form has pretty much stuck to the current form now and we don't have new components coming and going (yeah schema?) it really doesn't compare to the first couple of reviews I did at Microsoft.

Of course, I had great managers who knew how to give concise feedback, both daily and as part of my review. Where you don't have demonstrated collective excellence, you have process.

-- Comments