Zum Inhalt springen
Using date filters in Business Central

How-To Use Month Date Filters

Daniel Gorski
Daniel Gorski 02. Februar 2022
2 Min. Lesezeit

What's the case?

You want to create different Date Filters for full months based on today or your workdate?

Dynamics 365 Business Central offers multiple ways to enter dates and times, including powerful features that accelerate data entry, or help you write complex calendar expressions.
Take a look here:
Working with Calendar Dates and Times


If you are using CM = Current month you will discover an issue:

This is our code example, using these variables:

TodayLbl: Label 'Today: %1\\';
PrevMonthLbl: Label 'Previous Month. From: %1 To: %2\\';
ThisMonthLbl: Label 'This Month. From: %1 To: %2\\';
NextMonthLbl: Label 'Next Month. From: %1 To: %2\\';
Next2MonthLbl: Label 'Next 2 Months. From: %1 To: %2\\';
MessageTxt: Text;

And this is our code:

MessageTxt := StrSubstNo(TodayLbl, Today());
MessageTxt += StrSubstNo(PrevMonthLbl, CalcDate('<-CM-1M>', TODAY()), CalcDate('<CM-1M>', TODAY()));
MessageTxt += StrSubstNo(ThisMonthLbl, CalcDate('<-CM>', TODAY()), CalcDate('<CM>', TODAY()));
MessageTxt += StrSubstNo(NextMonthLbl, CalcDate('<-CM+1M>', TODAY()), CalcDate('<CM+1M>', TODAY()));
MessageTxt += StrSubstNo(Next2MonthLbl, CalcDate('<-CM+2M>', TODAY()), CalcDate('<CM+2M>', TODAY()));
Message(MessageTxt);

And this Message will throw:

Not very useful, right?


Are you aware of the PeriodPageManagement Codeunit?

Calendar: Record Date;
PeriodPageMgt: Codeunit PeriodPageManagement;

And this code:

Calendar."Period Start" := CalcDate('<CM-1M>', TODAY());
PeriodPageMgt.FindDate('<', Calendar, Enum::"Analysis Period Type"::Month);
MessageTxt += StrSubstNo(PrevMonthLbl, Calendar."Period Start", Calendar."Period End");

Calendar."Period Start" := CalcDate('<CM>', TODAY());
PeriodPageMgt.FindDate('<', Calendar, Enum::"Analysis Period Type"::Month);
MessageTxt += StrSubstNo(ThisMonthLbl, Calendar."Period Start", Calendar."Period End");

Calendar."Period Start" := CalcDate('<CM+1M>', TODAY());
PeriodPageMgt.FindDate('<', Calendar, Enum::"Analysis Period Type"::Month);
MessageTxt += StrSubstNo(NextMonthLbl, Calendar."Period Start", Calendar."Period End");

Calendar."Period Start" := CalcDate('<CM+2M>', TODAY());
PeriodPageMgt.FindDate('<', Calendar, Enum::"Analysis Period Type"::Month);
MessageTxt += StrSubstNo(Next2MonthLbl, Calendar."Period Start", Calendar."Period End");
Message(MessageTxt);

And this will determine the correct start- and ending dates of each month:

Happy Coding! 💡


So you can easily create some cues:

how-to
development
business central
date filters
al code
periodpagemanagement
calcdate
E-Invoicing-Formate UBL, CII, ZUGFeRD und Factur-X im Vergleich

UBL, CII, ZUGFeRD, Factur-X: Die E-Invoicing-Formate endlich verständlich erklärt

UBL, CII, ZUGFeRD oder Factur-X – diese E-Invoicing-Formate werden ständig verwechselt. Wir erklären den Unterschied zwischen reinen XML-Formaten und Hybridform

Weiter lesen: UBL, CII, ZUGFeRD, Factur-X: Die E-Invoicing-Formate endlich verständlich erklärt
Weiter lesen: UBL, CII, ZUGFeRD, Factur-X: Die E-Invoicing-Formate endlich verständlich erklärt
E-Invoicing formats UBL, CII, ZUGFeRD and Factur-X compared

UBL, CII, ZUGFeRD, Factur-X: E-Invoicing Formats Finally Explained

UBL, CII, ZUGFeRD or Factur-X – these e-invoicing formats get confused all the time. We break down the difference between pure XML formats and hybrid PDF-plus-X

Weiter lesen: UBL, CII, ZUGFeRD, Factur-X: E-Invoicing Formats Finally Explained
Weiter lesen: UBL, CII, ZUGFeRD, Factur-X: E-Invoicing Formats Finally Explained