Norsk

Avanserte periodeformler

Bruk avanserte formler for å automatisere rullende perioder og dynamiske datoberegninger.

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.

ByggeklossHva 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 / .QuarterEndFinner kvartalets start eller slutt basert på angitt periode
.WholeYearUtvider til å dekke hele året fra januar til desember.
.YearStart / .YearEndHopper 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.
.FiscYearToDateHenter hittil i år basert på periodeparameteret
.LastYearToDateHenter 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

BeskrivelseFormel
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.

ByggeklossHva den gjør
PeriodCalc.NowBruker 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 / .YearEndHopper til første / siste periode i året.
.WeekStartHopper til starten av uken (mandag i de fleste oppsett - se merknad under uke-formlene).
.MonthStart / .MonthEndHopper til første / siste dag i måneden.
.SqlDateFormater 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.

BeskrivelseFormel
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.

BeskrivelseFormel
Å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.

  1. Periode eller dato?
    Filtrerer du på en regnskapsperiode (hel måned) eller en dato (bestemt dag, som forfallsdato)? Dette avgjør hele oppbygningen.
  2. Hva er utgangspunktet?
    Skal formelen regne ut fra perioden rapporten kjøres for, eller fra dagens dato?
  3. Enkeltperiode eller intervall?
    Vil du ha én periode/dag, eller et spenn fra-til (som «de siste 12 månedene»)?
  4. 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.» }

Sist endret 24.08.2026