コンテンツにスキップ

iDempiere チャート設定の使い方|会計 操作マニュアル・技術仕様

📖 会計の全体像: 会計の全体図 も合わせてご覧ください。

チャート設定は、SQL で定義したデータソースから棒グラフ・折れ線・円グラフ等を生成するための定義マスタです。定義したチャートはダッシュボードのガジェット等に表示でき、業績のグラフィカルな把握(パフォーマンス測定)に使用します。

📌 ポイント: チャートの見た目(種類・凡例・軸ラベル)は「チャート」タブ、集計元データ(FROM句・WHERE句・値カラム)は「データソース」タブと役割が分かれています。1 つのチャートに複数のデータソースを登録して系列(シリーズ)を重ねることができます。

  • チャート種類の選択(棒・折れ線・積み上げ棒・円・3D円・リング等)
  • SQL(FROM句・WHERE句・値カラム・カテゴリカラム)によるデータソース定義
  • 時系列チャート(日・週・月・四半期・年単位のグルーピングと表示範囲指定)
  • 縦・横の向き(Orientation)、凡例表示、軸ラベルの設定
  • キーカラムとテーブル指定によるチャート要素からのズーム(レコードへのドリルダウン)
  • チャート名・軸ラベルの多言語翻訳
タブ名テーブル項目数役割
チャートAD_Chart約15項目チャート種類・向き・凡例・時系列設定・軸ラベル
データソースAD_ChartDatasource約16項目SQL定義(FROM/WHERE・値/カテゴリ/日付カラム・ズーム用キー)
Datasource TranslationAD_ChartDatasource_Trl約7項目データソース名(系列名)の翻訳
翻訳AD_Chart_Trl約10項目チャート名・軸ラベルの翻訳
graph TD
    A["🚀 メニューから開く<br/>会計管理 > パフォーマンス測定 > チャート設定"] --> B["➕ 新規で名称・Chart Type・<br/>Orientation を入力"]
    B --> C{時系列チャート?}
    C -->|Yes| D["⏱ Time Series にチェック<br/>Time Unit(日/週/月/四半期/年)と<br/>Time Scope を設定"]
    C -->|No| E["💾 チャートタブを保存"]
    D --> E
    E --> F["📊 データソースタブで<br/>FROM句・Value Column・<br/>Category/Date Column を定義"]
    F --> G["🔍 ズームさせる場合は<br/>テーブルとキーカラムを指定"]
    G --> H["💾 保存 → ダッシュボード等で表示確認"]

メニューから開く 会計管理 > パフォーマンス測定 > チャート設定 新規で名称・Chart Type・ Orientation を入力 ⏱ Time Series にチェック Time Unit(日/週/月/四半期/年)と Time Scope を設定 チャートタブを保存 データソースタブで FROM句・Value Column・ Category/Date Column を定義 ズームさせる場合は テーブルとキーカラムを指定 保存 → ダッシュボード等で表示確認 時系列チャート?

メニューから「会計管理 > パフォーマンス測定 > チャート設定」を開きます。

  1. ツールバーの「新規」ボタンをクリック
  2. チャートタブで基本情報を入力:
    • 名称: チャート名(タイトルとして表示)
    • Chart Type: 描画するチャートの種類(必須)
    • Orientation: 縦(V)/ 横の向き(必須、デフォルト V)
    • Display Legend: 凡例を表示するか(デフォルト Y)
    • ドメイン名 / Range Label: 横軸・縦軸のラベル
    • 時系列の場合: Time Series にチェックし、Time Unit(グルーピング単位)と Time Scope(表示する期間数)を設定
  3. 保存」をクリック
  4. データソースタブで集計 SQL を定義:
    • 名称: 系列名(Series Column 未指定時はこの名称が系列名になる)
    • SQL FROM句: 集計元テーブル(必須)
    • Value Column: 集計する値のカラム(必須)
    • Category Column / 日付カラム: カテゴリ軸(時系列の場合は日付カラム)
    • SQL WHERE句: 絞り込み条件(コンテキスト変数使用可)
  5. 保存」をクリック

💡 ヒント: WHERE句には @#AD_Client_ID@ などのコンテキスト変数が使用できます(実行時に Env.parseContext() で解決されます)。マルチテナント環境では必ずクライアント条件を入れてください。

項目名必須説明
名称必須文字列チャート名
Chart Type必須リストチャートの種類(棒・折れ線・円等)
Orientation必須リストチャートの向き(デフォルト V=縦)
Display Legend必須チェック凡例の表示(デフォルト Y)
Time Series必須チェックドメイン軸を時間で編成するか(デフォルト N)
Time Unit-リスト時系列のグルーピング単位(日/週/月/四半期/年)
Time Scope-整数表示に含める期間数
ドメイン名-文字列ドメイン軸(横軸)のラベル
Range Label-文字列レンジ軸(縦軸)のラベル
ウィンドウ高さ-整数描画サイズ(最小 1)
エンティティタイプ必須選択辞書の所有・同期区分
項目名必須説明
名称必須文字列データソース名(系列名の既定値)
SQL FROM句必須テキスト集計元の FROM 句
Value Column必須文字列集計値のカラム(完全修飾)
Category Column-文字列カテゴリ軸のカラム
日付カラム-文字列時系列チャートの日付カラム
Series Column-文字列系列を分けるカラム
SQL WHERE句-テキスト絞り込み条件(コンテキスト変数可)
Time Offset-整数現在日からのオフセット期間数
テーブル-選択ズーム先のテーブル
キーカラム-文字列ズーム時のレコード特定キー

全項目一覧はリファレンス参照

Q. 時系列チャートはどの単位で集計されますか?

Section titled “Q. 時系列チャートはどの単位で集計されますか?”

Time Unit に応じて日付カラムを TRUNC(日付, 単位) で丸めてグルーピングします(日=D、週=W、月=MM、四半期=Q、年=Y)。表示ラベルも単位に応じたフォーマット(例: 月なら yyyy-MMM)で生成されます。

Q. チャートの要素をクリックして元データにジャンプできますか?

Section titled “Q. チャートの要素をクリックして元データにジャンプできますか?”

できます。データソースタブで「テーブル」と「キーカラム」を設定すると、クリックした系列・カテゴリに該当するレコード ID 群を再検索し、対象テーブルへのズームクエリを生成します(MChartDatasource.getZoomQuery())。該当レコードがない場合は「レコードなし」クエリになります。

Q. 1 つのチャートに複数の系列を表示するには?

Section titled “Q. 1 つのチャートに複数の系列を表示するには?”

方法は 2 つあります。(1) データソースを複数登録する(各データソースの名称が系列名になります)。(2) 1 つのデータソースで Series Column に系列を分けるカラムを指定する。

Q. WHERE句に動的な条件を書けますか?

Section titled “Q. WHERE句に動的な条件を書けますか?”

書けます。WHERE句は実行時にコンテキスト変数(例: @#AD_Client_ID@、ウィンドウのフィールド値)を解決してから実行されます。ログイン クライアントや画面の選択値に応じた絞り込みが可能です。

🛠 技術仕様(開発者向け)

チャート設定は AD_Chart(チャート定義)と AD_ChartDatasource(データ定義)に格納されます(アクセスレベル: System+Client。翻訳テーブル AD_Chart_Trl / AD_ChartDatasource_Trl を含む 4 テーブル構成)。MChart クラス(219行)が描画・JSON データ生成、MChartDatasource クラス(193行)が SQL 組み立てとズームを担います。描画エンジンは JFreeChart(ChartBuilder 経由)です。Document 型ではありません。

classDiagram
    class MChart {
        +getDatasources() List~MChartDatasource~
        +setWindowNo(int)
        +getChartImage(int width, int height) BufferedImage
        +getData() JsonObject
    }
    class MChartDatasource {
        +getZoomQuery(MChart, String value, String category2) MQuery
    }
    class X_AD_Chart {
        <<generated>>
    }
    class X_AD_ChartDatasource {
        <<generated>>
    }
    class PO {
        <<abstract>>
    }
    MChart --|> X_AD_Chart
    MChartDatasource --|> X_AD_ChartDatasource
    X_AD_Chart --|> PO
    X_AD_ChartDatasource --|> PO
    MChart --> MChartDatasource : has many
    MChart ..> ChartBuilder : JFreeChart 描画

+getDatasources() List~MChartDatasource~ +setWindowNo(int) +getChartImage(int width, int height) BufferedImage +getData() JsonObject +getZoomQuery(MChart, String value, String category2) MQuery <> <> > X_AD_Chart MChartDatasource -- > PO X_AD_ChartDatasource --

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/MChart.javaMChartDatasource.java

カラム名必須説明備考
AD_Chart_IDIDPKチャートID主キー
NameString(60)Y名称識別子
ChartTypeList(2)Yチャート種類
ChartOrientationList(1)Y向きdefault V
IsDisplayLegendYesNoY凡例表示default Y
IsTimeSeriesYesNoY時系列フラグdefault N
TimeUnitList(1)N時間単位日/週/月/四半期/年
TimeScopeIntegerN期間数
DomainLabel / RangeLabelString(60)N軸ラベル翻訳対象
WinHeightIntegerN描画高さ最小値 1
EntityTypeTable(40)Yエンティティタイプdefault は SysConfig DEFAULT_ENTITYTYPE

AD_ChartDatasource(チャートデータソース)

Section titled “AD_ChartDatasource(チャートデータソース)”
カラム名必須説明備考
AD_ChartDatasource_IDIDPKデータソースID主キー
AD_Chart_IDTableDirectY親チャートFKisparent
NameString(60)Y名称(系列名の既定値)
FromClauseText(2000)YSQL FROM句
WhereClauseText(2000)NSQL WHERE句実行時に Env.parseContext() で変数解決
ValueColumnString(124)Y値カラム
CategoryColumnString(124)Nカテゴリカラム
DateColumnString(124)N日付カラム時系列時に TRUNC() される
SeriesColumnString(124)N系列カラム未指定時は Name を系列名に使用
TimeOffsetIntegerN期間オフセット
AD_Table_IDTableDirectNズーム先テーブル
KeyColumnString(124)Nズーム用キーカラム
erDiagram
    AD_Chart ||--o{ AD_ChartDatasource : "has datasources"
    AD_Chart ||--o{ AD_Chart_Trl : "translations"
    AD_ChartDatasource ||--o{ AD_ChartDatasource_Trl : "translations"
    AD_ChartDatasource }o--o| AD_Table : "zoom target"

has datasources zoom target

  • getChartImage(width, height): ChartBuilder で JFreeChart オブジェクトを生成し、BufferedImage(半透明、前景アルファ 0.8)を返します。サイズ未指定時は WinHeight、それも無ければ 100px 四方
  • getData(): チャートデータを JSON で返します。時系列の棒/折れ線/積み上げ棒は XYDataset、円/3D円/リングは PieDataset、それ以外は CategoryDataset を使用。名称・軸ラベルは get_Translation() で翻訳済みの値を出力

SQL 組み立てとズーム(MChartDatasource)

Section titled “SQL 組み立てとズーム(MChartDatasource)”

getZoomQuery() は表示中の値・カテゴリから元レコードを特定します:

  1. 時系列の場合、カテゴリ式を TRUNC(DateColumn, unit)(D/W/MM/Q/Y)で構築
  2. WHERE句をコンテキスト変数解決(Env.parseContext
  3. SELECT KeyColumn, category, series FROM FromClause [WHERE ...] GROUP BY / ORDER BY を実行
  4. クリックされた値に一致する行の ID を収集し、AD_Table_ID のテーブルに対する MQuery を返却(一致なしなら NoRecordQuery)

⚠️ 注意: FROM句・WHERE句・カラム名は SQL にそのまま連結されます。データソースの定義はシステム管理者権限で管理し、入力値の由来に注意してください。

  • Model Validator: AD_Chart / AD_ChartDatasource の保存時に SQL 定義の命名規則・必須条件(クライアント条件の強制等)をチェック可能
  • カスタムダッシュボードガジェット: MChart.getChartImage() / getData() を呼び出して独自 UI(ZK ガジェット・外部連携)にチャートを埋め込み可能
  • callout: このウィンドウのカラムに callout は定義されていません

リファレンスページ・メニューに関連プロセスの登録はありません(チャートはダッシュボード表示時に動的に描画されます)。


チャート設定は SQL 定義だけで独自 KPI グラフをダッシュボードに追加できます。複雑な集計ビューの設計や、独自ガジェットによる可視化拡張もご相談ください。

As-Link株式会社では、OSGiプラグインによる安全なカスタマイズを提供しています。

OSS ERP導入・カスタマイズサービスの詳細はこちら