Editors note: This tip was brought forward from my previous blog and is still as actual as it was back then. Meanwhile the Design Patterns initiative have posted a similar walkthrough on their site.
Number series is a great feature in Navision that allows you to use all kids of numbering methods easilty and also allows the application to work the same everythere,
So how do I implement Number Series in a new table. Let’s go through that step by step. For this example we will use the Item table to copy and paste from.
Step 1 – Create the table.
A table that has number series has a minimum of two fields. A primairy key field of type code length 20. But also a second field to store the number series. This is a code field as well with length 10.
Go to the object designer and create a new Table. The first field will be created manualy like this.
Please call it No. and not something else or otherwise our copy paste actions will fail.
Secondly we will open the item table in the designer as well. Find the No. Series field and copy/paste this.
Now our table looks like this.
Step 2 – Add the code
When you implement number series in your table, there are three required pieces of code. One in the OnInsert trigger, One in the OnValidate of the No. field and a new function that is always called OnAssistedit.
We will copy and paste this code from the item table like this.
When you are done with the copy/paste action your new table should look like this.
Step 3 – The variables
When you now compile your new table you will get an error message like this.
This is because we have not yet declared the nessesairy variables. We will need two of them, the Inventory Setup table and the NoSeriesManagement codeunit. We can also copy and paste this from the item table.
So our variables are like this.
Please notice that you will still receive the same error after this.
Step 4 – Code changes
In order to have the code compile we have to change it a little bit. The code we copied is reading the inventory setup in a function but that is not nessesariy in our case. We will just read it directly.
So go to the C/AL code and do a find and replace on GetInvtSetup by InvtSetup.GET like this.
Step 5 – Save the table (Twice).
Now we need to save the table, but when we try we’ll get this error.
The reason for this is simple to explain. We have created a new field (No. Series) and started using that field in code. But because the table was not saved in between, the compiler does not know that field yet. To solve this we need to save the table without compiling.
And then compile the table from the object designer.
Step 6 – Create your own number series.
If you look closely at the code we just created you’ll see that it uses the field Item Nos. from the inventory setup table. There is a high chance that you will want to use a number series of your own so let’s create one. We will do this in the inventory setup table as well but this can also be any other setup table in Navision.
Open the Inventory Setup table in the obect designer and copy the Item Nos. field like this
And paste it as number 50000. And rename to Test Nos.
We will also add this to the Inventory Setup Form or page
Notice that we create a new (fast) tab for our field. This is best practice.
Run the form or page and populate the number series.
Step 7 – Change the C/AL code
To use this new number series we need to go back to the code in our new table and do another find and replace action. This time replace Item Nos by Test Nos.
And save the table.
Step 8 – The User Interface
Last step in implementing the Number Series functionality is adding it to the user interface. This is done via the OnAssistedit trigger. We will demonstrate both forms and pages.
Create a new form with the form wizzard or page with the page wizzard.
Now go to the code behind the No. field by focussing on the field and press F9. You will see the four triggers, OnLookup, OnValidate, OnDrilldown and OnAssistedit like this.
Our code will go into the OnAssistedit trigger of both the form and page and is copied from form 30. The Item card.
Now when we run the page or form you’ll see that it works and how easy it was to implement.