インポート仕様

設計者

インポート仕様は、カンマ区切り形式ファイル(CSV ファイル)から元帳に、フォームをもちいてデータをインポートする際の処理方法を指定するために用います。インポート処理に関するポイントを以下に挙げます。

  • ひとつのフォームで複数の元帳にデータをインポートすることができます。たとえば fusion_place で伝票データを保持する場合、金額と摘要(伝票コメント)を別々の元帳に保持します。そのような場合、ひとつのフォームで伝票データをインポートし、金額用の元帳と摘要用の元帳にデータを反映することができます。

  • データをインポートする前に、その画面(フォームによって作成される画面)上の入力可能セルのデータはいったんクリアされます(ただし、インポート対象元帳に結び付けられたセルのみ)。したがって、インポートデータに誤りがあった場合、データを訂正して再度インポートすれば、前回インポートしたデータは完全にクリアされます。

  • 金額・数値だけではなく、文字列値・論理値・列挙値もインポート可能です。

  • インポートに際してコード変換が可能ですコード変換テーブルはいくつでも設けることができます。また、各テーブルの内容は、すべての業務責任単位に共通とすることも、業務責任単位ごとに別々に登録できるよう設定することも可能です。コード変換テーブルで変換前/変換後のコードの組あわせを記述するさいには、ワイルドカード(? と *)を用いて、登録件数を削減することができます。

  • コードを結合するなど複雑な文字列操作も可能です。たとえば、入力データ中の複数のキーフィールドのコードを結合して、ディメンションメンバのラベルを作ることも可能です。この機能と、上述のコード変換機能をあわせれば、きわめて複雑な変換を行うことができます。たとえば、入力データ中のコードをいったん変換テーブルで変換し、その結果と入力データ中の別のコードを結合してメンバラベルを得る、といった処理が可能です。コード変換とコード結合は、このように何回でも繰り返すことができます。

  • 算出した値をインポートすることも可能です。例えば、インポートするファイルの項目として売上単価と売上数量がある場合、それらを乗じて売上金額を算出し、元帳に取り込むことができます。このとき併せて、売上単価と売上数量を取り込むことも可能です(取り込まないこともできます)。

処理の詳細については、文書「インポート処理のしくみ」をご参照ください。

インポートできるファイルの形式

インポート仕様の設定項目

インポート仕様に指定できる項目は以下の通りです。

〔全般的設定項目〕

項目 必須 設定内容

・インポート可能にする

デフォルトでは、OFF になっています。当フォームを用いたインポートを行いたい場合は ON として下さい。

・対象元帳


(※)

インポート先元帳を指定します。当フォームでデータソースとして使用されている元帳を選んでください。 対象元帳を当欄で指定しないことも可能です。その場合、#LEDGER というラベルを持つフィールドを設けて下さい。その上で、その変換後値が元帳ラベルとなるよう算出式などを設定して下さい。

すなわち、#LEDGER フィールドをデータ取得元フィールドとした場合は、インポートする CSV データ上の該当フィールドに元帳ラベルを指定して下さい。算出フィールドとした場合は、算出式にて元帳ラベルを導出して下さい。いずれの場合でも変換テーブルを適用することも可能です。

・符号表示タイプ


(※)

金額・数値をインポートする際の、値の正負の解釈方法を指定します。

  • 勘定科目属性に従う

  • 借方を+とする

  • 貸方を+とする

初期提案値は「借方を+とする」です。正負解釈方法の詳細については、値フィールドの形式に関する説明をご覧下さい。

・ヘッダ読み飛ばし行数
(空白行除く)


(※)

インポート対象ファイルの先頭に、インポート対象としたくない行が含まれている場合、その行数を指定する。ただし、空白行は除外してカウントする。

・ クローズされたセルに対する書き込みを警告しない

チェックされている場合、クローズされたセルにデータを書き込もうとしても警告が発せられずスキップされる(ログには、重要度「INFO」としてその旨が出力される)。

(※)「インポート可能にする」を ON にした場合

〔データ取得元フィールドに対する設定項目〕

インポートしたい CSV ファイルのフィールド(データ取得元フィールド)ごとに以下の項目を指定します。データ取得元フィールドの並び順は、CSV ファイルの各行でのフィールドの並び順に対応します。

項目 必須 設定内容

・ラベル

フィールドに付すラベルです。算出フィールドの「算出式」で、このフィールドの値を参照するために使用することができます。

・値

フィールドが値フィールド(取り込み対象のデータ値を含むフィールド)である場合、チェックします。

【暗黙の値フィールド】

データ取得元フィールド・算出フィールドを通じて値フィールドがひとつも指定されていない場合、データ取得元フィールドの並びの末尾に値フィールドがひとつ追加されているかのように扱われます。これを「暗黙の値フィールド」と呼びます。暗黙の値フィールドにはラベルが無いため、算出フィールドの算出式で参照できません。また、変換テーブルを指定することもできないので、変換後値は変換前値と同じになります。

・名称

フィールドの名称を指定します。多言語文字列です。ラベルが対象元帳で使用されているディメンションのラベルであれば、ディメンション名称が自動表示されます。

・値フィールドキー

フィールドが値フィールドである場合のみ指定可(必須ではありません)。

その値フィールドに割り当てるメンバのラベルなどのキー項目を指定します。値フィールドが複数ある場合、通常は、それらの値フィールドを別々のメンバに対応付けるためにこのキーを指定する必要があります。

指定されたキーは、算出フィールドの「算出式」中で、@field_key 関数を用いて参照できます。値フィールドキーには複数のキーをカンマで区切って指定することもできます。その場合は @field_key 関数の引数で 1 から始まるキー番号を指定します。

値フィールドキーの使い方については、「インポート処理のしくみ」中の「値フィールドが複数ある場合の留意事項」もご覧ください。

・変換テーブル

フィールドの値を変換するのに適用する変換テーブルを指定してください。変換が不要なら指定も不要です。

このフィールドの「変換前」の値(すなわちインポートしたデータのフィールドの値そのもの)が、この変換テーブルによって変換されて、「変換後」の値が得られます。他のフィールドの式がこのフィールドを参照している場合に受け渡されるのはこの「変換後」の値となります。

変換テーブルが指定されていない場合、変換後値=変換前値です。

〔算出フィールドに対する設定項目〕

算出フィールドと、その値の算出式などを指定します。算出フィールドはいくつ設けても(設けなくても)かまいません。データ取得元フィールドと異なり、算出フィールドの並び順には、特に意味はありません。

項目 必須 設定内容

・ラベル

(データ取得元フィールドと同)

・値

・名称

・値フィールドキー

・算出式

フィールドの値(コード値)を組み立てる式(フィールド式)を記述します。式の書き方は後述します。

この値は、フィールドの「変換前」の値とされます。

フィールド値は文字列です。算出式での計算結果がフィールドに設定される際、計算結果が数値であれば、小数部分末尾の不要なゼロを除いて、シンプルな文字列に変換されます。例えば、数値 1234.5600 は、文字列「1234.56」として設定されます。1234.0000 は「1234」となります。

算出式の計算結果が #IGNORE という値(文字列)になる場合、データは読み飛ばされます。読み飛ばしは、処理対象であるインポートデータ(行データ)ごとかつ値フィールドごとに行われます。
読み飛ばしは、変換テーブルを用いて行うことも可能です。

・変換テーブル

(データ取得元フィールドと同)

インポート先元帳のセルとの対応付け

インポート先元帳で使用しているディメンションそれぞれについて、同じラベルをもったフィールドを設ける必要があります。これらは、データ取得元フィールド、算出フィールド、いずれでもかまいません。インポート処理においてはこれらのフィールドの「変換後」の値がメンバラベルとみなされ、それらの組合せで指定される元帳セルに値フィールドの値(これも「変換後」の値)が書き込まれます。

詳細については、文書「インポート処理のしくみ」をご参照ください。

フィールド式の書き方

フィールド式はテキスト式の方言のひとつです。主な特徴は、ラベル定数が「フィールド」オブジェクトを意味する点です。詳細な文法についてはテキスト式の解説をご参照ください。
ここでは、よく使われると思われる記述例をご紹介します。

1. 他のフィールドの値を参照する場合

単に、フィールドラベルを指定することにより、そのフィールドの「変換後」の値を参照できます。

  IN_PRODUCT_CODE (1)
1 ラベル IN_PRODUCT_CODE を付されたフィールドの変換後の値。

フィールドラベルが数字のみからなるなど、数値と混同される可能性がある場合には、ラベルをシングルクォートで囲んでください:

  '1234' (1)
1 数値 1234.0000 ではなく、ラベル 「1234」 を付されたフィールドの変換後の値。

なお、フィールド値参照により得られる値は基本的には文字列ですが、算術式にて用いられると数値に自動変換されて演算が行われます。

  IN_PRODUCT_CODE & "A" (1)
1 IN_PRODUCT_CODE を付されたフィールドの変換後の値(文字列)が "1000" であれば、この式の評価結果は「1000A」という文字列になります。
  IN_PRODUCT_CODE + "1" (1)
1 同上条件下で、この式の評価結果は「1001」という数値になります。この値がフィールドに設定されるとフィールドの値は「1001.0000」という文字列になるのでご注意下さい。

2. 固定値を設定する場合

二重引用符で囲むことにより、固定値を指定できます。

  "YTD" (1)
1 固定値 YTD を意味する。

3. 他のフィールドの値や固定値を結合する場合

結合演算子 & によりフィールド値や固定値を結合することができます。

  "P" & IN_PRODUCT_CODE (1)
1 ラベル IN_PRODUCT_CODE を付されたフィールドの変換後の値の先頭に固定値 P を付加。
  IN_PRODUCT_CODE & IN_DEPT_CODE (1)
1 ラベル IN_PRODUCT_CODE を付されたフィールドと、ラベル IN_DEPT_CODE を付されたフィールドの変換後の値を結合。

4. インポート時の「デフォルト設定値」又はパラメタ値を設定する場合

ディメンションに対する @POV 関数にてこれらの値を取得できます(パラメタ値がデフォルト値に優先します)。

  Dimensions!#FY!@POV (1)
1 パラメタで選択された会計年度メンバのラベルが、フィールドに設定されます。

5. 値フィールドの値を算出したい場合

売上単価(PRICE フィールドに保持)と売上数量(QUANTITY フィールドに保持)乗じて、売上金額を算出して取り込むには、売上金額フィールドの算出式に例えば以下のように記述します。

  PRICE * QUANTITY

なお、売上金額を取り込み対象とするために、売上金額フィールドの「値」欄にチェックしておく必要があります。

6. 条件判定したい場合

テキスト式の IF 条件式を用いて記述できます。例えば、3 月決算の企業で、暦年(YEAR フィールドに保持)と歴月(MONTH フィールドに保持)から「FYnnnn」形式の会計年度を導出するには、会計年度フィールドの算出式に例えば以下のように記述します。式の途中で、数値を文字列と結合する時には @Text() 関数を用いて適切な形式に整える必要がある点、ご注意下さい(下記では、YEAR -1 が数値となります)。

  IF MONTH <= "03" THEN
    "FY" & @Text(YEAR-1,"0000")
  ELSE
    "FY" & YEAR
  ENDIF

IF 条件式はそれ自体が式なので値を返します。すなわち、上記は以下のように記述することもできます。

  "FY" & @Text( YEAR - (IF MONTH <= "03" THEN 1 ELSE 0 ENDIF ), "0000")

同様に、相対期間は 4 月なら M1、3 月は M12 となりますから、以下の式で導出できます。

  IF MONTH <= "03" THEN
    "M" & @Text(MONTH + 9,"#0")
  ELSE
    "M" & @Text(MONTH -3,"#0")
  ENDIF

なお、上記の 1 行目は「MONTH」フィールドの値と "03" を文字列として大小比較していますが、以下のように記述すると数値として大小比較されます。このケースでは、いずれを用いても、期待した結果が得られます。

  IF MONTH <= 3 THEN