Sunday, October 09, 2011

Tool: Updating a field value for all selected records on a form

Update:
It looks like I was re-inventing the wheel here.
Turns out that a tool doing exactly the same (and even invoked from the same place on Record info form) already exists and is called "Fill Utility". The problem is that it's disabled by default in the License configuration, so it not available.
More information about how to get it and what it does can be found in this MSDN article


Problem statement:
During a recent customer visit we received a suggestion from the developers working on customizing the customer application to their needs. The suggestion was about being able to modify the value of a certain field on a form for multiple records at once.
As you know, in AX 2012, if we wanted to change a certain property for a number of entities (for example, update the default transfer order overdelivery allowence on a number of items at once), we would have to go through them one by one, which is time consuming and definitely not fun.

Solution:
Using the small example I created we can in a simple and intuitive manner update the selected field value for all the marked records.

It looks something like this:

1.    First, you multi-select the records where a certain field needs to be updated, and open the Record information for them


2.    Then, you click Update, select the field that needs to be updated and put in the new value


3.    After you confirm the changes, all the selected records will be updated with the new value.

Download:
Download the project from my SkyDrive


Issues:
These aren't really issues, just things I did not spend time on.
  1. I did not develop the idea of selecting multiple fields to update at once. Might be a good idea. I just did not want to add more code into this little project. There's however a nice UI for selecting 1 or more fields in the DEV_SysTableBrowser project (link)
  2. I did not spend enough time trying to figure out the validation that should be in place for this. I figured, if people are gonna use it, they know what they are doing.
  3. The project is based on AX 2012. There's only 1 method with code, the rest is form controls. I figured it should be pretty easy to port this to other versions if needed.
If people find this useful, I encourage them to add whatever else modifications. I can also re-post them here on request.


Thanks

4 comments:

  1. This looks a lot like the built-in Fill Utility. Does it do anything it can't?
    To enable Fill utility, make sure the configuration key is turned on.

    As for updating multiple fields at the same time, we created a product internally to do this (which we then made available as a product. http://www.hakasolutions.com/Solutions/SpecializedModules/MUP/ )

    ReplyDelete
  2. Thanks Anonymous, I had no knowledge of this tool before, but it definitely sounds very similar :).
    I have updated the post to link to a description of this tool.

    ReplyDelete
  3. Hi Vanya,

    Does your tool work on InventTable form - InventTableModule data source (e.g. field UnitId)?
    The standard tool 'Fill Utility' does not work on other than InventTable data sources on the InventTable form, at least in AX 2009 (did not check in AX 2012). It would be nice if your tool works there correctly. I could not import it in AX2009 to validate.

    /Vitaliy.

    ReplyDelete
  4. Nope, I just checked, and it does not work either. The problem is that when you multi-select records, you are actually selecting main datasource, which is in this case - InventTable. It is possible to make it work by querying through the joined datasources, but I won't spend time on it, considering that it's a duplicate of the Fill Utility, which I simply did not know about.

    ReplyDelete

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