オペレーション 活用編
この記事でわかること: ・各品目の費用区分ごとの原価状況を示す一覧表の作り方 ・SQLを使わず2つのテーブルのデータを1か所に集約する方法 ・1つのリストビューに複数テーブルのデータを表示する方法 |

プロジェクトファイル (作成バージョン:(10.0.10.0) | cost-management_before.fgcp cost-management_after.fgcp(実装済みプロジェクトファイル) |
1.プロジェクトを確認する
今回の演習で使用するプロジェクトを確認します。
手順1-1.テーブルを確認
ナビゲーションウィンドウのテーブル欄には4つのテーブルが存在しています。
原価マスタには各材料の費用区分と単価のデータが格納されています。
品目標準原価マスタには品目の費用区分ごとの標準原価が格納されています。
製造報告テーブルには品目ごとにどの材料をいくつ使用したのかのデータが格納されています。
最後のwk_原価計算テーブルは空のテーブルです。
今回の演習ではここにコマンドを使って原価マスタと製造報告テーブルのデータから集計した、実際に製造でかかった原価のデータを格納していきます。
手順1-2.ページを確認
今回の演習には「原価分析」というページがあらかじめ用意されています。
ページにはタイトルと集計ボタン、そして品目標準原価マスタと連結されたリストビューが配置されています。
このリストビューには品目標準原価マスタに存在するフィールドのほか、「実際原価」「原価差異」「差異率」という列が用意されています。
これらの列に表示するデータは集計したり数式をセットしたりして用意する必要があります。
集計ボタンにはwk_原価計算テーブルのデータを削除する処理が既に設定されています。
このテーブルはワークテーブルのように使用するため、集計処理のたびにデータを全て消去します。

2.製品の実際原価を集計する
各製品を作るのに、どの材料をいくつ使ったかは製造報告テーブルに保管されており、その材料の単価がいくらなのかは原価マスタに保管されています。
実際の製品原価は品目ごとに費用区分別で集計する必要があるので、そのための準備を行います。
手順2-1.テーブルの関連付け設定
製造報告テーブルの「材料」フィールドに原価マスタとの関連付けを設定し、製造報告テーブルから原価マスタの持つ「単価」フィールドを参照できるようにします。
ナビゲーションウィンドウのテーブル欄にある製造報告テーブルを展開し、「材料」を右クリックし[テーブルの関連付けを設定]をクリックします。
参照するフィールドの設定ウィンドウが開くので、下記のように設定します。
対象テーブル: | 原価マスタ |
対象フィールド: | 材料 |

製造報告テーブルの「材料」フィールドが展開できるようになり、単価が参照できるようになりました。
手順2-2.費用区分ごとに原価を集計
コマンドを使って製造報告テーブルからデータを集計しwk_原価計算テーブルに書き込みます。原価分析ページの集計ボタンを選択した状態で右ペインの[セル型]タブの[コマンド…]をクリックします。コマンドウィンドウには既にテーブルデータの更新コマンドが設定されているので、その下にコマンドを追加していきます。
手順2-2-1.製造報告テーブルデータの取得
製造報告テーブルの全データを取得し、変数に格納します。
[新しいコマンド]ボタンを押下し、変数の設定コマンドを追加し下記のように設定します。
変数名 | 製造報告テーブルのデータ | |
変数値 | データベースのテーブルを参照 | |
対象テーブル | 製造報告 | |
選択タブ | 複数レコード | |
フィールド | 変数名 | |
[製造品目] | 製造品目 | |
[費用区分] | 費用区分 | |
[材料] | 材料 | |
[材料]->[単価] | 単価 | |
[数量] | 数量 | |
並べ替えタブ | ||
フィールド | 並び順 | |
[製造品目] | 降順 | |
[費用区分] | 降順 |

手順2-2-2.変数の作成
集計は各品目の費用区分ごとに行います。
wk_原価計算テーブルへの書き込みは「参照中の製造品目テーブルのレコードデータと1つ前のレコードデータを比較し、製造品目および費用区分が異なっている場合」のみ行います。
そのため、参照中のレコードの1つ前のレコードの製造品目、費用区分、そして集計した原価のデータを保持する変数が必要となります。
また、1件目のレコードであるかどうかと、前述の変数に保持しているデータを書き込みしたかどうかを判定する必要があるため、それらを判定するフラグの役割をする変数もここで用意します。
製造品目のデータを入れておくための変数とするため、下記のように設定します。
変数名: | wk製造品目 |
変数値: | 値、または数式 |

同様に費用区分と原価を入れておくための変数を作るため、変数の設定コマンドを2つ追加します。
設定はそれぞれ下記のように行います。
・費用区分
変数名: | wk費用区分 |
変数値: | 値、または数式 |
・原価
変数名: | wk実際原価 | |
変数値: | 値、または数式 | 0 |

さらに変数の設定コマンドを2つ追加し、1件目のレコードであるかどうかと、先の変数に保持しているデータを書き込みしたかを判定する変数を作成します。
設定は下記のようにしてください。
・初回フラグ
変数名: | 初回フラグ | |
変数値: | 値、または数式 | 1 |
・書き込み未完了フラグ
変数名: | 書き込み未完了フラグ | |
変数値: | 値、または数式 | 0 |

手順2-2-3.ワークテーブルへのデータ書き込み
製造報告テーブルのデータを1行ずつ参照し、書き込み処理を行います。
手順2-2-3-1.繰り返し処理の追加
1件ずつデータを参照するため、[新しいコマンド]ボタンを押下し、繰り返しコマンドを追加します。
繰り返しのルールは下記のように設定します。
指定した回数分だけ繰り返し処理を行う | |
繰り返し回数、または繰り返し配列: | =製造報告テーブルのデータ |

手順2-2-3-2.1件目のデータか判定
変数「初回フラグ」を使って参照中のデータが1件目かどうかを判定し、条件分岐を行います。
[新しいコマンド]ボタンを押下し、繰り返しコマンドの子コマンドに条件分岐コマンドを追加します。
[Elseの追加]ボタンを押下し、条件に当てはまった場合とそうでない場合のコマンドを指定できるようにしておきます。
条件の設定をするため「If [条件式]」を押下し、[新しい条件]ボタンから条件を追加し以下のように設定します。
フィールド | 条件 | 値 |
---|---|---|
=初回フラグ | =(等しい) | 1 |

条件に合致する場合は各変数に値を入れるため、「If [条件式]」の下に変数の設定コマンドを4つ追加します。
それぞれの設定は下記のようになります。
・製造品目
変数名: | wk製造品目 | |
変数値: | 値、または数式 | =Item.製造品目 |
・費用区分
変数名: | wk費用区分 | |
変数値: | 値、または数式 | =Item.費用区分 |
・原価
変数名: | wk実際原価 | |
変数値: | 値、または数式 | =Item.単価*Item.数量 |
・初回フラグ
変数名: | 初回フラグ | |
変数値: | 値、または数式 | 0 |

手順2-2-3-3.集計と書き込み
原価の集計とデータの書き込みを行います。
先の項で作成済みの条件分岐コマンドのElseの子コマンドに新しく条件分岐コマンドを追加します。[Elseの追加]ボタンを押下し、条件に当てはまった場合とそうでない場合のコマンドを指定できるようにしておきます。
「If [条件式]」を押下し、[新しい条件]ボタンから前のデータと製造品目および費用区分が同じかどうかを判定するための条件を2つ追加し以下のように設定します。
And/Or | フィールド | 条件 | 値 |
---|---|---|---|
=wk製造品目 | =(等しい) | =Item.製造品目 | |
And | =wk費用区分 | =(等しい) | =Item.費用区分 |

条件に合致する場合は原価の集計を行い、書き込み未完了フラグをオンにします。
「If [条件式]」の下に変数の設定コマンドを2つ追加し、下記のように設定します。
・原価
変数名: | wk実際原価 | |
変数値: | 値、または数式 | =(Item.単価*Item.数量)+wk実際原価 |
・書き込み未完了フラグ
変数名: | 書き込み未完了フラグ | |
変数値: | 値、または数式 | 1 |

条件に合致しない場合はデータの書き込みを行います。
Elseの子コマンドにテーブルデータの更新コマンドを追加し、下記のように設定します。
処理の種類: | 追加 | |
対象テーブル: | wk_原価計算 | |
フィールド | 値 | |
製造品目 | =wk製造品目 | |
費用区分 | =wk費用区分 | |
実際原価 | =wk実際原価 | |
テーブル結合用キー | =wk製造品目&wk費用区分 |

データ書き込み後、原価の変数値と書き込み未完了フラグを再度セットする処理を追加します。
変数の設定コマンドを2つ追加し、下記のように設定します。
・原価
変数名: | wk実際原価 | |
変数値: | 値、または数式 | =Item.単価*Item.数量 |
・書き込み未完了フラグ
変数名: | 書き込み未完了フラグ | |
変数値: | 値、または数式 | 0 |

この条件分岐コマンドの条件に関係なく変数で保持している製造品目と費用区分の値を更新するため、Elseの外(=初回フラグの条件分岐のElseの子コマンドとなる)に変数の設定コマンドを2つ追加し、下記のように設定します。
・製造品目
変数名: | wk製造品目 | |
変数値: | 値、または数式 | =Item.製造品目 |
・費用区分
変数名: | wk費用区分 | |
変数値: | 値、または数式 | =Item.費用区分 |

手順2-2-4.終了処理
製造報告テーブルのすべてのデータを参照し終わった(=繰り返しコマンドの処理が終了した)際に、最後に参照したデータが書き込みをされているかチェックし、未完了の場合書き込みを行う処理を追加します。
条件分岐コマンドを追加し、「If [条件式]」を押下し、[新しい条件]ボタンから条件を追加し以下のように設定します。
フィールド | 条件 | 値 |
---|---|---|
=書き込み未完了フラグ | =(等しい) | 1 |

条件分岐コマンドの子コマンドにテーブルデータの更新コマンドを追加し、下記のように設定します。
処理の種類: | 追加 | |
対象テーブル: | wk_原価計算 | |
フィールド | 値 | |
製造品目 | =wk製造品目 | |
費用区分 | =wk費用区分 | |
実際原価 | =wk実際原価 | |
テーブル結合用キー | =wk製造品目&wk費用区分 |

ページ上のリストビューをリフレッシュし集計したデータを反映させるため、並べ替えコマンドを追加します。
このコマンドは条件分岐コマンドの子コマンドではないことに注意してください。条件は下記の通りです。
フィールド | 並び順 |
---|---|
[ID] | 昇順 |

最後に処理がすべて終わったことを示すため、メッセージの表示コマンドを追加します。
メッセージ欄に「集計が完了しました。」と入力し、[OK]ボタンを押下してコマンドウィンドウを閉じます。

3.品目標準原価マスタとワークテーブルを紐づける
品目標準原価マスタに手順2でデータを書き込んだwk_原価計算テーブルを関連付けし、データを参照できるようにします。
リストビューには既に品目標準原価マスタが連結されているため、この処理を行うとリストビューにwk_原価計算テーブルのデータを表示できるようになります。
手順3-1.関連付け用のキーの作成
品目標準原価マスタのデータは製造品目と費用区分が別々のフィールドで保管されており、このままテーブルの関連付けを設定しようとするとデータが一意にならずうまくいきません。
そのため、数式フィールドを使って新しいフィールドを作成します。
ナビゲーションウィンドウのテーブル欄にある品目標準原価マスタを右クリックし、[数式フィールドの追加…]をクリックします。
数式フィールドの追加ウィンドウが開くので、以下のように設定します。
フィールド名: | テーブル結合用キー |
データ型: | テキスト |
数式 | [品目]&[費用区分] |

手順3-2.テーブルの関連付け設定
作成した数式フィールド「テーブル結合用キー」にwk_原価計算テーブルとの関連付けを設定します。
ナビゲーションウィンドウのテーブル欄にある品目標準原価マスタを展開し、「テーブル結合用キー」を右クリックし[テーブルの関連付けを設定]をクリックします。
参照するフィールドの設定ウィンドウが開くので、下記のように設定します。
対象テーブル: | wk_原価計算 |
対象フィールド: | テーブル結合用キー |

品目標準原価マスタの「テーブル結合用キー」フィールドが展開できるようになり、実際原価が参照できるようになりました。
4.リストビューに項目をセットする
原価分析ページのリストビューの空欄に項目をセットします。
手順4-1.実際原価の追加
手順3で関連付けを設定したため、品目標準原価マスタから実際原価が参照できるようになっています。これをリストビューにセットします。
ナビゲーションウィンドウのテーブル欄から品目標準原価マスタを展開し、さらに「テーブル結合用キー」フィールドを展開します。
N7セルに「実際原価」をドラッグ&ドロップします。

手順4-2.数式のセット
原価差異と差異率はテーブルに存在しないため、リストビューに直接数式を入力します。
入力するセルと数式は下記の通りです。
項目 | セル番地 | 数式 |
---|---|---|
原価差異 | R7 | =N7-J7 |
差異率 | V7 | =N7/J7 |

これで、ページの設定は完了です。
5.デバッグを実行する
リボンの[ホーム]>[デバッグ]>[開始]ボタン、またはForguncy Builderの左上にある▶ボタンを押下してプロジェクトをデバッグ実行します。

作成したページがブラウザで表示されます。集計ボタンを押下すると表の実際原価、原価差異と差異率に値が表示されることを確認してください。

Forguncyのリストビューについてもっと知る
製品サイトでは、ForguncyのUIパーツや活用方法についてより詳しくご紹介しています。
こちらもぜひご活用ください。
>開発スタートガイド – Forguncyで機能的なUIを作成する