Skip to main content
RobertoStefanetti,
MVP BusinessSolutions- NAV
MicrosoftEducationInfluencer
Topics
Development Environments Comparison
OLD Development
Environment
NEW Development
Environment
C/SIDE
+
C/AL
VS Code
+
AL
Object
Designer
.FOB
.TXT
C/SIDE
VS Code Editor
.APP
Powershell /
VS Code
C/SIDE & C/AL
What is “C/SIDE” and “C/AL”
Stands for:
 C/SIDE - Client/Server Integrated Development Environment
 C/AL - Client/Server Application Language
C/AL is the programming language that used within the development environment for Microsoft
Dynamics NAV, and the development environment is called as C/SIDE.
C/AL is a database specific programming language and it primarily used to retrieve, insert, and
modify the records in the dynamics NAV Database. C/AL is extended from the PASCAL language
and original C/AL compiler was written by Michael Nielsen.
When changing the NAV application according to the requirements, developer does not change
the executable s (.exe files), but the "Objects". Dynamics NAV database contain definitions of the each
object and each object contain business logic to run the ERP application.
https://en.wikipedia.org/wiki/C/AL
C/SIDE+C/AL = Old Development Environment
C/SIDE + Object Designer
FINSQL.EXE > Show Objects > Objects: in OBJECT TABLE
C/AL
C/AL editor > Show Business Logic > Code: blob field in
OBJECT TABLE
Programming in C/AL
This section describes where to write C/AL code and how to reuse code.
For more information about how to use system-defined variables, see System-Defined Variables.
For more information about the most frequently used C/AL functions, see Essential C/AL Functions.
Where to Write C/AL Code
Almost every object in Microsoft Dynamics NAV contains triggers where you can add your C/AL code. Triggers exist for the following
objects:
 Tables
Table fields
Pages, including request pages
Reports
Data items
XMLports
Queries
You can initiate the execution of your C/AL code from the following:
 Actions
Menu items
Any object that has an instantiation of the object that contains C/AL code. An example of an instantiation is a variable declaration.
https://msdn.microsoft.com/en-us/library/dd355277(v=nav.90).aspx
Essentials in C/AL
Essentials in C/AL
 Although there are more than 100 functions in C/AL, there are several functions that you will use more
often than the others. This does not mean that the rest of the functions are obsolete or that you will never
use them. However, it does mean that if you are very familiar with this small set of essential functions, you
will be able to accomplish many tasks when you are programming in C/AL. When you want to add more
specialized functionality to your applications, you can learn about more of the functions.
 The topics in this section describe the most common C/AL functions. For more details about all of the C/AL
functions, see C/AL Functions.
FUNCTIONS
 GET, FIND, and NEXT Functions
SETCURRENTKEY, SETRANGE, SETFILTER, GETRANGEMIN, and GETRANGEMAX Functions
INSERT, MODIFY, MODIFYALL, DELETE, and DELETEALL Functions
LOCKTABLE Function
CALCFIELDS, CALCSUMS,FIELDERROR, FIELDNAME, INIT, TESTFIELD, and VALIDATE Functions
Progress Windows, MESSAGE, ERROR, and CONFIRM Functions
STRMENU Function
C/SIDE Replace: Modern Development Environment
http://aka.ms/navdeveloperpreview
https://blogs.msdn.microsoft.com/nav/2016/12/20/announcing-the-preview-of-development-tools-for-dynamics-nav/
https://robertostefanettinavblog.com/2017/07/13/nav-development-preview-updated-documentation/
VS Code+AL = New Development Environment
VS Code (Visual Studio Code)
CODE.EXE > Show Projects > Objects: Files
AL
AL Extension for VS Code > Show Business Logic > Code:
text inside “.AL” file
http://aka.ms/navdeveloperpreview
https://code.visualstudio.com/
VS Code: Open Source, Cross Platform, Git
“VS Code: Open source, cross-platform, multi-language
development environment that puts writing code at its center”
https://code.visualstudio.com/
AL Language extension
https://msdn.microsoft.com/en-us/dynamics-nav/developer/devenv-programming-in-al
https://msdn.microsoft.com/en-us/dynamics-nav/developer/devenv-dev-overview
https://robertostefanettinavblog.com/2016/11/29/microsoft-al-al-language-code-samples-for-developing-extensions/
Programming in AL
https://msdn.microsoft.com/en-us/dynamics-nav/developer/devenv-programming-in-al
AL is the programming language that is used for manipulating data (such as retrieving,
inserting and modifying records) in a Dynamics 365 for Financials database, and controlling
the execution of the various application objects, such as pages, reports, or codeunits.
With AL, you can create business rules to ensure that the data which is stored in the
database is meaningful and consistent with the way customers do business.
Through AL programming, you can:
Add new data or transfer data from one table to another, for example, from a journal table to
a ledger table. Combine data from multiple tables into one report or display it on one form
or page.
Where to write AL code
Almost every object in Dynamics 365 for Financials contains triggers where you can add your
AL code. Triggers exist for the following objects:
Tables, Table fields, Pages, Reports, Data items, XMLports, Queries
AL Methods
https://docs.microsoft.com/it-it/dynamics-nav/developer/methods/devenv-al-method-reference
https://docs.microsoft.com/it-it/dynamics-nav/developer/devenv-essential-al-methods
The AL methods in this section are grouped according to the data type that they support or
according to a category. Each data type topic contains a description of the data type.
Properties
Triggers
Essential AL Methods
Programming in AL
Developing Extensions
HTTP, JSON, TextBuilder, and XML API
Although there are hundreds of methods in AL, there are several methods that you will use
more often than the others. This does not mean that the rest of the methods are obsolete or
that you will never use them. However, it does mean that if you are very familiar with this
small set of essential methods, you will be able to accomplish many tasks when you are
programming in AL. The topics in this section describe the most common AL methods. For
more details about all of the AL methods, see AL Method Reference.
AL Language on Marketplace
https://marketplace.visualstudio.com/items?itemName=ms-dynamics-smb.al#review-details
https://robertostefanettinavblog.com/2017/08/31/vs-code-al-extensions-part-i/
https://robertostefanettinavblog.com/2016/11/29/microsoft-al-al-language-code-samples-for-
developing-extensions/
C/SIDE Vs VS Code
https://msdn.microsoft.com/en-us/dynamics-nav/developer/devenv-reference-overview
Differences in the Development Environments C/SIDE Vs AL Development Env (VS Code)
Coming from the Dynamics NAV Development Environment and C/SIDE, there are some
differences and optimizations that you should familiarize yourself with. The following
sections go through these changes.
C/SIDE VS Code
Keyword Uppercase Keyword Lowercase
.NET Support Native Web Services Types
Object Designer Real-time compiling
Symbol Menu Option Member
File Support File Upload from Stream
Translations in Objects Where Used
Object Designer VS Vs Code Editor
Object Designer VS Code Editor
https://msdn.microsoft.com/en-us/dynamics-nav/developer/devenv-reference-overview
https://github.com/Microsoft/AL
AL - Details
AL https://marketplace.visualstudio.com/items?itemName=ms-dynamics-smb.al
Formatting, syntax highlighting and rich IntelliSense
Support for and snippets to define Codeunits, Pages, Page Extensions, Tables, Table Extensions,
XMLPorts, and Reports
Support for reference by symbols (Shift+F12) to jump to all instances of a specific symbol
Added support for using HTTP and JSON types to access Azure functions and other Web Services
Ability to define a dependency on another extension by listing it in the app.json configuration file
Autogeneration of app.json and launch.json project files
.FOB Vs .APP
Differences between .FOB and .APP Files
.FOB Files .APP Files
PACKAGE: “.FOB” : Financials Objects, standard old
objects package
PACKAGE: “.APP”: Based on Extensions (v. 2.0 - Vs Code)
 .al file, app.json, launch.json
Source code visible in C/SIDE NO
Include standard Objects and standard Code can be
changed
NO
Imported in NAV : C/SIDE Powershell, VS Code
Extensions of standard objects and include additional
business logic for solutions
RobertoStefanetti,
MVP BusinessSolutions- NAV
MicrosoftEducationInfluencer