オブジェクトの指定方法

設計者 管理者
この項の説明で式の例を示すときは、特に断らない限り、メンバ選択式以外の方言での例を示します。メンバ選択式とその他の方言では、ラベル定数で指定されるオブジェクトが異なるため、見かけが同じ式であっても異なる意味に解されることがあります。

オブジェクトを指定するには、以下の4通りの方法があります。

1. 定義済み識別子を用いる方法

定義済み識別子として Dimensions, Ledgers, および Editions があります。

Dimensions は、ディメンション群オブジェクトを表します。ディメンション群オブジェクトには目立った機能はなく、個々のディメンションオブジェクトを取得するための足がかりとして用いられます。

  Dimensions!#ACCOUNT (1)
1 勘定科目ディメンションオブジェクトが指定されます。(! 記号については、「すでに指定されたオブジェクトの子オブジェクトを指定する方法」をご参照ください)。

Ledgers は、元帳群オブジェクトを表します。元帳群オブジェクトはテキスト式が指定されたセルなどに結び付けられた元帳を判定するために用いられます。

  Ledgers!@CUR.Label (1)
1 「現在の」元帳(=テキスト式が指定されたセルなどに結び付けられた元帳)のラベルを表します。( ! 記号および@関数については、「すでに指定されたオブジェクトの子オブジェクトを指定する方法」をご参照ください)。

Editions は、元帳版群オブジェクトを表します。元帳版群オブジェクトは現在アクセス中の元帳版のキーなどを知るために用いられます。

  Editions!@CUR.Key (1)
1 「現在の」元帳版(=アクセス中の元帳版)の元帳版キーを表します。( ! 記号および@関数については、「すでに指定されたオブジェクトの子オブジェクトを指定する方法」をご参照ください)。

2. ラベル定数を用いる方法

式中にラベルを記述することによってオブジェクトを指定することができます。ラベルで指定されるオブジェクトの種類は式の 方言 により異なります。具体的には、「メンバ選択式」及び「フィールド値算出式」以外の方言では、ディメンションオブジェクトが指定されます。メンバ選択式では、プロパティオブジェクトが指定され、フィールド値算出式ではフィールドオブジェクトが指定されます。

  • 一般の方言の場合(=メンバ選択式及びフィールド算出式以外の場合)

  #ACCOUNT
    => 「勘定科目」ディメンションオブジェクトが指定されます。
  • メンバ選択式の場合

  #LEAF
    => 検査対象メンバの「リーフ区分」プロパティオブジェクトが指定されます。
  • フィールド値算出式の場合

  YEAR
    => 「YEAR」というラベルを付されたフィールドオブジェクトが指定されます。

3. すでに指定されたオブジェクトの子オブジェクトとして指定する方法

上記 1, 2 の方法で指定されたオブジェクトを起点にして、その「子」オブジェクトを指定することができます。各オブジェクトの子オブジェクトは以下の通りです。

オブジェクト 左記のオブジェクトの子オブジェクト

ディメンション群

ディメンション

ディメンション

メンバ

メンバ

プロパティ値

元帳群

元帳

(その他)

(なし)

子オブジェクトを指定するには、親オブジェクトを指定する式に続けて、! で区切って、子オブジェクトのラベルまたは@関数を記述します。

  • ラベルを用いる方法

  #ACCOUNT!PL1010
    => 「勘定科目」ディメンションに属し、ラベル _"PL1010"_ をもつメンバ に関するメンバオブジェクトが指定されます。
  • @関数を用いる方法

  #ACCOUNT!@CUR
    => 「勘定科目」ディメンションの「現在のメンバ」に関するメンバオブジェクトが指定されます。

@関数は、ディメンション、元帳群、元帳版群の各オブジェクトについてのみ適用できます。使える関数は @CUR, @POV, @RKEY のいずれかです。

【ディメンション群オブジェクトに適用できる @関数】

関数 指定されるメンバ

@CUR

メンバリスト定義中のメンバ選択式においてのみ有効なオブジェクトを返します。返されるオブジェクトは「現在のディメンション」すなわち、そのメンバリスト定義が適用されるディメンションです。

CUR: Current

【ディメンションオブジェクトに適用できる @関数】

関数 指定されるメンバ

@CUR

現在のメンバ
CUR: Current

@POV

視点メンバ
POV: Point of View

@RKEY

責任範囲指定キーメンバ
RKEY: Responsibility Key

⚠「現在のメンバ」と「視点メンバ」の詳細は、 メンバ変数 をご参照下さい。

【元帳群オブジェクトに適用できる@関数】

関数 指定されるメンバ

@CUR

現在の元帳(=テキスト式が適用されるセルなどに結び付けられた元帳)
CUR: Current

【元帳版群オブジェクトに適用できる@関数】

関数 指定されるメンバ

@CUR

現在の元帳版
CUR: Current

なお、子オブジェクトの指定を複数階層にわたって重ねることもできます。

  Dimensions!#ACCOUNT!@CUR!#LEAF (1)
1 「勘定科目」ディメンションの「現在のメンバ」の「リーフ区分」プロパティオブジェクトが指定されます。
  Dimensions!@CUR!@CUR!#LEAF (1)
1 メンバリスト定義のメンバ選択式でこのように記述すると、現在のディメンションの「現在のメンバ」の「リーフ区分」プロパティオブジェクトが指定されます。

4. セル範囲指定子を用いる方法

フォーム上の「セル範囲」オブジェクトを指定するには、セル範囲指定子を用います。セル範囲指定子には2項形式と単項形式との2種類があります。セル範囲指定子は、フォーム上の式の方言いくつかでのみ使えます。詳しくは テキスト式の方言一覧 をご参照ください。

  • 2項形式

      [SALES, TOTAL]
        => 「売上列」と「合計行」の交点であるセル範囲を示します(SALES: は「売上列」の列ラベル、TOTAL: は「合計行」の行ラベルという前提で)。
  • 単項形式

    • テキスト式がフォームの「列仕様」の計算式として用いられている場合

        [SALES]
          => 式が実行される行と「売上列」の交点であるセル範囲を示します(前提は同上)。
    • テキスト式がフォームの「行仕様」の計算式として用いられている場合

        [TOTAL]
          => 式が実行される列と「合計行」の交点であるセル範囲を示します(前提は同上)。
  • 相対参照( fusion_place >= 14.1 )

    セル範囲指定子はラベル以外に整数値を指定することもできます。数値を指定する場合、当該セルからの相対位置を指定します。相対参照を用いることで、例えば連番の付与や当該データに値による計算方法の変更など柔軟な式を作成することができます。なお指定した位置に列・行が無い場合、エラーにはならずに0が返されます。

      [-2,3]
        => 当該セルから、左に 2 列、下に 3 行の位置にあるセル内容を参照します。

    ラベル方式と同様、行仕様や列仕様の計算式として用いる事もできます。

      [-1]+3
        => 行仕様の計算式として用いると、当該セルから左隣のセルの値に 3 を加算した数値が表示されます。この場合、当該行の数値が「0,3,6,9…」のように表示されます。

    ラベルと数値を混在して指定することもできます。

      [SALES,3]
        => 当該セルから下に 3 行の、SALES(売上列)の位置にあるセル内容を参照します。

    数値を省略した場合は、0と同じ扱いになります。つまり、[, ]は[0, 0] と同じ意味になります。

      [,] >=100
        => セル仕様のバリデーションルールで[,]を用いた場合、当該セルの値を参照します。この例の場合、100 以上の値が入力されている場合に有効となります。
    相対参照において、ゼロ以外の整数を指定した場合、フォーム設定の循環参照チェックは行われませんのでご留意ください。
  • ループスコープ付きの列・行参照( fusion_place >= 14.1 )

    ループ内の列・行参照を行う場合、ループスコープを指定することができます。ループスコープを使用することで、ループ内で生成された列・行の全体を参照し集計することができます。

    下記の例では、#PERIOD(相対期間)ディメンションのループ内にある、DAILYラベルの列・行の合計を取得します。例えば相対期間ループのループ明細が3件ある場合、DAILYラベルの列・行が3件生成されますので、3件の合計値が取得されます。

      [#PERIOD::DAILY,LABEL2].total(
        [#PERIOD::DAILY,LABEL3],5)

    下記例ではループスコープ(ここでは#PERIOD)を指定せず、ループ内のDAILYラベルの列・行の全ての合計を取得しています。このようにループの外側から特定の列・行を参照して集計する場合は、ループスコープの指定は不要であるケースが多いです。

    一方、 条件付集約メソッドを使用する際、 式が置かれた列や行と同種の(同じ列・行仕様から生成された)複数の列・行を、集約対象範囲や条件範囲としたい場合には、ループスコープを指定する必要があります。

      [DAILY].total
    • コロン指定による参照範囲の違い

      下記例のように、コロンが1つの場合と2つの場合で、参照範囲が異なります。

      コロンを2つ(::)指定した場合、#PERIODループ内の全てのループ明細のDAILYラベルの列・行を参照します。一方1つのコロン(:)を指定した場合、指定したループ明細内のDAILYラベルの列・行のみを参照します。ループスコープのイメージをご参照ください。

        #PERIOD:DAILY
        #PERIOD::DAILY

ループスコープのイメージ( fusion_place >= 14.1 )

例えば勘定科目(#ACCOUNT)ディメンションを指定したループにおける、勘定科目ごとの明細をループ明細と呼びます。各ループ明細内には、当該ループ仕様の内側の列・行仕様に定義された列・行が生成されます。下記例では、ループ明細内に予算行と実績行が生成されます。

  ループ           例. 勘定科目(#ACCOUNT)ディメンションのP/L科目ループ
    ループ明細       例. P/L科目ループ中の売上高ループ明細
      行              例. 売上高ループ明細中の予算行 / BUDGET
      行              例. 売上高ループ明細中の実績行    / ACTUAL
    ループ明細       例. P/L科目ループ中の売上原価ループ明細
      行              例. 売上原価ループ明細中の予算行 / BUDGET
      行              例. 売上原価ループ明細中の実績行    / ACTUAL
    (以下同様)

上図の例で、売上高ループ明細中のACTUAL行から #ACCOUNT:BUDGET を参照した場合は、売上高ループ明細に属するBUDGET行が参照されます。

一方、#ACCOUNT::BUDGETを参照すると、売上高ループ明細だけでなく、売上原価等他のループ明細中のBUDGET行も含めて参照されます。