Skip to content

MS_CRMViewCustomization

nishi_74322014 edited this page Sep 1, 2026 · 1 revision

CRM ビューのカスタマイズ

概要

  • クエリが含まれる。

  • クエリによりレコードの一覧が表示される。

  • 1つのエンティティに対して

    • 複数のビューを定義できる。
    • 複数のビューを選択し表示データを変更できる。
    • 新しいエンティティには既定のビューが自動生成される。

補足(ビューは SQL のビューではない): CRM の「ビュー」は
**保存されたクエリ(SavedQuery / UserQuery)**であり、
DB 側にビュー オブジェクトが作られるわけではない。
クエリの実体は FetchXML で、
実行時にプラットフォームが SQL へ変換し、
実行ユーザのアクセス権によるフィルタを必ず加えて発行する。

ビューの種類

システム ビュー

  • DCRM・セキュリティ特権を持ったユーザにより生成・作成される。
  • 全てのユーザが表示できる。
  • 特定の部分で使用される特殊なビュー
  • アプリケーションの組込み機能を提供する。
  • カスタマイズ可能だが、追加や削除はできない。
  • ビュー セレクタに表示されないので切り替えで選択は不可
  • フォームのサブグリッドや、ダッシュボードのリストでの使用は不可

以下は、システム ビューの種類。

高度な検索ビュー

  • 各エンティティに1つ含まれ、以下のケースに使用される。
    • ユーザがビュー セレクタで個人用ビューの作成をクリックした場合。
    • ユーザが高度な検索を開始して、
      [保存されているビューの使用] で [新規] を選択した場合。

関連ビュー

  • 主レコード フォームの関連レコード一覧に表示される。
  • エンティティは1つの ”関連” ビューを持ち、変更可能。
  • 一部のエンティティには複数の関連ビューがある。
    • ”関連” 検索フィールドによって主レコードにリンクされている活動エンティティ
    • ・・・ERD が無いと説明が厳しい・・・。

簡易検索ビュー

  • 検索

    • ビュー セレクタの上右側に [レコードの検索] ボックスが表示される。
    • テキストを入力(前方一致検索、先頭 * のワイルドカードで部分一致検索)
    • Enter キーを押下するか、[検索] アイコンをクリックする。
    • 入力したテキストに一致するレコードの一覧が表示される。
  • 制限

    • ユーザは検索列を選択できない。
    • 具体的な検索が必要な場合は、高度な検索を使用する。
  • 保守

    • 検索列を追加すると、インデックス メンテナンス ジョブが構成される。

    • メンテナンス ジョブで、検索列に対応した非クラスタ化インデックスが生成される。

    • 検索列を削除すると、次回のメンテナンス ジョブでインデックスが削除される。

    • 以下のケースではメンテナンス ジョブでインデックスが自動作成されなくなる。

      • エンティティのテキスト フィールドの合計が 900 バイトを超えた場合。
      • 簡易検索ビューに 20 を超える検索列を追加した場合。
      • この場合、直接、DB に非クラスタ化インデックスを追加する。

移行メモ(正誤): 元ページは「エンティティに 900 を超えるテキスト
フィールドを追加した場合」となっていたが、900 という数値は
SQL Server の**非クラスタ化インデックスのキー サイズ上限(900 バイト)**に
由来する。フィールドの「本数」ではなくキー長の合計なので、上記のように改めた。

検索ダイアログ ビュー

  • フォームの検索フィールドに既定で適用される。

    • フォームの検索フィールドの右側の [検索] アイコンをクリックした時に使用される。
    • 検索フィールドで使用されるビューを別のビューに切替えることもできる。
  • 以下のように、使用可能な親(マスタ)レコードの一覧が表示される。

    • 親(マスタ)レコードのプライマリ フィールド
    • プライマリ フィールドの下に検索ダイアログビューの最初の2列。
  • システム エンティティには

    • 通常、1つの検索ダイアログ ビューがある。
    • 一部には、複数の検索ダイアログ ビューがある。
  • レコードが表示されない場合、

    • [他のレコードの検索] をクリックし、すべての結果を示すダイアログ ボックスを表示する。
    • 一覧下部の新規をクリックして(既定で簡易作成で)新しいレコードを作成できる。

カスタム ビュー

  • フォームのサブグリッドや、ダッシュボードのリストで使用可能

  • エンティティのビュー セレクタに表示される。

  • カスタマイズ要件の収集

    • エンティティをビューに表示する必要があるか?

    • どのレコードをビューに表示する必要があるか?

      • 既定ではユーザのアクセス許可のあるレコードが表示される。
      • いずれかのフィルタで特定要件を満たすレコードのみ表示する必要があるか?
    • どのフィールドを表示する必要があるか?

    • 既定では、どのように並び替える必要があるか?

共有ビュー

  • エンティティの既定のビュー

  • すべてのユーザがシステム全体で使用できる。

  • カスタム エンティティが追加されると共有ビューのセットが作成される。

    • 変更可能。
    • 非アクティブ化可能。
    • 削除不可能。
  • 最後に選択した共有ビューは、

    • エンティティの既定のビューの代わりに使用される。
    • サインアウトするまで記憶される。
  • ピン留めすると、個人用の既定ビューとして選択できる。

  • 既定のビュー(共有ビュー)がカスタマイズ要件に似ている場合、
    幾つかの列を追加するだけなどで済む可能性がある。

個人用ビュー

  • 自分で作成したビュー

    • ユーザが作成し表示できる。
    • 他のユーザ・チームと共有できる。
  • 既存の共有ビューや個人用ビューに基づいて作成できる。

    • ビュー セレクタの下部にある [個人用ビュー] から作成
    • [高度な検索] の [保存] ボタンで作成

補足(共有ビューと個人用ビューの実体): 共有ビュー・システム ビューは
SavedQuery(ソリューション コンポーネント)、個人用ビューは
UserQuery(ユーザ データ)として格納される。
前者はソリューションで移送できるが、後者は移送対象にならない
——という違いが「システム全体で使用できる/自分で作成した」の
実務上の意味である。

ビューの定義

  • 列(射影的な)
    → ビュー列

  • 選択(Where 句的な)
    → ビューのフィルタ処理

    • クエリ
    • ビュー フィルタ
  • 並び替え(Order By 句的な)

ビューのフィルタ処理

  • ビューは、クエリ、または ”ビュー フィルタ” に基づいて
    1つのエンティティのレコードのサブセットを返す。

クエリ

  • クエリは [高度な検索] に似た GUI で作成され FetchXML として保存される。

  • コンテキストに応じて(検索の)パラメタをクエリで使用できる。

  • 例:自分のアクティブな取引先企業ビューのパラメタ

    • 表示しているユーザ
    • レコードの状態

ビュー フィルタ

  • テストを含める

    • エンティティのフィールドに関するテスト
    • 親(マスタ)または子(トランザクション)レコード
      および、多対多レコードのフィールドに関するテスト
  • すべてのビューにフィルタが定義されている。

  • フィルタは空にできる(その場合、すべてのレコードが表示される)

ビュー列

含められるフィールド

  • エンティティ内の任意のフィールドを含めることができる。

  • 1対多の関連付けで

    • 主(親)エンティティのフィールドを含めることができる。
    • 関連(子)エンティティのフィールドを含めることはできない。

追加・削除・表示

  • 追加・削除ができる。
  • 列数に制限はない。
  • 表示
    • 順序の変更
    • 幅の調整

推奨

  • 以下の様なビューのビュー列は少なくする。

    • 頻繁に使用されるビュー
    • フォームのサブグリッド
    • ダッシュボードのリスト コンポーネント
  • 以下のビュー列は含めない。

    • (検索の)パラメタに使用している列
    • 重複している列
      • 親レコードに表示されている関連レコードの列
      • マスタ レコードに表示されているトランザクション レコードの列

ビューの作成・編集

システム ビューの編集

高度な検索ビューの定義

移行メモ(正誤): 元ページはクエリの説明が
自由 SQL を使用してビューを提供」「SQL を GUI で作成」と
なっていたが、[高度な検索] が生成するのは FetchXML であって
任意の SQL を書ける仕組みではない(結合できる相手や集計に制約がある)。
誤解を招くため、上記のように書き改めた。

簡易検索ビューの定義

  • 定義
    ビュー列(表示される列)と検索列(テキスト検索の対象フィールド)を定義する。

    • ビュー列(表示される列)

    • 検索列(テキスト検索の対象フィールド)。

      • 検索列は、当該エンティティからのみ選択可能。

      • 検索列が多い場合、
        性能低下の可能性(ユーザ数やレコード数が多い場合に考慮)
        ヒットするレコードが多すぎると役に立たなくなる。

  • 検索列の変更

    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • 簡易検索ビューをダブルクリックする。
    • [タスク] 領域の [検索列の追加] をクリックする。
      • 検索列のチェックをオン
      • 検索しない列のチェックをオフ
    • [OK] ---> [保存して閉じる] ---> [すべてのカスタマイズを公開] をクリックする。

検索ダイアログ ビューの定義

  • 定義
    • ビュー列
      プライマリフィールドがビュー列の最初の列である必要がある。

    • 検索列
      簡易検索ビューの検索列が使用される。

    • フィルタ

      • フォーム上の構成でフィルタ処理される。
      • 殆どのエンティティの既定の検索ダイアログ ビューには、
        "アクティブ" であるレコードのみを表示するフィルタが含まれる。

カスタム ビューの編集

  • ビュー エディタを使用する。

新しいビューの作成

  • 手順

    • [設定] ---> [ソリューション] ---> [エンティティ]

    • エンティティを展開し、[ビュー] をクリックする。

    • [新規] をクリックする。

    • [ファイル名を付けて保存] をクリックし、

    • ビューの定義を行う。

      • ビューの説明を入力
      • フィルタを定義
      • ビュー列を定義
      • 並べ替え動作を定義
    • [保存して閉じる] ---> [すべてのカスタマイズを公開] をクリックする。

  • ショートカット

    • エンティティの任意のビューから、
      [その他コマンド] ---> [新しいシステム ビュー]

既存のビューのコピー

  • 手順

    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • コピーするビューをダブルクリックする。
    • [ファイル名を付けて保存] をクリックし、
    • ビューの説明を入力して、[OK] をクリックする。
    • 必要に応じてビュー定義の修正を行う。
    • [保存して閉じる] ---> [すべてのカスタマイズを公開] をクリックする。
  • ショートカット

    • エンティティの任意のビューから、
      [その他コマンド] ---> [システム ビュー]
    • [ソリューション] ---> [エンティティ] ---> [ビュー] 一覧が表示される。

既存のビューの編集

  • 手順
    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • 編集するビューをダブルクリックしてビュー エディタを開く。
    • 後述のフィルタを定義ビュー列を定義
      並べ替えの定義を必要に応じて行う。
    • [保存して閉じる] ---> [すべてのカスタマイズを公開] をクリックする。

移行メモ(補完): 元ページは本節が見出しのみで本文が書かれていなかったため、
前後の節(コピー・削除)と同じ体裁で手順を補った。
著者による本文が加筆された場合は置き換えること。

既存のビューの削除

  • ビューが不要になったら非アクティブ化・削除する。

    • 非アクティブ化

      • システム ビューは非アクティブ化できない。
      • 非アクティブ化しないと削除できない。
      • 非アクティブ化したビューは再アクティブ化できる。
    • 削除

      • 自動生成された共有ビューは
        削除できない(非アクティブ化はできる)。
      • 削除したビューは復元できない。
  • 手順(非アクティブ化)

    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • 非アクティブ化にするビューを選択する。
    • [その他操作] ---> [非アクティブ化] をクリックする。
  • 手順(アクティブ化)

    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • 画面上部の [ビュー] ドロップ ダウン リストで、
      [非アクティブな共有ビュー] を選択する。
    • アクティブ化にするビューを選択する。
    • [その他操作] ---> [アクティブ化] をクリックする。
  • 手順(削除)

    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • 削除するビューを選択する。
    • 削除([X]) ---> [削除の確認] ダイアログ ボックスで [削除] をクリックする。
    • [すべてのカスタマイズを公開] をクリックする。
  • ダッシュ ボードのグラフ コンポーネント

    • 非アクティブ化されたビューを使うグラフ コンポーネントをダッシュ ボードに追加できる。
    • 使用するビューが非アクティブ化された場合、既定のビューに置き換えられる。
    • グラフの編集時は非アクティブ化されたビューの置き換えが必要になる。

既定のビューに設定する

  • 手順
    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • 既定として設定するビューを選択する。
    • [その他操作] ---> [既定値に設定する] をクリックする。
    • [すべてのカスタマイズを公開] をクリックする。

フィルタを定義

  • 概要

    • 1つ以上の条件で構成されるクエリを指定する。

    • 条件は論理 AND 動作で演算されるので、すべての条件が true である必要がある。

    • 条件をグループ化すれば、OR 動作を使用できる。

    • 手順

      • [設定] ---> [ソリューション] ---> [エンティティ]
      • エンティティを展開し、[ビュー] をクリックする。
      • フィルタを適用するビューをダブルクリックする。
      • [フィルタ条件の編集] をクリックする。
      • 必要に応じてフィルタの構成を行う。
      • [OK] をクリックする。
  • 関連エンティティのフィールドを追加する。

    • [選択] をクリック
    • [関連] セクションで関連エンティティを選択し [選択] をクリック
    • 関連エンティティのフィールドの一覧が表示される。

ビュー列を定義

  • 概要

    • 初回、プライマリフィールドだけがビュー列に含まれる。
    • 必要に応じて、ビュー列を追加する必要がある。
  • 手順

    • [設定] ---> [ソリューション] ---> [エンティティ]
    • エンティティを展開し、[ビュー] をクリックする。
    • ビュー列を定義するビューをダブルクリックする。
    • [タスク] 領域の [列の追加] をクリックする。
    • 必要に応じてビュー列の定義を行う。
    • [OK] をクリックする。
  • 位置・サイズの変更

    • ビュー デザイナーで移動する列を選択。
    • [タスク] 領域で
      • 左右矢印で位置を移動する。
      • [プロパティの変更] ---> [列のプロパティの変更] のウィンドウで列幅を変更する。
    • [OK] をクリックする。

並べ替えの定義

  • 概要

    • 既定の並べ替えには1 or 2の並替え列を指定できる。
    • 並替え列を選択し、昇順・降順を指定する。
    • 並替え列は、当該エンティティからのみ選択可能。
  • 手順

    • ビュー デザイナーで [タスク] 領域の [並び替えの構成] をクリック
    • [並び替えの構成] ダイアログ ボックスで並べ替えを定義
      • 1番目の並替え列を選択し、昇順・降順を指定する。
      • 2番目の並替え列を選択し、昇順・降順を指定する。
    • [OK] をクリックする。

タブレット PC 用マルチエンティティ検索

マルチエンティティ検索の概要

  • 簡易検索が拡張され一度に最大 10 個のエンティティを検索できる。
  • 検索結果はエンティティ毎に別の一覧に表示される。
  • 簡易検索ビューの検索列が使用される。
  • 通常、エンティティ毎に検索列は異なる。

構成

  • [設定] ---> [管理] ---> [システムの設定]

  • [全般] タブの [簡易検索の設定] セクションで
    [タブレット PC 用 CRM で検索対象のエンティティを選択] ラベルの [選択] をクリックする。

  • エンティティの選択ダイアログボックスで

    • エンティティを追加・削除する。
    • 上下矢印で表示順序を変更する。
  • [保存して閉じる] をクリックする。

補足(現在の全文検索): 本節のマルチエンティティ検索は、
後に **Dataverse 検索(旧称 Relevance Search)**へ発展した。
簡易検索が SQL の前方一致であるのに対し、Dataverse 検索は
外部の検索インデックスを使うため、
部分一致・表記ゆれ・添付ファイル本文まで対象にできる。

参考


Tags: Dynamics CRM

NetDevInfraWiki

マイクロソフト系技術情報 Wiki
Open 棟梁 Wiki

(未着手)

開発基盤部会 Wiki

移行管理: DONETODO

Clone this wiki locally