【VtigerCRM開発・設計】フィールドの属性情報と「UIタイプ(uitype)」完全リファレンスガイド

VtigerCRMCRM

オープンソース版VtigerCRMのモジュール開発やカスタマイズ、外部システム連携(API / データベース直接操作)を行う上で、必ず理解しておく必要があるのが「フィールド属性(vtiger_fieldテーブル)」「UIタイプ(uitype)」の仕組みです。

VtigerCRMでは、各項目が画面上で「テキスト入力」になるのか「ドロップダウン」になるのか、あるいは「カレンダーピッカー」になるのかを、uitype と呼ばれる識別番号によって厳密に制御しています。

本記事では、フィールドの属性情報を司る vtiger_field テーブルの重要カラムと、実務で頻出する主要な uitype 一覧・使い分けを詳しく解説します。

1. フィールドのメタデータを司る「vtiger_field」テーブル

VtigerCRMに存在するすべてのフィールド(標準・カスタム問わず)の定義情報は、データベース内の vtiger_field テーブル に格納されています。

主要なカラム一覧と役割

カラム名データ型説明・役割
tabidintどのモジュールに属するかを示すモジュールID(vtiger_tab テーブルの tabid と紐付く)
fieldidintフィールド固有のプライマリキー(連番)
columnnamevarchar実際のデータ保存テーブル上で作成される物理カラム名(例:cf_1234, accountname
tablenamevarcharデータが保存される実テーブル名(例:vtiger_account, vtiger_accountscf
fieldlabelvarchar画面上の表示ラベル(言語ファイルでの翻訳キーにもなる)
uitypeint【最重要】 入力UIや表示形式・データ処理方法を決定するUIタイプ番号
typeofdatavarcharバリデーションルール(V~M = 文字列・必須入力、N~O = 数値・任意入力 など)
displaytypeint表示権限(1: 通常表示・編集可、2: 参照のみ、3: 非表示、4: 読取専用など)
presenceint0: 常に有効、2: ユーザーが有効/無効切替可能

2. 実務でよく使う主要「UIタイプ(uitype)」一覧

uitype は、画面レンダリング(Smarty/Vue等)、入力バリデーション、DB保存時のフォーマット変換などを一括で決定づける識別番号です。

① 基本入力系

  • uitype = 1:単一行テキスト(Varchar)
    • 最も汎用的な1行の文字列入力フィールド。氏名、タイトル、任意のメモなど。
  • uitype = 2:氏名(Name)
    • 名・姓の組み合わせなど、氏名専用の特殊な挙動を持つテキスト。
  • uitype = 7:数値(Number)
    • 整数または小数点を含む数値入力。3桁カンマ区切り表示などが自動適用されます。
  • uitype = 71:金額(Currency)
    • 通貨記号(¥、$など)が付与され、ユーザーの通貨設定に応じた計算が行われる数値。
  • uitype = 56:チェックボックス(Boolean)
    • オン / オフ(1 / 0)を切り替えるチェックボックス。

② 選択肢・ドロップダウン系

  • uitype = 15:単一選択(Picklist)
    • 管理画面の「選択リストエディタ」で選択肢を管理できる標準ドロップダウン。
  • uitype = 16:非編集選択肢(Non-editable Picklist)
    • システム固定値など、一般管理者が選択肢の追加・削除を行えない静的ドロップダウン。
  • uitype = 33:複数選択(Multi-select Picklist)
    • 複数の選択肢を同時に選べるリストボックス。DB内部では文字列(|##| 区切り等)で保存されます。

③ 日付・時刻系

  • uitype = 5:日付(Date)
    • カレンダーピッカーから「YYYY-MM-DD」形式で選択・入力する日付専用項目。
  • uitype = 70:作成日時・更新日時(Datetime)
    • レコード作成日(Created Time)や更新日(Modified Time)など、システムが自動更新するタイムスタンプ。

④ 参照・リレーション系(他モジュールとの紐付け)

  • uitype = 10:汎用参照フィールド(Related To)
    • ポップアップや検索で他モジュールのレコードを紐付けるリレーション項目(取引先、連絡先、案件など)。vtiger_fieldmodulerel テーブルで参照先モジュールを定義します。
  • uitype = 53:担当者(Assigned To)
    • レコードの所有者(ユーザーまたはグループ)を指定するドロップダウン。
  • uitype = 51:顧客企業参照(Accounts Popup)
    • 取引先(Accounts)モジュールを特定して呼び出すポップアップ選択項目。

⑤ 長文・URL・連絡先系

  • uitype = 19 / 21:テキストエリア(TextArea)
    • 複数行のテキスト入力。説明欄や詳細備考など。
  • uitype = 13:メールアドレス(Email)
    • クリック時にメーラー起動やCRM内メール送信が立ち上がるメール専用形式。
  • uitype = 11:電話番号(Phone)
    • CTI連携(Click to Call)や発信リンクに対応する電話番号フィールド。
  • uitype = 17:WebサイトURL
    • 入力値が外部リンクとして自動リンク化されるURLフィールド。

3. 「typeofdata」によるバリデーション制御

vtiger_field テーブルの typeofdata は、「データ型 ~ 必須・任意 ~ 最大文字数」 をチルダ(~)区切りで定義します。

Plaintext

[型] ~ [必須区分] ~ [詳細条件]

代表的な定義例

  • V~OVarchar(文字列) / Optional(任意)
  • V~MVarchar(文字列) / Mandatory(必須入力)
  • N~M~10,2Number(数値) / Mandatory(必須) / 最大10桁・小数第2位まで
  • D~ODate(日付) / Optional(任意)

4. まとめ

  • VtigerCRMの全フィールドは vtiger_field テーブル で一元管理されている
  • uitype を指定することで、UIの描画コンポーネント(テキスト、選択リスト、日付ピッカー、参照ポップアップなど)が決定される
  • typeofdata を設定することで、画面側および保存時の入力チェック(必須、数値制約など)が機能する

カスタムモジュールの作成スクリプト(vtlib)を書く際や、データベース構造を解析してデータ移行・API連携を行う際には、この uitypevtiger_field の属性定義を正しく把握しておくことがスムーズな実装への近道です。

タイトルとURLをコピーしました