2021/07/05

MANUAL

開発者向け機能:サーバスクリプト: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. .NET Core版 1.1.14 以降 1. .NET Framweork版 0.50.220 以降 #### AND条件による「[フィルタ](/manual/table-record-search)」 1. .NET Core版 1.1.28 以降 1. .NET Framweork版 0.50.252 以降 ## 制限事項 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によるフルテキスト検索が行われます。 ## プロパティ |No|Name|Get|Set|Type|Description| |:----|:----|:----|:----|:----|:----| |1|view.Filters.IssueId / view.Filters.ResultId|○|○|string|「[ID項目](/manual/table-management-id)」の「[フィルタ](/manual/table-record-search)」文字列| |2|view.Filters.SiteId|○|○|string|「サイトID項目」の「[フィルタ](/manual/table-record-search)」文字列| |3|view.Filters.Creator|○|○|string|「[作成者項目](/manual/table-management-creator)」の「[フィルタ](/manual/table-record-search)」文字列| |4|view.Filters.CreatedTime|○|○|string|「[作成日時項目](/manual/table-management-created-time)」の「[フィルタ](/manual/table-record-search)」文字列| |5|view.Filters.Updator|○|○|string|「[更新者項目](/manual/table-management-updator)」の「[フィルタ](/manual/table-record-search)」文字列| |6|view.Filters.UpdatedTime|○|○|string|「[更新日時項目](/manual/table-management-updated-time)」の「[フィルタ](/manual/table-record-search)」文字列| |7|view.Filters.Ver|○|○|string|「[バージョン項目](/manual/table-management-ver)」の「[フィルタ](/manual/table-record-search)」文字列| |8|view.Filters.Title|○|○|string|「[タイトル項目](/manual/table-management-title)」の「[フィルタ](/manual/table-record-search)」文字列| |9|view.Filters.Body|○|○|string|「[内容項目](/manual/table-management-body)」の「[フィルタ](/manual/table-record-search)」文字列| |10|view.Filters.StartTime|○|○|string|「[開始項目](/manual/table-management-start-time)」の「[フィルタ](/manual/table-record-search)」文字列| |11|view.Filters.CompletionTime|○|○|string|「[完了項目](/manual/table-management-completion-time)」の「[フィルタ](/manual/table-record-search)」文字列| |12|view.Filters.WorkValue|○|○|string|「[作業量項目](/manual/table-management-work-value)」の「[フィルタ](/manual/table-record-search)」文字列| |13|view.Filters.ProgressRate|○|○|string|「[進捗率項目](/manual/table-management-progress-rate)」の「[フィルタ](/manual/table-record-search)」文字列| |14|view.Filters.Status|○|○|string|「[状況項目](/manual/table-management-status)」の「[フィルタ](/manual/table-record-search)」文字列| |15|view.Filters.Manager|○|○|string|「[管理者項目](/manual/table-management-manager)」の「[フィルタ](/manual/table-record-search)」文字列| |16|view.Filters.Owner|○|○|string|「[担当者項目](/manual/table-management-owner)」の「[フィルタ](/manual/table-record-search)」文字列| |17|view.Filters.Locked|○|○|string|「[ロック項目](/manual/table-management-lock)」の「[フィルタ](/manual/table-record-search)」文字列| |18|view.Filters.ClassA~|○|○|string|「[分類項目](/manual/table-management-class)」の「[フィルタ](/manual/table-record-search)」文字列| |19|view.Filters.NumA~|○|○|string|「[数値項目](/manual/table-management-num)」の「[フィルタ](/manual/table-record-search)」文字列| |20|view.Filters.DateA~|○|○|string|「[日付項目](/manual/table-management-date)」の「[フィルタ](/manual/table-record-search)」文字列| |21|view.Filters.DescriptionA~|○|○|string|「[説明項目](/manual/table-management-description)」の「[フィルタ](/manual/table-record-search)」文字列| |22|view.Filters.CheckA~|○|○|string|「[チェック項目](/manual/table-management-check)」の「[フィルタ](/manual/table-record-search)」文字列| ## メソッド メソッドはありません。 ## 使用例 下記の例では「[状況項目](/manual/table-management-status)」が 900 (完了) または 910 (保留) のレコードを抽出して表示します。 ##### JavaScript ``` view.Filters.Status = '["900","910"]'; ``` 下記の例では「[担当者項目](/manual/table-management-owner)」にセットされた「[ユーザ](/manual/user)」のユーザ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/1/1以降、カンマより後を省略すると 2021/5/31 23:59:59.997 以前がセットされたレコードを抽出して表示します。複数の範囲を検索する場合は '["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-description)」及び選択肢の無い「[分類項目](/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'] = '["システム開発"]'; ``` ## 関連情報 <div id="ManualList"><ul><li><a href="/manual/table-grid">テーブル機能:レコードの一覧画面</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-record-search">テーブル機能:レコードの検索(フィルタ)</a><span>2021/07/05 up</span></li> <li><a href="/manual/table-editor">テーブル機能:レコードのエディタ画面</a><span>2021/05/05 up</span></li> <li><a href="/manual/table-record-access-control">テーブル機能:レコードのアクセス制御</a><span>2021/06/06 up</span></li></ul></article> <ul><li><a href="/manual/table-management">テーブルの管理</a><span>2021/05/09 up</span></li></ul></article> <ul><li><a href="/manual/table-management-id">テーブルの管理:項目:ID</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-ver">テーブルの管理:項目:バージョン</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-title">テーブルの管理:項目:タイトル</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-body">テーブルの管理:項目:内容</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-start-time">テーブルの管理:項目:開始</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-completion-time">テーブルの管理:項目:完了</a><span>2021/05/22 up</span></li> <li><a href="/manual/table-management-work-value">テーブルの管理:項目:作業量</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-progress-rate">テーブルの管理:項目:進捗率</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-status">テーブルの管理:項目:状況</a><span>2021/06/01 up</span></li> <li><a href="/manual/table-management-manager">テーブルの管理:項目:管理者</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-owner">テーブルの管理:項目:担当者</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-lock">テーブルの管理:項目:ロック</a><span>2021/05/22 up</span></li> <li><a href="/manual/table-management-class">テーブルの管理:項目:分類</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-num">テーブルの管理:項目:数値</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-date">テーブルの管理:項目:日付</a><span>2021/06/07 up</span></li> <li><a href="/manual/table-management-description">テーブルの管理:項目:説明</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-check">テーブルの管理:項目:チェック</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-attachments">テーブルの管理:項目:添付ファイル</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-comments">テーブルの管理:項目:コメント</a><span>2021/05/22 up</span></li> <li><a href="/manual/table-management-creator">テーブルの管理:項目:作成者</a><span>2021/05/22 up</span></li> <li><a href="/manual/table-management-updator">テーブルの管理:項目:更新者</a><span>2021/05/22 up</span></li> <li><a href="/manual/table-management-created-time">テーブルの管理:項目:作成日時</a><span>2021/05/22 up</span></li> <li><a href="/manual/table-management-updated-time">テーブルの管理:項目:更新日時</a><span>2021/05/22 up</span></li></ul></article> <ul><li><a href="/manual/table-management-editor">テーブルの管理:エディタ</a><span>2021/05/09 up</span></li> <li><a href="/manual/table-management-editor-columns">テーブルの管理:エディタ:エディタの項目の設定</a><span>2021/05/22 up</span></li></ul></article> <ul><li><a href="/manual/table-management-grid-column-settings">テーブルの管理:一覧画面:項目の詳細設定</a><span>2021/05/09 up</span></li></ul></article> <ul><li><a href="/manual/table-management-filter">テーブルの管理:フィルタ</a><span>2021/05/12 up</span></li> <li><a href="/manual/table-management-filter-search-types">テーブルの管理:フィルタ:検索の種類</a><span>2021/05/12 up</span></li></ul></article> <ul><li><a href="/manual/table-management-search-type">テーブルの管理:検索:検索の設定:検索の種類</a><span>2021/05/30 up</span></li></ul></article> <ul><li><a href="/manual/table-management-server-script">テーブルの管理:サーバスクリプト</a><span>2021/05/23 up</span></li></ul></article> <ul><li><a href="/manual/user">ユーザ管理機能</a><span>2021/05/01 up</span></li></ul></article> <ul><li><a href="/manual/server-script">開発者向け機能:サーバスクリプト</a><span>2021/08/20 up</span></li></ul></article> <ul><li><a href="/manual/api-view">開発者向け機能:JSONデータレイアウト:View</a><span>2021/07/05 up</span></li></ul></article> <ul><li><a href="/manual/faq-server-script-log">FAQ:サーバスクリプトのエラーログを出力する</a><span>2021/06/24 up</span></li></ul></article></div><input id="SearchTextHidden" type="hidden" value="" />
このページをシェアする