How to execute mathematical function in business central

Are you looking for for running some mathematical function in business central then may be this blog post is interesting for you.

In business central new system code unit is provided to execute some important mathematical function.

Build one simple page to show few expressions as below

One can determine following values from this codeunit.

MethodRemarks
PiReturns the value of pi.
EReturns the value of E.
Abs Returns the absolute value of a Decimal number.
AcosReturns the angle whose cosine is the specified number.
AsinReturns the angle whose sine is the specified number.
AtanReturns the angle whose tangent is the specified number.
PowReturns a specified number raised to the specified power.
SQRTReturns the square root of a specified number.
FloorReturns the largest integral value less than or equal to the specified decimal number.
ExpReturns e raised to the specified power.
CeilingReturns the smallest integral value that is greater than or equal to the specified decimal number.

Hopefully you find this helpful to you.

Stay tuned for more updates.

How to add keys in Base table of Business Central

With the release of Wave 1 2021 lot of new feature introduced . One of the new feature is that partners now can add keys in base table with customized field which was not possible earlier

Today we will see how we can do that

First Lets see what is happening is earlier version of business central. In earlier version we can only add the keys with the field added on table extension and we are not able to see the field available in base table for adding in keys

Look at the following example as I created one simple extension in V17 and trying to add key

Now when I try to add the keys in this table extension it will populate only those fields which are added in table extension

In New version of Business central i.e. Wave 1 2021 we can Add more keys with base table fields and use to improve the performance while retrieving or updating records

Now look at the following example for new version .Just created a simple table extension

Now when I try to add the keys in this table extension it will populate all the fields available in base table as below

So that means we can create keys with

  1. Fields from base table
  2. Fields from table extension

Can I create combination of fields from base table and fields from table extension ?

And the obvious answer is no and reasons are simple that both base table and table extension are two different tables in Sql server.

I hope you will find this information useful

So stay tuned for more updates.

Cheers.

How to add XML comments in AL Code :- Business Central

With the release of Business Central Wave 1 2020 XML comments is available in AL code.

If you would like to add documentation to your code then you can use XML documentation .The documentation comment must immediately before the object such as codeunit,table,functions etc.

The syntax for adding XML comments in your code is triple slashes /// followed by one of the supported XML tags. There is IntelliSense support for writing documentation comments. Most importantly providing a template documentation comment when writing the third slash in the triple slash.

These documentation comments are visible when hovering over source symbols.

Advantage :

  1. XML document comment will improve readability ,add useful information about the code implementation and help others take over your code .
  2. With XML comments it also enable intellisense in AL objects that you add in your code as a help to other developers who is going extend your code.

Let sees an example how we can add the xml comments.

Created one simple code unit where we can add documentation comments.

Please note that If you have the showMyCode setting in the app.json file set to false and download an app package; the app package will not contain any XML comments.

Hope this will help you.

How to Use SetLoadFields in Business Central for performance

With the release of Business Central Wave 1 2020 the partial records capability is available.

The partial records capability is allows for loading a subset of normal table fields when accessing the data source based on SQL.

To access the data source we use GET ,FIND NEXT. When we use these methods then runtime it load all fields and will hamper the performance while fetching the records.

Now from business central wave 2 2020 we can use ‘Partial records’ capability.

To accommodate partial records following methods available in business central. These methods are avaaible on RecordRef and Record datatype in AL. These methods are loaded in two groups i.e. Subsequent loads and Current load

MethodDescription
SetLoadFieldsSpecifies a set of fields to be initially loaded when the record is retrieved from its data source.
AddLoadFieldsAdds fields to the current set of fields to be initially loaded when the record is retrieved from its data source.
AreFieldsLoadedChecks whether the specified fields are all initially loaded.
LoadFieldsAccesses the table’s corresponding data source to load the specified fields.

Lets See few examples of these methods

Following example is for summation of Quantity fields from Item Ledger Entry .In this we would like to make calculation of only Quantity fields and not require the others fields to be loaded.

If you see SetLoadFields is call before data fetching operation starts. This will determine which fields needed for Find Set Call.

Advantage of this is that it gives you ability to load only those fields which are required to perform the operation which will make execution of code faster and give more performance. This feature is recommended to use while fetching the records and not for Insert,Modify or Delete operation.

Using the above method we added the required fields but what will happen to other fields which hasn’t been loaded .In such cases platform does an implicit GET and loads the missing fields, called as JIT Loading (Just in Time).

When JIT loading occurs, another access to the data source is required. These operations tend to be faster because they’re GET calls. GET calls can often be served by the server’s data cache or become clustered index seeks on the database.

Iterating over records in the database, enumerator is created based on selected fields and row is fetched when NEXT is called. but certain operations will not follow enumerator like if we passing a record by value and not by VAR .This operation actually creates new copy of the record and original records and copy of the record not share the filters ,selected field for loading. That means to access unloaded fields it need to trigger JIT load and but it will not update enumerator which means for future iterations also require JIT load.

To overcome such situations we can do following

  1. Pass the record reference using VAR.
  2. Call AddLoadFields on the original records before passing by value.
  3. Use SetLoadFields before calling FIND,GET,NEXT.

Hope this will help you to understand for partial records and stay tuned for more updates.

For more updates you can follow my blog on following channels.

Use of implicit ‘with’ will be removed in the future :-Business Central

Though above warning was informed by MS long time back but it has introduced in latest version of AL.

With the update of new version of AL extension this warning is populated in AL code.

Once you update above AL language version then you will find below warning

Now this warning will become error in near future that means we need to correct it anyhow . If your app contain more than 100 pages then it will be too much efforts to make it manually and tedious task.

To make it superfast work we have one extension available in marketplace which will help you to resolve it within seconds.

Once you install the extension then Press ‘F1’ and run following command

‘Fix Implicit with usages’

Just have look at the following file

Now run above command and relax as it will fix the warning in all pages.

Result of the file after running command

It will fix the all warning in all the files.

Hope this will help you

Stay tuned for more update

The ID Range ‘[50000..99999] is not valid : Business Central

Today morning I update AL extension with the latest version as below

After update I found following issue for Per Tenant app and was not able to find any clue for this issue

To resolve the issue decided to roll back to latest update and it works fine but it is not giving the latest updates for AL

Then I decided to ask our beloved community

MVP https://twitter.com/ajkauffmann gave the solution to resolve this

Actually I was doing mistake in App Source Analyzer that I enabled both AppsourceCop and PerTenantExtensionCop for PerTenant App which was not correct

This is actually not correct because we need enable code analyzer like

If developing App within Certified App range (70M) then enable AppsoureCop and if developing app for Tenant then enable PerTenantExtensionCop.

This resolve my issue.

Hope this will help you..

You can go through the twitter thread.

Cumulative Update for Business Central September 2020

Cumulative Update includes all application and platform hotfixes and regulatory features that have been released for Microsoft Dynamics Business Central

MS Dynamics Business Central 2020 Wave 1 (BC16) :- CU 16.5

MS Dynamics 365 Business Central 2019 Release Wave 2(15.10) :- CU 15.10

Business Central Spring Release (BC16) :- CU16

Warning

Before you install a cumulative update in a production environment, take the following precautions:

  1. Test the cumulative update in a non-production environment.
  2. Make a backup of the system or computer where the cumulative update is to be installed.

Stay tuned for more updates…

How to build Multiline Instruction in Business Central

Few days back one of my customer ask me can you display text in bulleted format on page.

Today I will show how I achieved this with very simple way.

Created one page as follows with one field to display instruction in multiline format

On the field set the multiline property to true.

To display to instruction on bullet format created instruction variable as follows

If we concatenate the instruction then it will display in single line so we need to break the line .To break the line used following code unit Type helper.

Lets see the result after publishing

Hope this will help you.

Stay tuned for more.

How to Create Custom Event in Business Central

Looking at the subject there are lot of blogs available but I am writing this based on one of the request from my colleague.

Everybody aware of that whenever you developed an app it need to be extensible and if anybody would like to add or modify any field or additional routing we need to have events which can extend the base functionality.

Step 1 :- Simple Quick action to add event in Business Central

Next step will be we can subscribe the event and add you own code.

It is so simple to add custom event in AL and allow other to extend your functionality.

Hope this will help you.

Stay tuned for more updates.

How to create Custom Notification in Business Central

This blog post I am writing based on request of one of the follower.

Even though notification is not new business central world but today we will see how we will write custom notification and get notified for certain validations.

To create notifications I added following simple scenario that when my page get opened it should show some notification.

Lets see how we can do this.

To generate this notification I have used customer list page and subscribe on OnOpenPageEvent to execute my notification.

In this notification whenever page will get open it will show notification and whenever user click on Contact Us it will redirect to my blog.

Once this piece of code is published and as soon as customer list page opens you will see the result of notification as below

Hope this will help you.

Stay tuned for more..