Well, It’s official. NAV 2016 is released. (You can find it here by the way)
Here’s a quick run through of the “What’s new”, from a technical view (taken from the NAV 2016 Development Environment help).
Mind you, I won’t go into detail too much for this post. But expect a lot of blog posts everywhere in the next few days. I’m sure a lot of NAV enthusiast will start blogging.
- 1 New C/AL Editor
- 2 XMLPorts: Multiple Namespaces
- 3 New Function types
- 4 Addition support for other numeric types in Queries
- 5 Timestamps
- 6 Automatic deployment of Add-ins
- 7 64 bit client
- 8 Test Suite
- 9 Camera and Location
- 10 SQL Server authentication
- 11 Running NAS as administrator
- 12 New C/AL Functions
- 13 New C/AL Properties
- 14 New C/AL Statements
- 15 Conclusion
New C/AL Editor
Oh boy, this one is very nice… Completely renewed with IntelliSense, Improved syntax highlighting and colorization.
Here’s a little preview:
look at that “Autocomplete” 🙂
New shortcuts for accessing globals/locals directly (CTRL+G and CTRL+L)
Did you notice the new icon in the top? Here’s a closeup:
XMLPorts: Multiple Namespaces
Before, you could only add 1 namespace, there is now a possibility to add multiple namespaces.
New Function types
Instead of using IF CODEUNIT.RUN THEN, you can now use IF Codeunit.TryFunction THEN
This will clean up a lot of codeunits, and make code only more readable.
Well, this is really great… Remember my post about PRS?
Here I talked about hooks, by only adding 1 line of code in the Insert trigger for example. This is no longer necessary, we can subscribe to events, which will make sure our code is executed, without even touching the default NAV object!
Addition support for other numeric types in Queries
Before, we could only do a count / sum / … on a decimal field. Now, we can also do these aggregate functions on Integer, BigInteger and even Duration field types.
I think most of you will know that every record contains a Timestamp field on SQL Server for the NAV tables?
It’s automatically managed by NAV and contains the timestamp (duh) of the last change. It is used as a version number of the record. Now, we can view these fields in NAV, by adding a BigInteger field, and changing the property “SQL Timestamp” to Yes.
Now we could keep track of changed records we need to do something with, by storing the last processed Timestamp.
Mind you, the field is read only if “SQL Timestamp” is set to yes!
Automatic deployment of Add-ins
With NAV 2016 we have the possibility of adding our add-ins as a zip file to the add-in table. NAV will make sure they get deployed to the clients.
It will also be aware of the different versions.
64 bit client
We also have a 64 bit windows (RTC) client from now on.
It’s back! The last release we got was an NAV2013 version. But now we have a completely new test suite.
Camera and Location
For the table and phone client types, we can now use the camera and the GPS.
SQL Server authentication
The instance can now connect using an SQL Server login instead of a windows login.
Running NAS as administrator
When running a NAS, the user the nas runs as, needs to be added as a user in NAV. Now, if that user is running with administrator rights, it automatically is granted the SUPER permission set.
New C/AL Functions
Returns the client type which is executing the code, we have following types:
CurrentCompany (on a record)
returns the company the record is in (for when you had done a ChangeCompany)
IsTemporary (on a record)
On a record… Before, we had to load the record into a RecordRef and see if it was temporary, no more of this.
RecordID (on a record)
Again… On a record… I can already see use cases, and code thinning.
New C/AL Properties
Scope (on an action)
must an action be shown on a repeater or rather on a page, this is applicable on web, tablet or phone client
SQL Timestamp (on a field in a table)
See short description above
Table Type (on a table)
CRM or ExternalSQL, linked object seems gone and replaced by ExternalSQL
New C/AL Statements
oh yes, there are even a few new ones of these:
well, didn’t see this coming 🙂
we can now run a foreach on a DotNet object, you can loop through a DotNet collection or array with this one
Something like this:
mylist : DotNet System.Collections.Generic.List element : Text // Instantiate the .NET Framework collection object mylist := mylist.List(); // Populate the collection mylist.Add('Item 1'); mylist.Add('Item 2'); mylist.Add('Item 3'); mylist.Add('Item 4'); // Iterate through the collection FOREACH element IN mylist DO BEGIN MESSAGE(element); END;
This goes together with the foreach, but will also work on repeat, while and for iterations!
IF FINDSET THEN REPEAT IF FIELD = 'X' THEN BREAK; UNTIL NEXT = 0;
Well, this adds a lot of new functionality. And maybe for some people some issues…
If you have ever used RecordID as variable name, or even Foreach or break, you might want to update your code BEFORE upgrading. You might run into problems otherwise.
In any case. Looking forward to working with NAV 2016. I hope everyone else is as well!
I’m sure we’ll get used to the new functionality in no time. And maybe discover little other features not explicitly mentioned. Stay tuned.