Skip to content

iDempiere 敬称の使い方|取引先管理 操作マニュアル・技術仕様

This content is not available in your language yet.

📖 取引先管理の全体像: 取引先管理の全体図 も合わせてご覧ください。

敬称は、帳票やメールの宛名に印字する「◯◯様」「Dear Mr. ◯◯」といった呼びかけの書式を定義するマスタです。登録した敬称は取引先マスタおよび取引先担当者(ユーザー)に割り当てられ、印刷時に置換されます。

📌 ポイント: 敬称の文言には {0} プレースホルダを使います。実行時に {0} が相手の名前に置き換わるため、日本語運用では敬称欄に {0} 様 と登録するのが基本形です。

  • 帳票・メールの宛名書式の定義({0} による名前の差し込み)
  • 名前の一部だけを使う指定(名字のみ フラグ)
  • デフォルト敬称の指定(新規取引先で自動セット)
  • 言語ごとの敬称文言の翻訳登録
  • 取引先マスタ・取引先担当者への割当

敬称はシンプルな2タブ構成です。

タブ名テーブル項目数役割
敬称C_Greeting7項目敬称の本体(名称・文言・フラグ)
翻訳C_Greeting_Trl8項目言語ごとの敬称文言

💡 ヒント: 単一言語での運用であれば「敬称」タブだけで設定が完了します。翻訳タブは多言語クライアント(複数の AD_Language を有効化している環境)でのみ使用してください。

graph TD
    A["🚀 メニューから開く<br/>取引先管理 > 取引先管理セットアップ > 敬称"] --> B["➕ 新規で名称を入力<br/>(例: 様)"]
    B --> C["✍️ 敬称の文言を入力<br/>(例: {0} 様)"]
    C --> D{名前の扱い}
    D -->|フルネームを使う| E["名字のみ のチェックを外す"]
    D -->|名の部分だけを使う| F["名字のみ にチェック"]
    E --> G{既定にするか}
    F --> G
    G -->|する| H["⭐ デフォルト にチェック"]
    G -->|しない| I["💾 保存"]
    H --> I
    I --> J{多言語運用か}
    J -->|はい| K["🌐 翻訳タブで<br/>言語別の文言を登録"]
    J -->|いいえ| L["🔗 取引先マスタ・担当者に<br/>敬称を割り当て"]
    K --> L

メニューから開く 取引先管理 > 取引先管理セットアップ > 敬称 新規で名称を入力 (例: 様) 敬称の文言を入力 (例: {0} 様) 名字のみ のチェックを外す 名字のみ にチェック デフォルト にチェック 保存 翻訳タブで 言語別の文言を登録 取引先マスタ・担当者に 敬称を割り当て 名前の扱い 既定にするか 多言語運用か フルネームを使う 名の部分だけを使う する しない はい いいえ

アクセス方法(メニューパス)

Section titled “アクセス方法(メニューパス)”

メニューから「取引先管理 > 取引先管理セットアップ > 敬称」を開きます。

新規登録(必須項目ベースの手順)

Section titled “新規登録(必須項目ベースの手順)”
  1. ツールバーの「新規」ボタンをクリック
  2. 必須項目を入力:
    • 名称: 一覧で表示される識別名(60文字以内、例: 御中
    • 有効: 既定でチェック済み
  3. 敬称(任意)に印字する文言を入力:
    • 例: {0} 様 — 実行時に {0} が相手の名前に置換されます
    • 空欄のままでも保存できますが、その場合は印字用の文言が存在しません
  4. 必要に応じてフラグを設定:
    • 名字のみ: 名前の一部だけを差し込む場合にチェック
    • デフォルト: 既定の敬称として使う場合にチェック
  5. 保存」をクリック

⚠️ 注意: 「名字のみ」(IsFirstNameOnly)は AD の原文が Print only the first name in greetings で、ファーストネーム(名)のみを印字するという意味です。日本語ラベルの語感と原義がずれているため、日本語の姓名運用で使う際は挙動を実データで確認してから採用してください。

  1. 翻訳」タブに移動
  2. 対象の言語を選択
  3. その言語での名称敬称の文言を入力
  4. 翻訳するにチェックを入れて保存
項目名必須説明
クライアント必須選択テナント
組織必須選択組織
名称必須文字列(60)敬称の識別名
有効必須チェックレコードが有効か(既定 Y)
敬称-文字列(60)印字する文言。{0} が名前に置換される
名字のみ必須チェック名(ファーストネーム)のみを印字するか
デフォルト必須チェック既定の敬称として使用するか
項目名必須説明
敬称必須選択親の敬称レコード
言語必須選択対象言語
名称必須文字列当該言語での名称
敬称-文字列当該言語での印字文言
翻訳する必須チェック翻訳済みとして扱うか

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

Q. 敬称はどこで使われますか?

Section titled “Q. 敬称はどこで使われますか?”

取引先マスタおよび取引先担当者(ユーザー)に C_Greeting_ID として割り当てられ、帳票やメールの宛名生成で参照されます。取引先グループの「所属取引先」タブでも敬称欄が表示されます。

Q. {0} 以外のプレースホルダは使えますか?

Section titled “Q. {0} 以外のプレースホルダは使えますか?”

AD の説明は "Dear {0}" のように {0} のみを挙げており、実行時に {0} が名前に置換されるとされています。複数のプレースホルダを使った複雑な差し込みが必要な場合は、メールテンプレート側の @変数@ 記法を利用してください。

Q. 「デフォルト」を複数のレコードにチェックするとどうなりますか?

Section titled “Q. 「デフォルト」を複数のレコードにチェックするとどうなりますか?”

C_Greeting には beforeSave() を持つ M クラスが存在せず(生成クラス X_C_Greeting のみ)、コア側に一意制約チェックのロジックはありません。重複を許してしまうため、既定にしたい敬称は1件だけにする運用ルールが必要です。

C_Greeting は削除可(IsDeleteable=Y)ですが、取引先や担当者から参照されている場合は外部キー制約でエラーになります。使わなくなった敬称は削除せず「有効」のチェックを外して無効化してください。

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

敬称は C_Greeting テーブル(アクセスレベル 3 = クライアント/組織、削除可)に格納されます。専用の M クラス(MGreeting)は存在せず、AD から自動生成された X_C_Greeting(237行)のみが提供されます。したがって beforeSave() / afterSave() によるカスタム検証はコアに実装されていません。翻訳テーブル C_Greeting_Trl も同様に生成クラスのみです。Document 型ではありません。

classDiagram
    class X_C_Greeting {
        <<generated>>
        +getGreeting() String
        +isFirstNameOnly() boolean
        +isDefault() boolean
        +getKeyNamePair() KeyNamePair
    }
    class I_C_Greeting {
        <<interface>>
    }
    class I_Persistent {
        <<interface>>
    }
    class PO {
        <<abstract>>
    }
    X_C_Greeting --|> PO
    X_C_Greeting ..|> I_C_Greeting
    X_C_Greeting ..|> I_Persistent
    X_C_Greeting --> X_C_Greeting_Trl : translations

<> +getGreeting() String +isFirstNameOnly() boolean +isDefault() boolean +getKeyNamePair() KeyNamePair <> <> > PO X_C_Greeting ..

パッケージ: org.compiere.model ソースファイル: org.adempiere.base/src/org/compiere/model/X_C_Greeting.java(インターフェース: I_C_Greeting.java

カラム名必須説明備考
C_Greeting_IDIDPK敬称ID主キー
C_Greeting_UUUUID(36)NUUID
AD_Client_IDTable DirectYクライアント既定 @#AD_Client_ID@
AD_Org_IDTable DirectY組織既定 @#AD_Org_ID@
NameString(60)Y名称識別子
GreetingString(60)N敬称の文言{0} を名前に置換
IsFirstNameOnlyYes-NoY名字のみ原義は「名のみ印字」
IsDefaultYes-NoYデフォルト一意制約なし
IsActiveYes-NoY有効既定 Y
カラム名必須説明
C_Greeting_IDTable DirectPK敬称FK
AD_LanguageTablePK言語コード
NameStringY当該言語の名称
GreetingStringN当該言語の文言
IsTranslatedYes-NoY翻訳済みフラグ
erDiagram
    C_Greeting ||--o{ C_Greeting_Trl : "translations"
    C_Greeting ||--o{ C_BPartner : "greeting for partner"
    C_Greeting ||--o{ AD_User : "greeting for contact"

greeting for partner greeting for contact

C_Greeting には M クラスが存在しないため、コア側にビジネスロジックはありませんX_C_Greeting が提供するのは POJO 相当のアクセサ(getGreeting() / isFirstNameOnly() / isDefault() など)と getKeyNamePair() のみで、保存時の検証・派生値の計算は行われません。

このため次の点はアプリケーション側の責務になります。

  • IsDefault の一意性担保(重複チェックなし)
  • Greeting 文言中の {0} の有無チェック
  • {0} の置換処理そのもの(呼び出し側の印刷・メール生成処理が担当)

拡張ポイント(カスタマイズ箇所)

Section titled “拡張ポイント(カスタマイズ箇所)”

C_Greeting / C_Greeting_Trl のカラムには Callout の登録がありませんAD_Column.Callout はすべて未設定)。入力補助が必要なら独自 Callout を追加します。

M クラスが無い分、検証は Model Validator で追加するのが定石です。

public class CustomGreetingValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if ("C_Greeting".equals(po.get_TableName())
&& (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
String greeting = (String) po.get_Value("Greeting");
// 例: 文言に {0} が含まれているかを強制
if (greeting != null && !greeting.contains("{0}")) {
throw new AdempiereException("敬称の文言には {0} を含めてください");
}
// 例: デフォルトの一意性チェックもここで実装できます
}
return null;
}
}

C_Greeting は M クラスが無いため、po instanceof MGreeting ではなく po.get_TableName() で判定します。

より本格的に振る舞いを持たせる場合は、X_C_Greeting を継承したクラスを作成し、OSGi の IModelFactory サービスとして登録することで、コアの MTable.getPO() から自作クラスを返せます。


敬称は M クラスを持たない軽量マスタのため、日本語の姓名表記や敬称の使い分けルールを反映するには Model Validator や独自 Model Factory による拡張が有効です。

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

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