Skip to main content

Dynamics 365 for operations – Table extensions

Background

Extensions are a new way to add functionality and custom code to the D365 system without changing the standard code. In fact, Microsoft has announced that edit standard elements like those that we have done in the past will not be possible after 2017.
By using extensions, we can achieve the same result by simply extending the standard system => EXTENSIONS.
To read more about the difference between overlaying and extensions follow this link https://ax.help.dynamics.com/en/wiki/customization-overlayering-and-extensions/#extensions

Extending tables

By using table extensions, we can create a new table that adds new fields, field groups, indexes, mappings, relations, methods, subscribe to event handlers and more.
When extending tables we need to follow the naming rule as such: <TABLENAME><_Extension> the compiler understands the _Extensions suffix and knows that the table in question is extending a table from the standard system. This gives us access to public methods of the standard table, the fields, indexes and so on.
Example
Let us say we need to extend the BOM standard table to add some more fields, new methods and subscribe to an event.
First we create a new table as we normally do and to adhere to the naming rule the extended table gets the name BOM_Extension. In our solution explorer, we get a new folder named Table Extensions and there we can see our new table.

Create new table extension


Adding new fields

Here four fields have been added to the BOM_Extension table and then we see the fields from the standard BOM table




Adding new methods and subscribing to events

In order to create new methods for the extended table we need to use a table extension class and the class needs to have the same name as the extended table, in our example the class should be named BOM_Extension. The class should be declared static
All methods must be declared public static and the first parameter MUST be the table that the class is extending. This parameter is though never passed on when calling the method, only the parameters that we add after the table buffer.

See the following screen shot of a simple method in a table extension class

Event handler

When subscribing to events/event handlers you can right-click the event under the Events note on the extended table and select “Copy event handler method”



Then just paste the code into the extension class and add some code that is needed in the event handler. In the following example, the onValidateField event handler is being handled. The Common parameter is the table buffer and the DataEventArgs is the event we are subscribing to. Then in this code example we instantiate the ValidateFieldEventArgs and give it the value of the “e” parameter.




Comments

Popular posts from this blog

2012 Enterprise Portal Development Cookbook

Yes it is here, the most interesting book of the year " Microsoft Dynamics AX 2012 Enterprise Portal Development Cookbook " Check it out my friends http://blogs.msdn.com/b/solutions/archive/2012/07/12/microsoft-dynamics-ax-2012-enterprise-portal-development-cookbook.aspx

SysOperationFramework

I have tried out the new SysOperationFramework of Dynamics Ax 2012 that is going to replace the old RunBase framework. The SysOperationFramework is service based batch framework and it is my feeling at the moment that it will provide us with more possibilities for creating and setting up batch jobs in the real world. There is no need for me to create a full blog about the SysOperationFramework since I am not the first one to try this out. So i will simply refer to another blog post about the SysOperationFramework  http://www.artofcreation.be/2011/08/21/ax2012-sysoperation-introduction/ Thanks to Art Of Creation – Dynamics AX Blog for an outstanding good blog post on the matter Happy batch programming my friends