Skip to main content

msdyn365bc Preprocessor Directives - Conditional Directives.

Hi Readers,

In the Introduction article of series we understand different types of Preprocessor  directives available in Business Central.

Preprocessor Directives are available starting Business Central 2020 Release Wave 2. 

You can read other articles in this series using this link.

In this article we will understand how to use Conditional Directives.

As name suggest with conditional directives this allows you to compile your code conditionally.

What is conditional directives?

  • A conditional resembles in some ways an if statement, but it is important to understand the difference between them. 
  • The condition in an if statement is tested during the execution of your program. Its purpose is to allow your program to behave differently from run to run, depending on the data it is operating on. 
  • The condition in a preprocessing conditional directive is tested when your program is compiled. Its purpose is to allow different code to be included in the program depending on the situation at the time of compilation.

The following conditional preprocessor directives are supported in AL.
  • #if - Specifies the beginning of a conditional clause.
  • #else - Specifies a compound conditional clause.
  • #elif - Combines else and if.
  • #endif - Specifies the end of a conditional clause that begins with #if.
Conditional Directives, works with Symbols.  And Symbol works like - 
  • A Symbol return true/false.
  • Symbol can be defined  beginning of a source file.
  • Scope of the specific symbol is the file that it is defined within.
  • Symbol can be global for the extension.
How to Define a Symbol?
  • To Define a Symbol (set to True) use #define.
  • To Undefine a Symbol (set to False) use #undef.
  • To use a Global Symbol for extension use - preprocessorSymbols in app.json.
  • preprocessorSymbols - Can be used to define one or multiple symbols.
Defining a Symbol?

A symbol can either be local or global as shown below.

How To use Symbols?

In Next article in this series, we will discuss about another preprocessor directives with examples. 

If you have any questions, add as comments to this article.

Saurav Dhyani


Popular posts from this blog

Send Mail with Attachment From Navision.

Hi all, We have seen how to save a report into PDF and how to send mail to a customer. Let's link these two post in one i.e. Mailing statement to a customer into PDF Format. This article is part of the Series. Please Refer  Table of Content here . If you have the old objects set let me brief you what I will be changing - 

BC 21 and Higher - PowerShell Cmdlet (Replacement of Business Central Administration).

Hi Readers, As discussed in last article about deprecating of Business Central Administration, there are few common actions that we use in administration till Business Central 20. For our on-prem customers, we will still require doing activities. As Microsoft suggest we need to start using PowerShell cmdlet.    Let's see how to do those via PowerShell, or Administration Shell. I will be keep adding commands as you comment to this article.

MSDYN365BC - Data Upgrade To Microsoft Dynamics 365 Business Central on premises.

Hi Readers, We have already talked about the number of steps for upgrading to Business Central on Premises from different NAV versions. After that article, I received multiple requests for an article which list down steps for Data Migration. In this article, we will discuss steps of data migration to MSDYN365BC (on-Prem) from NAV 2017. For this article, I am considering a Cronus Demo Database without any customization. For an actual upgrade project, we will have to complete object merge using compare and Merge process. After the Merge Process, the next step is data migration. Let's discuss those steps. Direct Upgrade to Microsoft Dynamics 365 Business Central (on-Prem) is from following versions - 1. NAV 2015. 2. NAV 2016. 3. NAV 2017. 4. NAV 2018.