Język formuł raportowania elektronicznego
Raportowanie elektroniczne (ER) oferuje zaawansowane środowisko przekształcania danych. Język, który jest używany do wyrażania wymaganych modyfikacji danych w projektancie formuły ER, przypomina język formuł w programie Microsoft Excel.
Podstawowa składnia
Wyrażenia raportowania elektronicznego mogą zawierać dowolne lub wszystkie z następujących elementów:
Stałe
Do projektowania wyrażeń można używać stałych tekstowych i liczbowych (tzn. wartości, które nie są obliczane). Na przykład w wyrażeniu VALUE ("100") + 20
są używane stała liczbowa 20 i stała ciągu 100, a wyrażenie zwraca wartość liczbową 120.
Projektanta formuł ER obsługuje sekwencje specjalne. Oznacza to, że można określić ciąg wyrażenia, który powinien być traktowany inaczej. Na przykład wyrażenie "Leo Tolstoy ""War and Peace"" Volume 1"
zwraca ciąg tekstowy Leo Tolstoy "War and Peace" Volume 1.
Operatory
W poniższej tabeli przedstawiono operatory arytmetyczne, których można używać do wykonania podstawowych operacji matematycznych, takich jak dodawanie, odejmowanie, mnożenie i dzielenie.
Operator | Znaczenie | Przykład |
---|---|---|
+ | Dodanie | 1+2 |
- | Odejmowanie, zaprzeczenie | 5-2 , -1 |
* | Mnożenie | 7\*8 |
/ | Oddział | 9/3 |
W poniższej tabeli przedstawiono obsługiwane operatory porównania. Tych operatorów można używać do porównywania dwóch wartości.
Operator | Znaczenie | Przykład |
---|---|---|
= | Equal | X=Y |
> | Greater than | X>Y |
< | Less than | X<Y |
>= | Większe lub równe | X>=Y |
<= | Mniejsze lub równe | X<=Y |
<> | Nie równa się | X<>Y |
Ponadto można użyć znaku handlowego „i” (&) jako operatora łączenia tekstu. W ten sposób można połączyć (złożyć) jeden lub kilka ciągów tekstowych w jeden element tekstu.
Operator | Znaczenie | Przykład |
---|---|---|
& | Złącz | "Nothing to print:" & " " & "no records found" |
Pierwszeństwo operatorów
Kolejność, w jakiej części wyrażenia złożonego są obliczane, jest ważna. Na przykład wynik wyrażenia 1 + 4 / 2
różni się w zależności od tego, czy jako pierwsza jest wykonywana operacja dodawania, czy dzielenia. Nawiasy umożliwiają jawne zdefiniowanie sposobu wyznaczania wartości wyrażenia. Na przykład aby wskazać, że najpierw powinna być wykonywana operacja dodawania, można zmienić poprzednie wyrażenie na (1 + 4) / 2
. Jeśli nie zdefiniujesz jawnie kolejności operacji w wyrażeniu, kolejność jest zależna od domyślnego pierwszeństwa przypisanego do obsługiwanych operatorów. Poniższa tabela ilustruje pierwszeństwo przypisane do każdego operatora. Operatory o wyższym priorytecie (na przykład 7) są odczytywane przed operatorami, które mają niższy priorytet (na przykład 1).
Pierwszeństwo | Operatorzy | Składnia |
---|---|---|
7 | Grupowanie | ( … ) |
6 | Dostęp do elementu członkowskiego | … , … |
5 | Wywołanie funkcji | … ( … ) |
4 | Zwielokrotnianie | … * … … / … |
3 | Addytywny | … + … … - … |
2 | Porównanie | … < … … <= … … => … … > … … = … … <> … |
1 przypada na wpłatę z zysku na rzecz budżetu państwa | Rozdzielanie | … , … |
Jeśli wyrażenie zawiera wiele następujących po sobie operatorów, które mają ten sam priorytet (pierwszeństwo), operacje te są wykonywane od lewej do prawej. Na przykład wyrażenie 1 + 6 / 2 \* 3 > 5
zwraca wartość prawda. Zaleca się używanie nawiasów w celu jawnego wskazania żądanej kolejności operacji w wyrażeniach, aby ułatwić odczyt wyrażenia i zarządzanie nim.
Odwołania
Wszystkie źródła danych bieżącego składnika ER, które są dostępne podczas projektowania wyrażenia, mogą być używane jako odwołania nazwane. Bieżącym składnikiem modułu ER może być mapowanie modelu lub format. Na przykład bieżące mapowanie modelu danych ER zawiera źródło danych ReportingDate, które zwraca wartość o typie danych DateTime. Aby ta wartość była poprawnie sformatowana w generowanym dokumencie, można utworzyć odwołanie z wyrażenia do źródła danych w postaci DATETIMEFORMAT (ReportingDate, "dd-MM-yyyy")
.
Wszystkie znaki w nazwie przywoływanego źródła danych, które nie reprezentują litery alfabetu, muszą być poprzedzone pojedynczym cudzysłowem ('). Jeśli nazwa przywoływanego źródła danych zawiera co najmniej jeden symbol, który nie reprezentuje litery alfabetu, musi zostać ujęta w pojedyncze cudzysłowy. Symbolami nienależącymi do alfabetu mogą być na przykład znaki interpunkcyjne lub symbole piśmiennicze. Oto kilka przykładów:
- Źródło danych Dzisiejsza data i godzina musi mieć w wyrażeniu ER odwołanie
'Today''s date & time'
. - Metoda name() ze źródła danych Customers musi mieć w wyrażeniu ER odwołanie
Customers.'name()'
.
Jeśli metody źródeł danych aplikacji mają parametry, następująca składnia jest wykorzystywana do wywoływania tych metod:
- Jeśli metoda isLanguageRTL źródła danych System zawiera parametr EN-US o typie danych Ciąg, musi być przywoływana w wyrażeniu ER jako
System.isLanguageRTL("EN-US")
. - Cudzysłowy nie są wymagane, jeśli nazwa metody zawiera tylko symbole alfanumeryczne. Są jednak wymagane dla metody tabeli, gdy nazwa zawiera nawiasy.
Gdy źródło danych System zostanie dodane do mapowania raportowania elektronicznego, które odwołuje się do klasy Global aplikacji, wyrażenie System.isLanguageRTL("EN-US ")
zwraca wartość logicznąFALSE. Zmodyfikowanie wyrażenie System.isLanguageRTL("AR")
zwraca wartość logicznąTRUE.
Można ograniczyć sposób, w jaki wartości są przekazywane do parametrów tego typu metody:
- Tylko stałe mogą być przekazywane do tego typu metod. Wartości stałych są definiowane w czasie projektowania.
- W parametrach tego typu są obsługiwane tylko pierwotne (podstawowe) typy danych. Pierwotne typy danych to liczby całkowite, liczby rzeczywiste, wartości logiczne i ciągi.
Ścieżki
Jeśli wyrażenie odwołuje się do źródła danych usystematyzowanych, można użyć definicji ścieżki, aby wybrać określony element podstawowy tego źródła danych. Znak kropki (.) jest używany do oddzielania poszczególnych elementów źródła danych usystematyzowanych. Na przykład bieżące mapowanie modelu danych ER zawiera źródło danych InvoiceTransactions, które zwraca listę rekordów. Struktura rekordu InvoiceTransactions zawiera pola AmountDebit i AmountCredit, które zwracają wartości liczbowe. W związku z tym można zaprojektować następujące wyrażenie, aby obliczyć zafakturowaną kwotę: InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit
. Konstrukcja InvoiceTransactions.AmountDebit
w tym wyrażeniu jest ścieżką, która jest używana do uzyskiwania dostępu do pola AmountDebit źródła danych InvoiceTransactions typu Lista rekordów.
Ścieżka względna
Jeśli ścieżka źródła danych strukturalnych zaczyna się od znaku „at” (@), jest ścieżką względną. Zamiast pozostałej części ścieżki bezwzględnej struktury używanego drzewa hierarchicznego jest wyświetlany znak „at”. Na poniższej ilustracji pokazano przykład. W tym miejscu ścieżka bezwzględna Ledger.'accountingCurrency()'
wskazuje, że wartość waluty rozliczeniowej ze źródła danych Księga jest wprowadzana w polu AccountingCurrency modelu danych.
W przykładzie na poniższej ilustracji pokazano, jak jest używana ścieżka względna. Ścieżka względna @.AccountNum
wskazuje, że pole AccountNum źródła danych Intrastat (które pojawia się jeden poziom powyżej pola AccountNum w drzewie hierarchicznym modelu danych) służy do wprowadzania numeru konta odbiorcy lub klienta w polu AccountNum modelu danych.
Pozostała część ścieżki bezwzględnej jest również wyświetlana w edytorze formuł modułu ER.
Aby uzyskać więcej informacji, zobacz temat Używanie ścieżki względnej w powiązaniach danych z modelami i formatami ER.
Funkcje
Wbudowane funkcje modułu ER mogą być używane w wyrażeniach ER. Wszystkie źródła danych kontekstu wyrażenia (czyli bieżące mapowanie modelu ER lub format ER) mogą służyć jako parametry funkcji wywołujących, zgodnie z listą argumentów funkcji wywołujących. Parametrami funkcji wywołujących mogą być również stałe. Na przykład bieżące mapowanie modelu danych ER zawiera źródło danych InvoiceTransactions, które zwraca listę rekordów. Struktura rekordu InvoiceTransactions zawiera pola AmountDebit i AmountCredit, które zwracają wartości liczbowe. W efekcie w celu obliczania zafakturowanej kwoty można zaprojektować następujące wyrażenie używające wbudowanej funkcji zaokrąglania ER: ROUND (InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit, 2)
Podczas projektowania mapowań modelu ER i raportów ER można używać funkcji ER z następujących kategorii:
- Funkcje daty i godziny
- Lista funkcji
- Funkcje logiczne
- Funkcje matematyczne
- Funkcje zapisu
- Funkcje tekstowe
- Funkcje gromadzenia danych
- Inne funkcje (specyficzne dla domeny biznesowej)
- Funkcje konwersji typu
Rozszerzenie listy funkcji
Model raportowania elektronicznego umożliwia rozszerzanie listy funkcji używanych w wyrażeniach ER. Wymaga to działań programistycznych. Aby uzyskać szczegółowe informacje, zobacz Rozszerzanie listy funkcji raportowania elektronicznego (ER).
Wyrażenia złożone
Można utworzyć wyrażenia złożone, które używają funkcji z różnych kategorii, pod warunkiem, że typy danych są zgodne. Gdy używasz funkcji razem, dopasuj typ danych wyjściowych z jednej funkcji do typu danych wejściowych, który jest wymagany przez inną funkcję. Aby na przykład uniknąć ewentualnego błędu „list-is-empty” w powiązaniu pola z elementem formatu ER, połącz funkcje z kategorii Lista z funkcją z kategorii Logiczne, jak pokazano w poniższym przykładzie. W tym miejscu formuła używa funkcji IF do sprawdzenia, czy lista IntrastatTotals jest pusta, zanim zwróci wartość wymaganej agregacji z tej listy. Jeśli lista IntrastatTotals jest pusta, formuła zwraca wartość 0 (zero).
IF(ISEMPTY(IntrastatTotals), 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded')
Wiele rozwiązań
Często można uzyskać ten sam wynik przekształcenia danych na wiele sposobów, za pomocą funkcji z różnych kategorii lub różnych funkcji z tej samej kategorii. Na przykład poprzednie wyrażenie można również skonfigurować za pomocą funkcji COUNT z kategorii Lista.
IF(COUNT (IntrastatTotals)=0, 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded')
Dodatkowe zasoby
Raportowanie elektroniczne — omówienie
Projektant formuł w module Raportowanie elektroniczne
Rozszerzanie listy funkcji Raportowania elektronicznego