Avanserte periodeformler
En oversikt over avanserte periode- og datoformler. Forstå de ulike byggeklossene, hvordan du setter sammen egne formler, og gir deg praktiske eksempler for både periode- og datobaserte behov. Gir også en oversikt over de innebygde periodefunksjonene i Report Designer.
Periode vs. dato - hva er forskjellen?
En periode er en hel måned (202201 = januar 2022). En dato er en bestemt dag (01.01.2022). Når et felt krever dag-nøyaktighet - som forfallsdato - bruker du dato-formel . Kjenner du ikke parameternavnet, finner du det via forstørrelsesglasset på filteret ditt, som tar deg til oppslagsvinduet. Her står navnet mellom krøllparantesen. Du finner det også på excel-båndet OneStop Reporting når du går til dialogboksen “rapportparameter”.
Oppbygning av formler
Alle formlene følger samme mønster: Du tar utgangspunkt i en periode eller en dato, og legger til kommandoer som flytter eller utvider periodeintervallet. Forstår du disse byggeklossene, kan du lese og sette sammen formlene du trenger. En formel skal alltid starte med en venstrevendt krøllparantes {, og avsluttes med en høyrevendt krøllparantes }.
Tommelfingerregel: Periode-formler (måned, f.eks. 202201) har ikke apostrof rundt seg. Dato-formler (med .SqlDate) skal ha apostrof: ‘{…}’.
Perioder og datoer har noen ulike byggeklosser og er derfor delt opp i to ulike tabeller under. Merk at det for begge formeltyper er mulig å benytte statiske verdier for perioder eller datoer dersom du ikke ønsker å basere beregningen på et dynamisk parameter.
Slik er en periodeformel bygget opp
Brukes når dimensjonen er en periode. Bytt ut Parameter med parameternavnet ditt.
| Byggekloss | Hva den gjør |
| PeriodCalc.GetPeriod(Parameter) | Utgangspunktet som henter perioden som rapporten kjøres for. Parameter byttes ut med navnet på periodeparameteren din (f.eks. Regnskapsperioder). |
| .AddYears(X) | Flytter X år fram (positivt tall) eller bakover (negativt tall). .AddYears(-1) = i fjor. |
| .Add(X) | Flytter X måneder/perioder. Add(-1) = forrige måned. |
| .QuarterStart / .QuarterEnd | Finner kvartalets start eller slutt basert på angitt periode |
| .WholeYear | Utvider til å dekke hele året fra januar til desember. |
| .YearStart / .YearEnd | Hopper til første / siste periode i året. |
| .Extend(X) | Utvider et intervall med X måneder utover startpunktet i formelen. Extend(2) etter en startmåned gir 3 måneder totalt = ett kvartal. |
| .FiscYearToDate | Henter hittil i år basert på periodeparameteret |
| .LastYearToDate | Henter hittil i fjor basert på periodeparameteret |
| .SetIndex(X) | Setter perioden til måned nr. X i året (1 = januar, 4 = april osv.). Brukes for eksempel til å treffe et bestemt kvartal. |
| : (kolon) | Lager et intervall mellom to uttrykk: {start}:{slutt}. |
Eksempler på periode-baserte formler
| Beskrivelse | Formel |
| Hele året i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X).WholeYear} |
| Første periode i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X).YearStart} |
| Siste periode i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X).YearEnd} |
| Q1 i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X).YearStart.Extend(2)} |
| Q2-Q4 i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X).YearStart.SetIndex(X).Extend(2)} |
| Gjenværende perioder i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X).Add(1)}:{PeriodCalc.GetPeriod(Parameter).AddYears(X).YearEnd} |
| Denne perioden i år X | {PeriodCalc.GetPeriod(Parameter).AddYears(X)} |
| Gjeldende periode | {PeriodCalc.CurrentPeriod} |
| Rullerende fra X til Y | {PeriodCalc.GetPeriod(Parameter).Add(X).Extend(Y)} |
Du vil vise 2 års rullende bakover. Da må du først trekke fra 1 mnd og utvide (Extend) med 23 mnd. Her vil X få verdien -1 og Y får verdien -23. Formelen vil se slik ut: {PeriodCalc.GetPeriod(Regnskapsperioder).Add(-1).Extend(-23)}
Slik er en dato-basert formel bygget opp
Brukes når dimensjonen er en dato (bilagsdato, forfallsdato, transaksjonsdato) framfor en regnskapsperiode. Bytt DateParameter med navnet på datoparameteret ditt. Disse må ha apostrof og .SqlDate.
| Byggekloss | Hva den gjør |
| PeriodCalc.Now | Bruker dagens dato basert på serverens klokke som er UTC. Brukes når du vil regne ut fra «i dag» i stedet for en valgt periode. |
| .AddYears(X) | Flytter X år fram (positivt tall) eller bakover (negativt tall). .AddYears(-1) = i fjor. |
| .AddMonths(X) | Flytter X måneder/perioder. AddMonths(-1) = forrige måned. |
| .AddDays(X) | Flytter X dager. |
| .YearStart / .YearEnd | Hopper til første / siste periode i året. |
| .WeekStart | Hopper til starten av uken (mandag i de fleste oppsett - se merknad under uke-formlene). |
| .MonthStart / .MonthEnd | Hopper til første / siste dag i måneden. |
| .SqlDate | Formater resultatet som en dato (åååå-mm-dd). Må med på alle dato-baserte formler. |
| : (kolon) | Lager et intervall mellom to uttrykk: {start}:{slutt}. |
Eksempler på dato-baserte formler
DateParameter = navn på periodeparameter. Parameternavn fungerer med og uten alfakrøll. Husk å starte og avslutte formelen med apostrof.
| Beskrivelse | Formel |
| I dag: | ‘{PeriodCalc.Now.SqlDate}’ |
| Flytt X år: | ‘{DateParameter.AddYears(X).SqlDate}’ |
| Flytt X måneder: | ‘{DateParameter.AddMonths(X).SqlDate}’ |
| Flytt X dager: | ‘{DateParameter.AddDays(X).SqlDate}’ |
| Gårsdagen i fjor: | ‘{DateParameter.AddYears(-1).AddDays(-1).SqlDate}’ |
| Denne ukens dager (fra ukestart til i dag): | ‘{PeriodCalc.Now.WeekStart.SqlDate} : {PeriodCalc.Now.SqlDate}’ |
| Til månedsslutt: | ‘{DateParameter.MonthEnd.SqlDate}’ |
| Fra månedsstart: | ‘{DateParameter.MonthStart.SqlDate}’ |
| Til/fra årsslutt og årsstart: | ‘{DateParameter.YearEnd.SqlDate}’ |
| Forfaller innen 30 dager: | ‘{DateParameter.AddDays(30).SqlDate}’ |
| I dag-søndag i samme uke. Henter resten av uken | ‘{PeriodCalc.Now.SqlDate}: {PeriodCalc.Now.WeekStart.AddDays(6).SqlDate}’ |
| Mandag-søndag (hele inneværende uke) | ‘{PeriodCalc.Now.WeekStart.SqlDate}: {PeriodCalc.Now.WeekStart.AddDays(6).SqlDate}’ |
Du vil vise neste årsstart til siste dag i 2026 med en statisk dato: ‘{DateParameter.YearEnd.AddDays(1).SqlDate}:2026-12-31’
Sjekk hvilken dag uken starter på
Avhengig av ditt ERP system kan ukesstart beregnes ulikt, hvor noen beregnes i SQL og andre hentes fra kalender i ERP. Derfor vil søndag regnes som ukesstart hos noen, og andre mandag. Kjør derfor rapporten på en kjent dato og bekreft at start-/sluttdatoen lander på riktig dag for din rapportering. Treffer den feil, juster tallet i AddDays(..) tilsvarende.
Oversikt over innebygde periodefunksjoner i Report Designer
I tabellen under finner du en oversikt over periodefunksjonene som finnes i ReportDesigner. Disse formlene kan du jobbe videre med og tilpasse til ditt behov om du trenger andre periodevisninger. Bruker du formlen i et filter skal du fylle i navnet på periodeparameteret mellom klammene [ ]. Alfakrøllen før paramternavnet trenger ikke være med, men det fungerer både med og uten.
| Beskrivelse | Formel |
| År og perioder | |
| Hele inneværende år | {PeriodCalc.GetPeriod([]).WholeYear} |
| Hele i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).WholeYear} |
| Hele neste år | {PeriodCalc.GetPeriod([]).AddYears(1).WholeYear} |
| Hele året, 2 år tilbake | {PeriodCalc.GetPeriod([]).AddYears(-2).WholeYear} |
| Hele året, 3 år tilbake | {PeriodCalc.GetPeriod([]).AddYears(-3).WholeYear} |
| Første periode i år | {PeriodCalc.GetPeriod([]).YearStart} |
| Første periode neste år | {PeriodCalc.GetPeriod([]).AddYears(1).YearStart} |
| Siste periode i år | {PeriodCalc.GetPeriod([]).YearEnd} |
| Første periode i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).YearStart} |
| Siste periode i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).YearEnd} |
| Siste periode neste år | {PeriodCalc.GetPeriod([]).AddYears(1).YearEnd} |
| Forrige periode | {PeriodCalc.GetPeriod([]).Add(-1).Extend(0)} |
| Perioden i år | {PeriodCalc.GetPeriod([])} |
| Periode i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1)} |
| Denne perioden 2 år siden | {PeriodCalc.GetPeriod([]).AddYears(-2)} |
| Denne perioden 3 år siden | {PeriodCalc.GetPeriod([]).AddYears(-3)} |
| Denne periode neste år | {PeriodCalc.GetPeriod([]).AddYears(1)} |
| Hittil i år (YTD) | {PeriodCalc.FiscYearToDate([])} |
| Hittil i fjor (LYTD) | {PeriodCalc.LastYearToDate([])} |
| Alle perioder hittil | {PeriodCalc.GetPeriod([0])}:{PeriodCalc.GetPeriod([])} |
| Alle perioder til siste periode i fjor | {PeriodCalc.GetPeriod([0])}:{PeriodCalc.GetPeriod([]).AddYears(-1).YearEnd} |
| Resterende perioder i år | {PeriodCalc.GetPeriod([]).Add(1)}: {PeriodCalc.GetPeriod([]).YearEnd} |
| Resterende perioder i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).Add(1)}: {PeriodCalc.GetPeriod([]).AddYears(-1).YearEnd} |
| Kvartaler | |
| Q1 i år | {PeriodCalc.GetPeriod([]).YearStart.Extend(2)} |
| Q1 i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).YearStart.Extend(2)} |
| Q2 i år | {PeriodCalc.GetPeriod([]).SetIndex(4).Extend(2)} |
| Q2 i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).SetIndex(4).Extend(2)} |
| Q3 i år | {PeriodCalc.GetPeriod([]).SetIndex(7).Extend(2)} |
| Q3 i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).SetIndex(7).Extend(2)} |
| Q4 i år | {PeriodCalc.GetPeriod([]).SetIndex(10)}:{PeriodCalc.GetPeriod([]).YearEnd} |
| Q4 i fjor | {PeriodCalc.GetPeriod([]).AddYears(-1).SetIndex(10)}:{PeriodCalc.GetPeriod([]).AddYears(-1).YearEnd} |
| Dette kvartalet | {PeriodCalc.QuarterStart([])}:{PeriodCalc.QuarterEnd([])} |
| Dette kvartalet i fjor | {PeriodCalc.QuarterStart([]).AddYears(-1)}:{PeriodCalc.QuarterEnd([]).AddYears(-1)} |
| Forrige kvartal | {PeriodCalc.QuarterStart([]).Add(-3)}:{PeriodCalc.QuarterEnd([]).Add(-3)} |
| Forrige kvartal i fjor | {PeriodCalc.QuarterStart([]).AddYears(-1).Add(-3)}:{PeriodCalc.QuarterEnd([]).AddYears(-1).Add(-3)} |
| Neste kvartal | {PeriodCalc.QuarterStart([]).Add(3)}:{PeriodCalc.QuarterEnd([]).Add(3)} |
| Neste kvartal i fjor | {PeriodCalc.QuarterStart([]).AddYears(-1).Add(3)}:{PeriodCalc.QuarterEnd([]).AddYears(-1).Add(3)} |
| Hittil i kvartal | {PeriodCalc.QuarterStart([])}:{PeriodCalc.GetPeriod([])} |
| Hittil i kvartal i fjor | {PeriodCalc.QuarterStart([]).AddYears(-1)}:{PeriodCalc.GetPeriod([]).AddYears(-1)} |
| Rullende perioder | |
| 3 måneder rullende (-1 til - 3) | {PeriodCalc.GetPeriod([]).Add(-1).Extend(-2)} |
| 3 måneder rullende (neste 3) | {PeriodCalc.GetPeriod([]).Add(1).Extend(2)} |
| 3 måneder rullende (+4 til +6) | {PeriodCalc.GetPeriod([]).Add(4).Extend(2)} |
| 3 måneder rullende (+7 til +9) | {PeriodCalc.GetPeriod([]).Add(7).Extend(2)} |
| 3 måneder rullende (+10 til +12) | {PeriodCalc.GetPeriod([]).Add(10).Extend(2)} |
| 12 måneder rullende, bakover (forrige måned og 11 før) | {PeriodCalc.GetPeriod([]).Add(-1).Extend(-11)} |
| 12 måneder rullende, bakover, inkl. inneværende | {PeriodCalc.GetPeriod([]).Add(0).Extend(-11)} |
| 12 måneder rullende, framover | {PeriodCalc.GetPeriod([]).Add(1).Extend(11)} |
| 12 måneder rullende framover, inkl. inneværende | {PeriodCalc.GetPeriod([]).Add(0).Extend(11)} |
| 24 måneder rullerende (denne periode til +23) | {PeriodCalc.GetPeriod([]).Add(0).Extend(23)} |
| 24 måneder rullerende, bakover, (denne periode til -23) | {PeriodCalc.GetPeriod([]).Add(0).Extend(-23)} |
Slik beskriver du et nytt behov
Trenger du en formel som ikke står her, gi en beskrivelse med informasjonen nedenfor, så får du et forslag tilbake fra Gaia. Jo mer konkret informasjonen er, jo bedre treffer formelen første gang.
- Periode eller dato?
Filtrerer du på en regnskapsperiode (hel måned) eller en dato (bestemt dag, som forfallsdato)? Dette avgjør hele oppbygningen. - Hva er utgangspunktet?
Skal formelen regne ut fra perioden rapporten kjøres for, eller fra dagens dato? - Enkeltperiode eller intervall?
Vil du ha én periode/dag, eller et spenn fra-til (som «de siste 12 månedene»)? - Hvilken forskyvning?
Beskriv bevegelsen i klartekst - «forrige kvartal», «samme måned i fjor», «fra mandag til i dag». Ta gjerne med navnet på parameteren din hvis du kjenner det.
Eksempel på en god bestilling
«Dato-basert, regn fra i dag, jeg vil ha et intervall fra første dag denne måneden fram til dagens dato. Parameteret heter Bilagsdato.» }