As the webmaster of the Dynamics User Group for almost 18 years I have seen quite a lot of questions from confused and frustrated new developers who simply don’t understand Navision. “Why isn’t NAV and C/AL like the development languages they know, why isn’t it more like Pascal, Basic, C++ or even C#?”. Today nobody asks about Pascal or Basic anymore, but 18 years ago they were both quite common.
Navision always had its own IDE (integrated development environment) called C/SIDE (originally short for client/server integrated development environment) and didn’t use Visual Studio as the development platform. This environment was tightly integrated into the (classic) client and specially optimized for ERP development. With the release of NAV 2013 the classic client is “dead”, only the development part of the classic client remains – now called “Microsoft Dynamics NAV Development Environment”. And this is still where all NAV development is done, with the exception of reports, where the report layouts is developed in Visual Studio using RDL.
This blog post is the first in a series of posts with the purpose of helping especially Dynamics NAV developer newbies with some of the most frequently asked questions. If you have a suggestion to topics I should write about, then please write it in the comments below. If it’s a general question then I will put it on the list to be included in a future post. But I please don’t ask any urgent questions. Urgent and non-general questions should be asked in the forums: http://dynamicsuser.net/forums/navision.aspx
Do you want to become a NAV developer or a NAV programmer?
I know many people would say that a developer and a programmer is the same. But I don’t think so. You can rather easily turn a “classic” C programmer into a NAV programmer by learning them C/AL. But becoming a NAV developer takes more time. It requires that you besides knowing the actual programming (C/AL) also have a much broader understanding of NAV. That you know both how it works from the users point of view and more important why it works the way it does. A Dynamics NAV developer should also have a good knowledge of ERP/accounting and business management in general. All NAV developers needs to understand the concepts of debit/credit.
Without this knowledge, then you’re often not able to fully understand the requirements you receive from the customers and/or consultants and come up with the best way to solve this requirement. You not only have to fulfill their requirements in a good technically way, but also in a way so that it is easy to use and doesn’t conflict with existing functionality.
The NAV developer needs to be able to say “No” to the client/consultant, if they come up with a requirement. They need to be able to come up with alternative solutions or work-a-rounds. Why spend 10 hours creating a new functionality, if you can simplify the requirement and use existing functionality?
So if a NAV programmer is someone who is able to write NAV code based on a detailed design specification, then the developer someone who is also able write the design specification. Which one do you want to become?
How to start with NAV development?
I therefor always suggest a new NAV developer that they start by learning how to use Dynamics NAV. Install the demo database, and then start using it. If you’re a new NAV developer working for a partner and you have never worked with NAV before, then you should really follow one of the implementation consultants when he/she helps the customer setup a new database. Be a part of the test-group. Create g/l accounts, customers, orders, post invoices, register payments etc. And always ask your self “What if I did this?”.
A good way is also to follow the basic NAV training like “Dynamics NAV Introduction” and “Dynamics NAV Financial Management” or similar. Taking the “Dynamics NAV Developer” training is of course also a good idea, especially if your plan is to get the NAV developer certification. I know many partners would say that your focus is to get the NAV developer certification. But in my opinion then the certification in it self doesn’t really say anything about the knowledge of the developer, except that he/she might have been able to remember the answer to some standard questions. Personally I would prefer a developer with 1-2 years actual experience, then someone with a certification and less experience.
There are also a lot of different books available today with the purpose of learning you how to do NAV development. Most are written by my fellow MVP’s and they are all very good. So you should check out Amazon or your local IT book store, if you want to see which ones to buy.
When you have started using the system and feel comfortable with it, then start turning on the debugger. This way you can see exactly what happens when you use the system. You can see which objects are accessed, which code it executes and in which order.
You should see the debugger as your best friend and tutor into NAV development. And it doesn’t matter if you’re a new developer or an experienced developer. Don’t see it just as a tool to debug errors!
If you are developing to Dynamics NAV 2009 to the Role Tailored Client (RTC) then the debugger will not work here! With NAV 2009 you need to debug using the classic client. With Dynamics NAV 2013 Microsoft released a new debugger that works now with the RTC (now just called the Windows client). I’m going to dive more into how to use the debugger both in the classic client and in NAV 2013 in a later blog post.
The standard system
So the debugger helps you to get familiar the standard system. Because when you know which code is executed, then it’s also much easier to be able to customize the system.
So if you’re asked to add a new field to the sales order and make sure that this field is transferred to the posted sales invoice, then you can use the debugger to see how the existing fields are transferred. And you will know exactly which objects to modify.
In the user group forums what most new developers want when asking a development question is examples. How do I do this or that?
And the standard system is full of examples. When you are familiar with the standard functionality, then it’s easy to identify similar functionality to what your development task’s requirement. Debug this functionality and then browse the objects, check the code and properties of the standard functionality and then eventually copy whatever code you need. Like if you need a new a new field which is almost similar to a standard field, then it’s easier to copy an existing field and the code related to this field and modify it, than to create it from scratch.
How to optimize your use of the NAV developer forums?
As a developer you can get a lot of help from the other members of the Dynamics User Group. We often see new NAV developers start using the NAV developer forum as soon as they get their first development assignment. And sometimes doing a full copy-paste from their development assignment, before they have taken the time to understand the assignment themselves. Whereas most of our members love to help you with your specific problems, then nobody really wants to do your job for you. So that’s not the way to use the forums. Often such question will not even be answered, at least not as fast as you want.
Always understand your own question before asking it.
When posting a question you should try to make the post as short as possible, but at the same time detailed and easy to read. And always mention the product version, as there might be big difference in how to solve a problem in Navision 3.70 or Dynamics NAV 2013. Don’t simply ask “How do I do this?” but write something like “I consider doing it this or that way. But I’m having a problem understanding how to do this (be specific). Is this a good way to do it, or is there a different way it could be done”. This is of course only an example. But the idea is for you to ask your questions so that they can be answered without taking too much time from your fellow member. In general then posts which requires too much time to answer are less likely to get a quick answer.
The next post in this series will be about the different objects in NAV, but especially about the table designer. And how to create and customize tables and fields.