While I am working with the modern development environment, I am going to document limitations or other issues that I am finding. There are a lot of blog posts out there discussing how to get started or is it good or bad. I am not going to go into this discussion – it is what it is and we will adapt (basically just like we did when we started using RTC or the new RDL report layout).
I will continue posting smaller blog posts to show what else is not available when I am running into issues. For now, lets get started.
You heard right. There is no .NET Interop available and there are currently no concrete plans to allow this. While this can be good or bad, I personally have no problem with it, if the language gets extended more so we don’t need the “rudimentary implementation” of .NET interop that Dynamics NAV had. As replacement of .NET Interop, Microsoft has added new types to AL, which are mainly to handle Json, XML Documents, as well as web requests. You can find a detailed description here.
This is a bigger limitation: Currently, there is no support to place Control Add-Ins onto pages is AL. While this is a limitation due to the web client not being able to run .NET Control Add-Ins, JS Add-Ins would work and should be allowed. It seems to be that this is on the roadmap, but not available yet.
You could always define permissions in objects to grant explicit permissions for objects that you were using. This currently does not work completely. You can only grant permissions for objects that are part of your extension. For instance, if you want to give permissions to table 27, this won’t work. It seems to me that this is a bug and probably will be fixed eventually.
For now, what you can do is: Define a new object with the type table extension and define this in your project. Do not make any changes to the actual table, just define the base object as shown below. Since now table 27 is available in the project, you can also now define permissions for it from any of your objects.
tableextension 70000000 ItemExtension extends Item
// Add changes to table fields here
It was just added recently to NAV, now it is gone again. You do not have ForEach as part of the AL language. I am hoping it does come back eventually, but for now, you will have to use the For … To construct.
Access to Stock Codebase
You do not have access from your extensions anymore to all of the global functions in all objects from the base application. Now functions are declared as [External] in the base application and only those are available in the symbols, which are used to generate the available functionality in AL/your extensions. This is a huge limitation going back to the same discussion with events, but it also makes it safer for the user – since now you cannot just easily modify things that should not be changed. The biggest problem that I am seeing right now is that there is currently no mechanism in place to submit additional requests for external functions. I hope it will change.
This is all for now, I will post more when I find some more time and gather more limitations.