Del via


Formelspråk i elektronisk rapportering

Elektronisk rapportering (ER) gir en kraftig datatransformasjonsopplevelse. Språket som brukes til å uttrykke de nødvendige datamanipulasjonene i ER-formeldesigneren, ligner på formelspråket i Microsoft Excel.

Grunnleggende syntaks

ER-uttrykk kan inneholde én eller flere av følgende elementer:

Konstanter

Når du utformer uttrykk, kan du bruke tekst og numeriske konstanter (dvs. verdier som ikke er beregnet). Uttrykket VALUE ("100") + 20 bruker for eksempel den numeriske konstanten 20 og strengkonstanten "100", og returnerer den numeriske verdien 120.

ER-formeldesigneren støtter avbruddssekvenser. Derfor kan du angi en uttrykksstreng som skal håndteres på en annen måte. Uttrykket "Leo Tolstoy ""War and Peace"" Volume 1" returnerer for eksempel tekststrengen Leo Tolstoy "Krig og fred" Del 1.

Operatører

Tabellen nedenfor viser de aritmetiske operatorene som du kan bruke til å utføre grunnleggende matematiske operasjoner, for eksempel addisjon, subtraksjon, multiplikasjon og divisjon.

Operator Betydning Eksempel
+ Tillegg 1+2
- Subtraksjon, negasjon 5-2, -1
* Multiplikasjon 7\*8
/ Inndeling 9/3

Tabellen nedenfor viser sammenligningsoperatorene som støttes. Du kan bruke disse operatorene til å sammenligne to verdier.

Operator Betydning Eksempel
= Equal X=Y
> Greater than X>Y
< Less than X<Y
>= Større enn eller lik X>=Y
<= Mindre enn eller lik X<=Y
<> Er ikke lik X<>Y

Du kan også bruke et &-tegn som en tekstsammenkoblingsoperator. På denne måten kan du koble sammen én eller flere tekststrenger til én enkelt tekststreng.

Operator Betydning Eksempel
& Sammenslåing "Nothing to print:" & " " & "no records found"

Operatorprioritet

Rekkefølgen som delene av et sammensatt uttrykk evalueres i er viktig. Resultatet av uttrykket 1 + 4 / 2 varierer for eksempel, avhengig av om addisjonen eller divisjonen gjøres først. Du kan bruke parenteser til å definere hvordan uttrykk evalueres. Hvis du for eksempel vil angi at addisjonen skal gjøres først, kan du endre det forrige uttrykket til (1 + 4) / 2. Hvis du ikke eksplisitt angir operasjonsrekkefølgen i et uttrykk, er rekkefølgen basert på standardprioriteten som er tilordnet til operatorene som støttes. Tabellen nedenfor viser prioriteten som er tilordnet hver operator. Operatorer som har en høyere prioritet (for eksempel 7) evalueres før operatorer som har en lavere prioritet (for eksempel 1).

Prioritet Operatorer Syntaks
7 Gruppering ( … )
6 Medlemstilgang … . …
5 Funksjonsanrop … ( … )
4 Multiplikativ … * …
… / …
3 Additiv … + …
… - …
2 Sammenligning … < …
… <= …
… => …
… > …
… = …
… <> …
1 Skille … , …

Hvis et uttrykk inneholder flere etterfølgende operatorer med samme prioritet, evalueres disse operasjonene fra venstre mot høyre. Uttrykket 1 + 6 / 2 \* 3 > 5 returnerer for eksempel sann. Vi anbefaler at du bruker parenteser for å eksplisitt angi ønsket rekkefølge på operasjoner i uttrykk, slik at uttrykkene er enklere å lese og vedlikeholde.

Referanser

Alle datakilder for gjeldende ER-komponent som er tilgjengelige under utformingen av et uttrykk, kan brukes som navngitte referanser. Gjeldende ER-komponent kan enten være en modelltilordning eller et format. Gjeldende ER-modelltilordning inneholder for eksempel datakilden ReportingDate, som returnerer en verdi for DateTime-datatypen. Hvis du vil ha verdien riktig formatert i det genererende dokumentet, kan du referere til datakilden i uttrykket som DATETIMEFORMAT (ReportingDate, "dd-MM-yyyy").

Alle tegn i navnet på en refererende datakilde som ikke representerer en bokstav i alfabetet, må ha et enkelt anførselstegn (') foran. Hvis navnet på en referansedatakilde inneholder minst ett symbol som ikke representerer en bokstav i alfabetet, må navnet være omsluttet av enkle anførselstegn. Disse ikke-alfabetiske symbolene kan for eksempel være skilletegn eller andre skriftlige symboler. Her er noen eksempler:

  • Datakilden Today's date & time må refereres til i ER-uttrykket som 'Today''s date & time'.
  • Metoden name() for datakilden Customers må refereres i ER-uttrykk som Customers.'name()'.

Hvis metodene for programdatakilder har parametere, brukes følgende syntaks for å kalle disse metodene:

  • Hvis isLanguageRTL-metoden for System-datakilden har en EN-US-parameter av Streng-datatypen, må denne metoden refereres til i et ER-uttrykk som System.isLanguageRTL("EN-US").
  • Anførselstegn er ikke obligatorisk når et metodenavn inneholder bare alfanumeriske symboler. De er imidlertid obligatorisk for en metode i en tabell hvis navnet inneholder parentes.

Når du legger til System-datakilden i en ER-tilordning som refererer til programklassen Global, returnerer uttrykket System.isLanguageRTL("EN-US ") den boolske verdien USANN. Det endrede uttrykket System.isLanguageRTL("AR") returnerer den boolske verdien SANN.

Du kan begrense hvordan verdier blir sendt til parametere av denne metodetypen:

  • Bare konstanter kan sendes til metoder av denne typen. Verdiene for konstantene defineres under utformingen.
  • Bare primitive (grunnleggende) datatyper støttes for parametere av denne typen. De primitive datatypene inkluderer heltall, reelle tall, boolsk og streng.

Baner

Når et uttrykk refererer til en strukturert datakilde, kan du bruke banedefinisjonen for å velge et bestemt primitivt element i denne datakilden. Tegnet punktum (.) brukes til å skille enkeltelementene i en strukturert datakilde. Gjeldende ER-modelltilordning inneholder for eksempel datakilden InvoiceTransactions, og denne datakilden returnerer listen med poster. Oppføringsstrukturen InvoiceTransactions inneholder feltene AmountDebit og AmountCredit, og begge disse feltene returnerer numeriske verdier. Derfor kan du utforme følgende uttrykk for å beregne det fakturerte beløpet: InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit. Konstruksjonen InvoiceTransactions.AmountDebit i dette uttrykket er banen som brukes til å få tilgang til AmountDebit-feltet i InvoiceTransactions-datakilden i Postliste-typen.

Relativ bane

Hvis banen til en strukturert datakilde starter med et krøllalfategn (@), er det en relativ bane. Krøllalfategnet vises i stedet for den gjenstående delen av den absolutte banen til den hierarkiske trestrukturen som brukes. Illustrasjonen nedenfor viser et eksempel. Her angir den absolutte banen Ledger.'accountingCurrency()' at regnskapsvalutaverdien fra Finans-datakilden angis i AccountingCurrency-feltet i datamodellen.

Eksempel på en absolutt bane på siden for ER-modelltilordningsutforming.

Eksemplet i illustrasjonen nedenfor viser hvordan en relativ bane brukes. Den relative banen @.AccountNum angir at AccountNum-feltet for Intrastat-datakilden (som vises ett nivå over AccountNum-feltet i datamodellens hierarkiske tre) brukes til å angi kontonummeret for kunden eller leverandøren i datamodellens AccountNum-felt.

Eksempel på en relativ bane på siden for ER-modelltilordningsutforming.

Den gjenstående delen av den absolutte banen vises også i ER-formelredigeringen.

Gjenstående del av den absolutte banen på siden ER-formeldesigner.

Hvis du vil ha mer informasjon, kan du se Bruke en relativ bane i databindinger for ER-modeller og -formater.

Funksjoner

Innebygde ER-funksjoner kan brukes i ER-uttrykk. Alle datakilder i uttrykkskonteksten (dvs. gjeldende ER-modelltilordning eller ER-format), kan brukes som parametere for anropsfunksjoner i henhold til listen over argumenter for anropsfunksjoner. Konstanter kan også brukes som parametere for anropsfunksjoner. Gjeldende ER-modelltilordning inneholder for eksempel datakilden InvoiceTransactions, og denne datakilden returnerer listen med poster. Oppføringsstrukturen InvoiceTransactions inneholder feltene AmountDebit og AmountCredit, og begge disse feltene returnerer numeriske verdier. For å beregne det fakturerte beløpet kan du derfor utforme følgende uttrykk som bruker den innebygde ER-avrundingsfunksjonen: ROUND (InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit, 2).

Når du utformer ER-modelltilordninger og ER-rapporter, kan du bruke ER-funksjoner fra følgende kategorier:

Funksjonslisteutvidelse

ER lar deg utvide listen over funksjoner som brukes i ER-uttrykk. Det er nødvendig med noe utvikling. Hvis du vil ha mer informasjon, kan du se Utvide listen over elektroniske rapporteringsfunksjoner (ER).

Sammensatte uttrykk

Du kan opprette sammensatte uttrykk som bruker funksjoner fra forskjellige kategorier, forutsatt at datatypene samsvarer. Når du bruker funksjoner sammen, må du samsvare datatypen for utdataene fra én funksjon med datatypen inndata som kreves av en annen funksjon. Hvis du for eksempel vil unngå en mulig "listen-er-tom"-feil i en binding av et felt til et ER-formatelement, kan du kombinere funksjoner fra Liste-kategorien med en funksjon fra Logisk-kategorien, som følgende eksempel viser. Her bruker formelen IF-funksjonen til å teste om IntrastatTotals-listen er tom før den returnerer verdien for den nødvendige samlingen fra denne listen. Hvis IntrastatTotals-listen er tom, returnerer formelen 0 (null).

IF(ISEMPTY(IntrastatTotals), 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded') 

Flere løsninger

Du kan ofte få samme datatransformasjonsresultat på flere måter ved å bruke funksjoner fra ulike kategorier eller ulike funksjoner fra samme kategori. Det forrige uttrykket kan for eksempel også konfigureres ved hjelp av COUNT-funksjonen fra Liste-kategorien.

IF(COUNT (IntrastatTotals)=0, 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded') 

Tilleggsressurser

Oversikt over elektronisk rapportering

Formeldesigner i elektronisk rapportering

Utvide listen over funksjoner for elektronisk rapportering

Støttede primitive datatyper

Sammensatte datatyper som støttes