コンテンツにスキップ

iDempiere リクエスト標準回答の使い方|取引先管理 操作マニュアル・技術仕様

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

リクエスト標準回答は、問い合わせ対応でよく使う定型文をあらかじめ登録しておくマスタです。リクエスト画面で標準回答を選ぶと、登録したテキストが回答欄へコピーされ、担当者ごとの表現ゆれや入力の手間をなくせます。

📌 ポイント: 標準回答は選択した瞬間に Callout(CalloutRequest.copyResponse)が動作し、テキストがリクエスト側へコピーされます。コピー後の文面はリクエスト上で自由に編集できるため、「たたき台」として使うのが実務的です。

リクエスト標準回答でできること

Section titled “リクエスト標準回答でできること”
  • よくある問い合わせへの定型回答文の登録(最大2,000文字)
  • リクエスト画面での定型文のワンクリック挿入
  • 回答品質・表現の標準化(担当者による表現ゆれの防止)
  • 名称による定型文の検索・選別
  • 有効/無効フラグによる文面の世代管理

リクエスト標準回答は単一タブのシンプルなマスタです。

タブ名テーブル項目数役割
標準回答R_StandardResponse5項目定型文の名称と本文

💡 ヒント: 名称は一覧から選ぶときの目印になります。「【請求】支払期日の確認」のように、用途が一目でわかる接頭辞を付けると選びやすくなります。

graph TD
    A["🚀 メニューから開く<br/>取引先管理 > リクエスト管理 > リクエスト標準回答"] --> B["➕ 新規で標準回答を作成"]
    B --> C["🏷 名称を入力<br/>(用途がわかる見出し)"]
    C --> D["✍️ 回答テキストを入力<br/>(最大2000文字・必須)"]
    D --> E["💾 保存"]
    E --> F["📨 リクエスト画面で<br/>標準回答を選択"]
    F --> G["⚙️ Callout が本文を<br/>リクエストへコピー"]
    G --> H["🖊 必要に応じて<br/>個別内容を追記して送信"]

メニューから開く 取引先管理 > リクエスト管理 > リクエスト標準回答 新規で標準回答を作成 名称を入力 (用途がわかる見出し) 回答テキストを入力 (最大2000文字・必須) 保存 リクエスト画面で 標準回答を選択 Callout が本文を リクエストへコピー 必要に応じて 個別内容を追記して送信

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

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

メニューから「取引先管理 > リクエスト管理 > リクエスト標準回答」を開きます(AD_Window_ID: 348)。

  1. ツールバーの「新規」ボタンをクリック
  2. 基本情報を入力:
    • 名称(必須): 標準回答の見出し(例: 【一次受付】受付完了のご連絡
    • 回答テキスト(必須): 実際に送る本文(2,000文字まで)
  3. 保存」をクリック
  1. リクエスト画面で対象のリクエストを開きます
  2. 標準回答」欄で登録済みの定型文を選択します
  3. 選択と同時に Callout が動作し、回答テキストがコピーされます
  4. 宛名や個別事情を追記して回答を確定します

⚠️ 注意: 回答テキストは2,000文字までです。長文の案内が必要な場合は、複数の標準回答に分割するか、詳細は添付ファイルやドキュメントURLへ誘導する構成にしてください。

項目名必須説明
クライアント必須選択テナント(既定値は自動セット)
組織必須選択組織(既定値は自動セット)
名称必須文字列(60)標準回答の見出し。識別子として使用
回答テキスト必須テキスト(2000)リクエストへコピーされる本文
有効-チェック既定値はY。外すと新規選択の対象外

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

Q. 回答テキストは必須ですか?

Section titled “Q. 回答テキストは必須ですか?”

はい。ResponseTextIsMandatory=Y の必須カラムです。名称だけを登録して本文を後から追記する運用はできません。下書き段階の文面でも、何らかのテキストを入れて保存する必要があります。

Q. 標準回答を選ぶと元の入力内容は消えますか?

Section titled “Q. 標準回答を選ぶと元の入力内容は消えますか?”

標準回答の選択時には Callout CalloutRequest.copyResponse が動作し、選択した標準回答の名称と回答テキストを取得してリクエストの回答テキストへ反映します。既存の入力がある場合の挙動は運用前にテスト環境で必ず確認し、必要なら先に本文を退避してから選択してください。

Q. 一度使った標準回答の選択状態は残りますか?

Section titled “Q. 一度使った標準回答の選択状態は残りますか?”

RequestEventHandler にはリクエスト処理の中で R_StandardResponse_ID を 0 にリセットする処理が含まれています。標準回答は「一度コピーするためのトリガー」であり、リクエストに恒久的に紐付ける項目ではないと理解してください。

Q. 標準回答を削除できますか?

Section titled “Q. 標準回答を削除できますか?”

R_StandardResponse テーブルは削除可能(IsDeleteable=Y)です。ただし過去のリクエストからの参照が残っている場合は削除できないことがあります。使わなくなった文面は「有効」チェックを外して無効化するのが安全です。

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

リクエスト標準回答はマスタデータ型のウィンドウで、R_StandardResponse テーブルに格納されます。専用の M クラスは存在せず、生成クラス X_R_StandardResponse(およびインターフェース I_R_StandardResponse)のみが提供されます。ビジネスロジックはモデル側ではなく、Callout(CalloutRequest)とイベントハンドラ(RequestEventHandler)に置かれています。

テーブルアクセスレベル削除可大量データビュー
R_StandardResponse6(システム+クライアント)YNN
classDiagram
    class X_R_StandardResponse {
        <<generated>>
        +getName() String
        +getResponseText() String
    }
    class I_R_StandardResponse {
        <<interface>>
    }
    class PO {
        <<abstract>>
    }
    class CalloutRequest {
        +copyResponse(ctx, WindowNo, mTab, mField, value) String
        +copyMail(ctx, WindowNo, mTab, mField, value) String
    }
    X_R_StandardResponse --|> PO
    X_R_StandardResponse ..|> I_R_StandardResponse
    CalloutRequest --> X_R_StandardResponse : reads Name, ResponseText
    MRequest --> X_R_StandardResponse : R_StandardResponse_ID

<> +getName() String +getResponseText() String <> <> +copyResponse(ctx, WindowNo, mTab, mField, value) String +copyMail(ctx, WindowNo, mTab, mField, value) String > PO X_R_StandardResponse ..

パッケージ: org.compiere.model ソースファイル(生成クラス): org.adempiere.base/src/org/compiere/model/X_R_StandardResponse.java ソースファイル(Callout): org.adempiere.base.callout/src/org/compiere/model/CalloutRequest.java

カラム名必須説明備考
R_StandardResponse_IDIDPK標準回答ID主キー
AD_Client_IDTable DirectYテナント既定値 @#AD_Client_ID@
AD_Org_IDTable DirectY組織既定値 @#AD_Org_ID@
NameString(60)Y名称識別子(IsIdentifier=Y)
ResponseTextText(2000)Y回答テキスト必須。リクエストへコピーされる本文
IsActiveYes-NoY有効既定値 Y
R_StandardResponse_UUUUIDNUUID
erDiagram
    R_StandardResponse ||--o{ R_Request : "copied into response"
    R_Request ||--o{ R_RequestUpdate : "update history"
    R_Request }o--|| R_Status : "status"

copied into response update history

標準回答の中核ロジックは CalloutRequest.copyResponse() にあります。

flowchart TD
    A["リクエスト画面で<br/>標準回答を選択"] --> B["copyResponse Callout 起動"]
    B --> C{"R_StandardResponse_ID が有効?"}
    C -->|いいえ| D["何もしない"]
    C -->|はい| E["SELECT Name, ResponseText<br/>FROM R_StandardResponse<br/>WHERE R_StandardResponse_ID = ?"]
    E --> F["取得したテキストを<br/>リクエストの回答へ反映"]

リクエスト画面で 標準回答を選択 copyResponse Callout 起動 R_StandardResponse_ID が有効? 何もしない SELECT Name, ResponseText FROM R_StandardResponse WHERE R_StandardResponse_ID = ? 取得したテキストを リクエストの回答へ反映 いいえ はい

同じ CalloutRequest クラスには、メール定型文を扱う copyMail()、リクエストタイプ変更時の type() も実装されています。

RequestEventHandler では、リクエスト処理の過程で setR_StandardResponse_ID(0) を実行する箇所があります。標準回答は「コピー用の一時的な選択」として扱われる設計です。

R_StandardResponse には M クラスがないため、beforeSave() / afterSave() によるカスタムバリデーションは標準では存在しません。制約は AD 定義の必須指定(NameResponseText)とDB制約のみです。

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

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

M クラスがなくても、Model Validator は POget_TableName() で対象を判定して適用できます。

public class CustomStandardResponseValidator implements ModelValidator {
@Override
public int modelChange(PO po, int type) throws Exception {
if (I_R_StandardResponse.Table_Name.equals(po.get_TableName())
&& (type == TYPE_BEFORE_NEW || type == TYPE_BEFORE_CHANGE)) {
String text = (String) po.get_Value("ResponseText");
// 例: 差し込み変数の記法チェック
if (text != null && text.contains("@") && !text.matches("(?s).*@\\w+@.*")) {
throw new AdempiereException("差し込み変数は @変数名@ の形式で記述してください");
}
}
return null;
}
}

CalloutRequest.copyResponse の挙動(既存テキストへの追記にする、署名を自動付与するなど)を変えたい場合は、コアを改変せず独自 Callout を OSGi サービスとして登録し、AD_Column.Callout の設定を差し替えます。


定型回答は、サポート対応の速度と品質を同時に上げる投資対効果の高い仕組みです。差し込み変数の自動展開や、カテゴリ別の候補絞り込みなどは Callout の拡張で実現できます。

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

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