Code highlighting

Tuesday, May 04, 2010

Tool: DEV_SysTableBrowser and DEV_CreateNewProject tools now on AX 2009

3 or so years ago I created a couple of tools that provide extra capabilities for AX developers, specifically, ease up the creation of a new project with a predefined structure and name pattern, and add functionality to the way we browse tables with the standard SysTableBrowser, allowing to specify the exact fields you want to see, browsing temporary tables. Both tools were also available as Tabax plugins

You can read more about the tools, as well as Tabax, on the following pages on Axaptapedia:
DEV_SysTableBrowser home page on Axaptapedia
DEV_CreateNewProject home page on Axaptapedia

You can download the new versions of these tools through the pages on Axaptapedia, or directly from my SkyDrive: DEV_SysTableBrowser, DEV_CreateNewProject
If you are unfamiliar with these tools, I suggest you go through Axaptapedia, as it also contains a detailed description of the features provided.

A couple of things I would like to note:
  • There is a kernel bug in AX 2009 that heavily impacts the SysTableBrowser user experience. It takes around 10 seconds each time you want to browse the contents of a specific table. This bug was fixed with a hotfix rollup 3, so users of AX 2009 without the hotfix might have problems enjoying the DEV_SysTableBrowser tool.
  • In AX 2009 the behavior of SysTableBrowser changed a bit. Instead of re-opening the browser window each time the user changes from All fields to AutoGroup only, now 2 grids with these fields are added from the beginning, and hidden/shown based on user selection. DEV_SysTableBrowser provides much more flexibility when selecting the fields to display, so I was not able to follow the same approach. Thus, see bullet 1
  • I have not added any new AOT nodes to the template in DEV_CreateNewProject tool (Data sets, Report Libraries, etc). I don't think AX developers will invest that much time into SSRS reports and EP, and in these cases they will be able to manually create the remaining group nodes in the project.

Let me know if you have comments, suggestions or ideas for these tools.
Thanks

7 comments:

  1. Hotfix rollup 3 contained a hotfix that handled the slow table browser. Perhaps this is not the same problem that you are describing?
    The changes were made in the SysTableBrowser class in the run method.
    I added a few lines from this rollup and now it is fast.
    New declaration:
    SysDictClass sysDictClass;

    New line:
    dictTable = new DictTable(tableId); (Added below this existing line):
    sysDictClass = new SysDictClass(classnum(FormGridControl));

    And the last lines now look like this:

    if(sysDictClass.hasObjectMethod("autoSizeColumns"))
    sysDictClass.callObject("autoSizeColumns", formGridControl, false);

    formRun.detach();

    /Jonas

    ReplyDelete
  2. Hello Vanya,

    great tool thank you very much!

    I miss a fix from KR3:

    \Classes\SysTableBrowser\run
    if(sysDictClass.hasObjectMethod("autoSizeColumns"))
    sysDictClass.callObject("autoSizeColumns", formGridControl, false);

    Without it's very slow.

    Is it a problem to integrate in your code ?
    I tested with and everything seems ok.

    Best regards
    Michael Niemyer

    ReplyDelete
  3. Thanks for the quick comments, guys.
    I have updated the xpo with the changes from Hotfix Rollup 3.
    Would you please try it out and let me know if it works that way? (I don't have this patch)

    ReplyDelete
  4. Yes, performance looks good now.

    ReplyDelete
  5. Great, thanks for the confirmation, Michael!

    ReplyDelete
  6. Hi Vanya, great work on the table browser!

    You might want to take a look on adding hidden fields to the form as well:
    http://daxrunbase.blogspot.com/2010/04/non-visible-fields-in-table-browser.html

    ReplyDelete
  7. Thanks for the info.
    That's an interesting idea, although I do have a number of concerns about the performance of it.
    Anyway, this might be rather useful for AX 6.0.
    I will take a look at it then.

    ReplyDelete

Please don't forget to leave your contact details if you expect a reply from me. Thank you