注
コミュニティの関心グループが Yammer から Microsoft Viva Engage に移行されました。 Viva Engageコミュニティに参加し、最新のディスカッションに参加するには、 Finance and Operations Viva Engage Community へのアクセス権フォームに入力し、参加するコミュニティを選択します。
電子申告 (ER) では、強力なデータ変換経験を提供します。 ER 数式デザイナーで必要なデータ操作を表すために使用する言語は、Microsoft Excelの数式言語に似ています。
基本構文
ER の式は、次のいずれかまたはすべての要素を含めることができます。
定数
式をデザインするときは、テキスト定数と数値定数 (つまり、計算されない値) を使用します。 たとえば、VALUE ("100") + 20 の式では、数値定数 20 および文字列定数 "100" を使用し、120 という数値を返します。
ER フォーミュラ デザイナーはエスケープ シーケンスをサポートします。 したがって、別の方法で処理されるべき式文字列を指定することができます。 たとえば、"Leo Tolstoy ""War and Peace"" Volume 1" の式は、レフ トルストイ "戦争と平和" ボリューム 1 というテキスト文字列を返します。
演算子
次の表に、加算、減算、乗算、除算などの基本的な数学演算の実行に使用できる算術演算子を示します。
| オペレーター | 意味 | 例 |
|---|---|---|
| + | 追加 | 1+2 |
| - | 減算、否定 |
5-2、-1 |
| * | 乗算 | 7\*8 |
| / | 区分 | 9/3 |
次の表に、サポートされる比較演算子を示します。 これらの演算子を使用して、2 つの値を比較することができます。
| オペレーター | 意味 | 例 |
|---|---|---|
| = | Equal | X=Y |
| > | より大きい | X>Y |
| < | より小さい | X<Y |
| >= | 以上 | X>=Y |
| <= | 以下 | X<=Y |
| <> | 次の値に等しくない | X<>Y |
また、テキスト連結演算子としてアンパサンド (&) を使用することができます。 これにより、1 つ以上の文字列を 1 つのテキストに結合または連結することができます。
| オペレーター | 意味 | 例 |
|---|---|---|
| & | 連結 | "Nothing to print:" & " " & "no records found" |
演算子の優先順位
複合式のパーツを評価する順番は重要です。 たとえば、1 + 4 / 2 の式の結果は、加算または除算のどちらを先に実行するかによって異なります。 明示的に式の評価方法を定義するためにかっこを使用できます。 たとえば、加算を最初に実行する必要があることを示すには、前の式を (1 + 4) / 2 に変更できます。 式で工程の順序を明確に定義しない場合、順序はサポートされる演算子に割り当てられている既定の優先順位に基づきます。 次の表に、各演算子に割り当てられている優先順位を示します。 高い優先順位 (たとえば、7) がある演算子は、低い優先順位 (たとえば、1) がある演算子より前に評価されます。
| 優先順位 | 演算子 | 構文 |
|---|---|---|
| 7 | グループ化 | ( … ) |
| 6 | メンバーのアクセス | … . … |
| 5 | 関数の呼び出し | … ( … ) |
| 4 | 乗算 | … * … … / … |
| 3 | 付加 | … + … … - … |
| 2 | 比較 | …
< … … <= … … => ... … > … … = … … <> … |
| 1 | 区切り | … , … |
式に同じ優先順位を持つ複数の連続した演算子が含まれている場合は、これらの操作は左から右に評価されます。 たとえば、1 + 6 / 2 \* 3 > 5 の式は true を返します。 かっこを使用して、式の操作の目的の順序を明示的に示し、式の読み取りと保守が容易になるようにします。
参照
式の設計時に使用できる現在の ER コンポーネントのすべてのデータ ソースを、名前付き参照として使用できます。 現在の ER コンポーネントは、モデル マッピングまたは形式のいずれかです。 たとえば、現在の ER モデル マッピングには、データ ソース: ReportingDate が含まれ、データ型: DateTime の値を返します。 生成ドキュメント内の値を正しく書式設定するには、式内のデータ ソースを DATETIMEFORMAT (ReportingDate, "dd-MM-yyyy")として参照します。
アルファベットの文字を表さない参照元データ ソースの名前のすべての文字の前に、単一引用符 (') を付けます。 参照元データ ソースの名前に、アルファベットの文字を表さない記号が少なくとも 1 つ含まれている場合は、その名前を単一引用符で囲みます。 たとえば、これらアルファベットでない記号は、句読点またはそのほかの書面記号です。 次にいくつか例を挙げます。
- ER 式の 今日の日付と時刻 のデータ ソースを
'Today''s date & time'として参照してください。 - ER 式で Customers データ ソースの name() メソッドを
Customers.'name()'として参照します。
アプリケーション データ ソースのメソッドにパラメーターがある場合は、次の構文を使用してこれらのメソッドを呼び出します。
-
システム データ ソースの isLanguageRTL メソッドに String データ型の EN-US パラメーターがある場合は、ER 式でこのメソッドを
System.isLanguageRTL("EN-US")として参照してください。 - メソッド名に英数字シンボルのみが含まれている場合、引用符は必須ではありません。 ただし、名前にかっこが含まれている場合、テーブルのメソッドに対しては必須です。
グローバル アプリケーション クラスを参照する ER マッピングにシステム データ ソースを追加すると、式System.isLanguageRTL("EN-US ")ブール値 FALSE が返されます。 変更された式 System.isLanguageRTL("AR") はブール値の TRUE を返します。
値がこのメソッドのタイプのパラメータに渡される方法を制限することができます。
- このタイプのメソッドに、定数だけを渡すことができます。 デザイン時に定数の値を定義します。
- このタイプのパラメーターでは、データ型: primitive (基本) のみがサポートされています。 プリミティブ データ型には、整数、実数、ブール値、および文字列が含まれます。
パス
式が構造化データ ソースを参照する場合は、パス定義を使用して、そのデータ ソースの特定のプリミティブ要素を選択します。 構造化データ ソースの個々の要素を区切る場合は、ドット文字 (.) を使用します。 たとえば、現在の ER モデル マッピングには InvoiceTransactions データ ソースが含まれ、このデータ ソースはレコード一覧を返します。
InvoiceTransactions レコード構造には、AmountDebit および AmountCredit フィールドが含まれており、どちらのフィールドも数値を返します。 したがって、請求金額 InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit を計算するための次の式をデザインできます。 この式の InvoiceTransactions.AmountDebit 構造は、レコード リスト タイプの InvoiceTransactions データ ソースの AmountDebit フィールドにアクセスするために使用されるパスです。
相対パス
構造化データ ソースのパスが @ 記号で始まる場合は、相対パスになります。
@記号は、相対パスが使用する階層ツリー構造の絶対パスの残りの部分を表します。 次の図は、例を示します。 この例では、絶対パス Ledger.'accountingCurrency()' は、 台帳 データ ソースの会計通貨値がデータ モデルの AccountingCurrency フィールドに入力されていることを示しています。
次の図の例では、相対パスがどのように使用されるかを示します。 相対パス @.AccountNum は、Intrastat データ ソースの AccountNum フィールド (データモデルの階層ツリーの AccountNum フィールドの 1 レベル上に表示される) が、データモデルの AccountNum フィールドに顧客または仕入先勘定番号を入力して使用されることを示します。
ER 数式エディターには、絶対パスの残りの部分も表示されます。
詳細については、ER モデルと ER 形式のデータ バインディングに相対パスを使用する を参照してください。
Functions
ER 式で ER 組み込み関数を使用します。 関数を呼び出す際に、関数を呼び出す引数の一覧に従っている限り、式コンテキストのすべてのデータ ソース (つまり、現在の ER モデル マッピングまたは ER 形式) をパラメーターとして使用できます。 パラメーターとして定数を使用することもできます。 たとえば、現在の ER モデル マッピングには InvoiceTransactions データ ソースが含まれ、このデータ ソースはレコード一覧を返します。
InvoiceTransactions レコード構造には、AmountDebit および AmountCredit フィールドが含まれており、どちらのフィールドも数値を返します。 請求金額を計算するには、組み込みの ER 丸め関数を使用する式 ( ROUND (InvoiceTransactions.AmountDebit - InvoiceTransactions.AmountCredit, 2)) を設計できます。
ER モデル マッピングと ER レポートを設計する場合は、次のカテゴリの ER 関数を使用します。
関数の一覧の拡張
ER を使用すると、ER 式で使用する関数の一覧を拡張できます。 これにはエンジニアリングの実績が要求されます。 詳細については、電子申告 (ER) 関数の一覧の拡張 を参照してください。
複合式
データ型が一致する限り、さまざまなカテゴリの関数を使用する複合式を作成できます。 関数を一緒に使用する場合は、ある関数からの出力のデータ型を、別の関数に必要な入力データ型と一致させます。 たとえば、フィールドの ER 形式要素へのバインディングで発生する "リストが空である" エラーを回避するには、次の例に示すように、リスト カテゴリの関数を 論理 カテゴリの関数と組み合わせます。 ここでは、数式は IF 関数を使用して IntrastatTotals リストが空であるかどうかをテストしてから、必要な集計の値をリストから返します。 IntrastatTotals リストが空の場合、数式は 0 (ゼロ) を返します。
IF(ISEMPTY(IntrastatTotals), 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded')
複数のソリューション
多くの場合、異なるカテゴリからの関数または同じカテゴリからの異なる機能を使用して、同じデータ変換結果を複数の方法で取得できます。 たとえば、前の式は リスト カテゴリからの COUNT 関数を使用してコンフィギュレーションすることもできます。
IF(COUNT (IntrastatTotals)=0, 0.0, IntrastatTotals.aggregated.'$AmountMSTRounded')