It seems like yesterday that I wrote this post.
And nowadays the same goes for Windows XP & 2003. It won't work with NAV.
Why, would you ask.
Well, the CTP and BETA versions still worked (client side) on these versions.Microsoft also "supports" them still until 2014. 2003R2 even until 2015.
So what happened?
Most of us know that for example IE9 and 10 won't run on XP and 2003. To this list we can now add dotnet framework 4.5 to this list.
And this was added to 2013.
Hence, it really does not work.
Why 4.5? And not 4.0?
Questions to MS lead to confirmation that is has to do with the stability of the product. Seems like a good reason for me.
NAV 2013 has a new debugger. It allows us to debug the RTC.
But that does not mean that Microsoft has just migrated the debugger from Classic to RTC. No, they've done much more. It's quite a cool and complete debugger that allows you to do much more than we used to.
1. You can debug every user on the service tier from one debug session, including webservices.
2. You can put breakpoints in objects that are higher in the stack hierarchy
3. The debugger is designed as pages in C/AL that allow you to modify the debugger to fit your needs.
In this post I want to briefly touch the last example, since I was aggravated by one small issue that I solved and want to share to prevent this from happening to you.
Because the debugger is now part of the application, it is also translated to your local language.
Now you should know that the Dutch translation in the RTC is to cry. Terrible terminology is used.
This is how the debugger looks in Dutch:
Now I like to use Dutch for the RTC, but I want the debugger to be in English.
This is now an easy task, since we can remove the translation from the objects.
And then the debugger is in ENU.
Except off course the parts that are translated by the RTC itself.
Hopefully more about debugging in a next post
In NAV 2013 we have a new command SETAUTOCALCFIELDS.
What does this command do.
It is used in C/AL like this:
IF Cust.FINDSET THEN REPEAT
UNTIL Cust.NEXT = 0;
This leads to this query in SQL Server:
ISNULL("Customer"."timestamp",@0) AS ISNULL("Customer"."No_",@1) AS "No_",...,
ISNULL("SUB$Balance"."Balance$Detailed Cust_ Ledg_ Entry$SUM$Amount",@77) AS "Balance"
FROM "CRONUS Nederland BV$Customer" AS "Customer" WITH(READUNCOMMITTED)
OUTER APPLY (SELECT TOP (1) ISNULL(SUM("Balance$Detailed Cust_ Ledg_ Entry"."Amount"),@76) AS "Balance$Detailed Cust_ Ledg_ Entry$SUM$Amount"
FROM "CRONUS Nederland BV$Detailed Cust_ Ledg_ Entry" AS "Balance$Detailed Cust_ Ledg_ Entry" WITH(READUNCOMMITTED)
WHERE ("Balance$Detailed Cust_ Ledg_ Entry"."Customer No_"="Customer"."No_")) AS "SUB$Balance"
Hence, a single SQL Statement that joins two tables.
This dramatically changes the teaching that has been done about T-SQL generation in NAV from the last few years.
Also, notice that the SIFT view is not used.
Like a filter, SETAUTOCALCFIELDS keeps being active on a variable until it is reset.
To reset this command Cust.SETAUTOCALCFIELDS should be used. So without any fields, just like resetting a filter with SETRANGE.
Thanks to Luc van Vugt to bring this to my attention.