ユーザマニュアル





2023/08/25

MANUAL

開発者向け機能:サーバスクリプト:view.Filters

## 概要 「viewオブジェクト」の「Filters」です。「[サーバスクリプト](/manual/table-management-server-script)」で「[一覧画面](/manual/table-grid)」や「[エディタ](/manual/table-editor)」に表示する「レコード」を「[フィルタ](/manual/table-record-search)」することで、ユーザに閲覧させるレコードを制限することができます。「[レコードのアクセス制御](/manual/table-record-access-control)」と異なり「レコード」1件1件にアクセス権を設定する必要がありません。「[JSONデータレイアウト:View](/manual/api-view)」が使用できます。 ## 対応バージョン #### OR条件による「[フィルタ](/manual/table-record-search)」 1. プリザンター 1.1.14.0 以降 1. プリザンター .NET Framweork版 0.50.220 以降 #### AND条件による「[フィルタ](/manual/table-record-search)」 1. .NET Core版 1.1.28 以降 1. .NET Framweork版 0.50.252 以降 #### 一致、不一致条件による「[フィルタ](/manual/table-record-search)」 1. .NET Core版 1.3.18.0 以降 1. .NET Framweork版 0.51.18.0 以降 ## 制限事項 1. 「ビュー処理時」の条件のみ使用できます。 1. 「[添付ファイル項目](/manual/table-management-attachments)」「[コメント項目](/manual/table-management-comments)」は使用できません。 1. 「[サーバスクリプト](/manual/table-management-server-script)」により「[フィルタ](/manual/table-record-search)」を設定した項目は「[一覧画面](/manual/table-grid)」の「[フィルタ](/manual/table-record-search)」操作が動作しません。「[サーバスクリプト](/manual/table-management-server-script)」により上書きされます。 1. SQL Serverを使用する場合とPostgreSQLを使用する場合では検索結果が異なる場合がございます。SQL ServerではLIKE句またはフルテキスト検索が使用されるのに対し、PostgreSQLではILIKE句またはpg_trgmによるフルテキスト検索が行われます。 ## 注意事項 1. view.Filtersの機能で、一覧画面でレコードを抽出されないようにフィルタした場合であっても、「横断検索」では検索結果リストに表示されます。これを防ぐにはテーブルの管理の設定「[横断検索を無効化](/manual/table-management-disable-cross-search)」で横断検索を無効化する必要があります。 ## プロパティ |No|プロパティ名|変更|説明| |:--|:--|:--|:--| |1|[カラム名]|○|「[フィルタ](/manual/table-record-search)」をかける「[カラム名](/manual/dev-column-name)」を指定しフィルタ文字列を設定。| ## メソッド メソッドはありません。 ## 使用例 ① 下記の例では「[状況項目](/manual/table-management-status)」が 900 (完了) または 910 (保留) のレコードを抽出して表示します。 ##### JavaScript ``` view.Filters.Status = '["900","910"]'; ``` 下記の例では「[担当者項目](/manual/table-management-owner)」にセットされた「[ユーザ](/manual/table-management-choices-text-users)」のユーザIDが 215 と 319 のレコードを抽出して表示します。 ##### JavaScript ``` view.Filters.Owner = '["215","319"]'; ``` 下記の例では「[数値項目](/manual/table-management-num)」にセットされた数値が 600000 ~ 700000 のレコードを抽出して表示します。カンマより前を省略すると 700000 以下、カンマより後を省略すると 600000 以上がセットされたレコードを抽出して表示します。複数の範囲を検索する場合は '["100000,200000","600000,700000"]' のように指定します。 ##### JavaScript ``` view.Filters.NumA = '["600000,700000"]' ``` 下記の例では「[日付項目](/manual/table-management-date)」にセットされた日付が本日のレコードを抽出して表示します。'["Today"]'は本日、'["ThisMonth"]'は今月、'["ThisYear"]'は今年を抽出します。 ##### JavaScript ``` view.Filters.DateA = '["Today"]'; ``` 下記の例では「[日付項目](/manual/table-management-date)」にセットされた日付が 2021/5/1 00:00:00 ~ 2021/5/31 23:59:59.997 のレコードを抽出して表示します。カンマより前を省略すると 2021/5/31 23:59:59.997以前、カンマより後を省略すると 2021/5/1 00:00:00以降がセットされたレコードを抽出して表示します。複数の範囲を検索する場合は '["2021/1/1,2021/1/31 23:59:59.997","2021/5/1,2021/5/31 23:59:59.997"]' のように指定します。 ##### JavaScript ``` view.Filters.DateB = '["2021/5/1,2021/5/31 23:59:59.997"]' ``` 下記の例では「[チェック項目](/manual/table-management-check)」がオンになっているレコードを抽出して表示します。false を代入するとオフのレコードを抽出します。 ##### JavaScript ``` view.Filters.CheckA = true; ``` 下記の例では「[内容項目](/manual/table-management-body)」に ソフトウェア の文字を含むレコードを抽出して表示します。「[テーブルの管理](/manual/table-management)」の「[フィルタ](/manual/table-record-search)」で「[検索の種類](/manual/table-management-filter-search-types)」を設定すると「部分一致検索」だけでなく「前方一致検索」や「完全一致検索」も行えます。「[タイトル項目](/manual/table-management-title)」「「説明項目」及び選択肢の無い「[分類項目](/manual/table-management-class)」でも同様の検索が行えます。 ##### JavaScript ``` view.Filters.Body = 'ソフトウェア'; ``` 下記の例では「[状況項目](/manual/table-management-status)」が 900 (完了) 且つ「[日付項目](/manual/table-management-date)」にセットされた日付が本日のレコードを抽出して表示します。異なる項目を複数セットした場合には AND 条件で「[フィルタ](/manual/table-record-search)」されます。 ##### JavaScript ``` view.Filters.Status = '["900"]'; view.Filters.DateA = '["Today"]'; ``` 下記の例では「[状況項目](/manual/table-management-status)」が 900 (完了) または「[分類項目](/manual/table-management-class)」の選択肢に 設計 がセットされたレコードを抽出して表示します。or_で始まる任意のプロパティにJSON形式のフィルタ条件を代入することで、OR条件による「[フィルタ](/manual/table-record-search)」を行うことができます。画面からの「[フィルタ](/manual/table-record-search)」操作は明示的に無効化する必要があります。 ##### JavaScript ``` // 画面からのフィルタ操作を無効化 view.Filters.ClassA = ''; view.Filters.Status = ''; // OR条件の設定 let data = {}; data.Status = '["900"]'; data.ClassA = '["設計"]'; view.Filters.or_MyFilterName = JSON.stringify(data); ``` 下記の例では組織IDが 3 のユーザがアクセスした場合「[分類項目](/manual/table-management-class)」の選択肢に 人事 がセットされたレコードを抽出して表示します。組織IDが 7 のユーザが使用した場合「[分類項目](/manual/table-management-class)」の選択肢に 開発 がセットされたレコードを抽出して表示します。それ以外の組織のユーザがアクセスした場合には全てのレコードを抽出して表示します。 ##### JavaScript ``` context.Log(context.DeptId); switch (context.DeptId) { case 3: view.Filters.ClassA = '["人事"]' break; case 7: view.Filters.ClassA = '["開発"]' break; default: break; } ``` 下記の例ではユーザIDが 2 以外のユーザがアクセスした場合 分類A が 設計 且つ 分類D が 3 のレコード、または 分類B が テスト 且つ 分類D が 7 のレコードを抽出して表示します。ユーザIDが 2 のユーザがアクセスした場合には全てのレコードを抽出して表示します。and_で始まる任意のプロパティにJSON形式のフィルタ条件を代入することで、OR条件と条件をAND条件を組み合わせた「[フィルタ](/manual/table-record-search)」を行うことができます。 ##### JavaScript ``` if (context.UserId !== 2) { let data1 = {}; data1.ClassA = '["設計"]'; data1.ClassD = '["3"]'; let data2 = {}; data2.ClassA = '["テスト"]'; data2.ClassD = '["7"]'; let data = {}; data.and_Filter1 = JSON.stringify(data1); data.and_Filter2 = JSON.stringify(data2); view.Filters.or_Filter = JSON.stringify(data); } ``` 下記の例では 分類A でリンクした サイトID 6 のレコードの分類B に 東京都中野区 がセットされているレコードを抽出して表示します。下記の記述によりマスタレコードの項目でフィルタする事ができます。 ``` view.Filters['ClassA~6,ClassB'] = '東京都中野区'; ``` 下記の例では 分類A でリンクされた サイトID 7 の子レコードの 分類B に システム開発 がセットされているレコードを抽出して表示します。下記の記述により子レコードの項目でフィルタする事ができます。子レコードに複数のレコードがヒットした場合、親レコードの同じレコードが複数表示されます。 ``` view.Filters['ClassA~~7,ClassB'] = '["システム開発"]'; ``` 下記の例では 分類A の値と 分類B の値が一致しているレコードのみを抽出して表示します。eq_で始まる任意のプロパティに'{1つ目の項目}|{二つ目の項目}'の形式で比較する項目を指定することで、2つの項目の値が一致しているレコードのみをフィルタすることができます。 ※ 但し、2つの項目にはデータタイプの異なる項目は指定できません。各項目のデータタイプは 「[項目名とデータベース上のカラム名の対応](/manual/dev-column-name)」の一覧に記載されています。 ##### JavaScript ``` view.Filters.eq_MyFilterName = 'ClassA|ClassB'; ``` 下記の例では 分類A の値と 分類B の値が一致していないレコードのみを抽出して表示します。notEq_で始まる任意のプロパティに'{1つ目の項目}|{二つ目の項目}'の形式で比較する項目を指定することで、2つの項目の値が一致しているレコードのみをフィルタすることができます。 ※ 但し、2つの項目にはデータタイプの異なる項目は指定できません。各項目のデータタイプは 「[項目名とデータベース上のカラム名の対応](/manual/dev-column-name)」の一覧に記載されています。 ##### JavaScript ``` view.Filters.notEq_MyFilterName = 'NumA|NumB'; ``` eq_、notEq_で始まるプロパティは、or_やand_で始まるプロパティと組み合わせて使用することができます。また、リンクしている親レコードの項目を指定することも可能です。下記の例では「分類A でリンクした サイトID 10 のレコードの タイトル と、分類B の値が一致する」または「分類A でリンクしてた サイトID 10 のレコードの 数値A の値と、数値A の値が一致する」レコードのみを抽出して表示します。 ##### JavaScript ``` let data = {} data.eq_Filter1 = 'ClassA~10,Title|ClassB'; data.eq_Filter2 = 'ClassA~10,NumA|NumA'; view.Filters.or_MyFilter = JSON.stringify(data); ``` ## 関連情報 <div id="ManualList"><ul><li><a href="/manual/table-grid">テーブル機能:レコードの一覧画面</a><span>2023/04/12 up</span></li> <li><a href="/manual/table-record-search">テーブル機能:レコードの検索(フィルタ)</a><span>2023/01/05 up</span></li> <li><a href="/manual/table-editor">テーブル機能:レコードのエディタ画面</a><span>2023/04/12 up</span></li> <li><a href="/manual/table-record-access-control">テーブル機能:レコードのアクセス制御</a><span>2023/04/19 up</span></li></ul></article> <ul><li><a href="/manual/table-management">テーブルの管理</a><span>2023/04/19 up</span></li></ul></article> <ul><li><a href="/manual/table-management-title">テーブルの管理:項目:タイトル</a><span>2023/04/19 up</span></li> <li><a href="/manual/table-management-body">テーブルの管理:項目:内容</a><span>2023/04/21 up</span></li> <li><a href="/manual/table-management-status">テーブルの管理:項目:状況</a><span>2023/06/13 up</span></li> <li><a href="/manual/table-management-owner">テーブルの管理:項目:担当者</a><span>2023/04/21 up</span></li> <li><a href="/manual/table-management-class">テーブルの管理:項目:分類</a><span>2023/04/21 up</span></li> <li><a href="/manual/table-management-num">テーブルの管理:項目:数値</a><span>2023/04/21 up</span></li> <li><a href="/manual/table-management-date">テーブルの管理:項目:日付</a><span>2023/04/21 up</span></li> <li><a href="/manual/table-management-check">テーブルの管理:項目:チェック</a><span>2023/04/21 up</span></li> <li><a href="/manual/table-management-attachments">テーブルの管理:項目:添付ファイル</a><span>2023/04/07 up</span></li> <li><a href="/manual/table-management-comments">テーブルの管理:項目:コメント</a><span>2023/04/21 up</span></li></ul></article> <ul><li><a href="/manual/table-management-editor">テーブルの管理:エディタ</a><span>2024/04/09 up</span></li> <li><a href="/manual/table-management-editor-columns">テーブルの管理:エディタ:エディタの項目の設定</a><span>2024/04/09 up</span></li> <li><a href="/manual/table-management-choices-text-users">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:ユーザ</a><span>2023/04/25 up</span></li> <li><a href="/manual/table-management-choice-json">テーブルの管理:エディタ:項目の詳細設定:選択肢一覧:フィルタ、ソート、表示フォーマット</a><span>2024/04/09 up</span></li></ul></article> <ul><li><a href="/manual/table-management-grid-column-settings">テーブルの管理:一覧画面:項目の詳細設定</a><span>2023/05/12 up</span></li></ul></article> <ul><li><a href="/manual/table-management-filter">テーブルの管理:フィルタ</a><span>2023/05/12 up</span></li> <li><a href="/manual/table-management-filter-search-types">テーブルの管理:フィルタ:検索の種類</a><span>2023/05/12 up</span></li></ul></article> <ul><li><a href="/manual/table-management-search-type">テーブルの管理:検索:検索の設定:検索の種類</a><span>2023/05/18 up</span></li> <li><a href="/manual/table-management-disable-cross-search">テーブルの管理:検索:検索の設定:横断検索を無効化</a><span>2024/04/19 up</span></li></ul></article> <ul><li><a href="/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2023/05/18 up</span></li></ul></article> <ul><li><a href="/manual/user">ユーザ管理機能</a><span>2024/04/09 up</span></li></ul></article> <ul><li><a href="/manual/dev-column-name">項目名とデータベース上のカラム名の対応</a><span>2024/03/05 up</span></li></ul></article> <ul><li><a href="/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2023/06/01 up</span></li> <li><a href="/manual/server-script-view-filters-cleared">開発者向け機能:サーバスクリプト:view.FiltersCleared</a><span>2023/08/25 up</span></li></ul></article> <ul><li><a href="/manual/api-view">開発者向け機能:JSONデータレイアウト:View</a><span>2023/11/06 up</span></li></ul></article> <ul><li><a href="/manual/advanced-operations-link">応用編:リンク</a><span>2023/08/14 up</span></li></ul></article> <ul><li><a href="/manual/faq-server-script-log">FAQ:サーバスクリプトのエラーログを出力する</a><span>2023/01/05 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />
TOP
このページをシェアする
記載された商品名、各製品名は各社の登録商標または商標です。 © Implem Inc.