FAQ:一覧表示するレコードを所属組織別に分けたい
## 概要
事前に作成した組織・グループ別にレコード一覧画面に表示するレコードを制御します。このページでは本社(組織)に所属するユーザは登録された全てのレコードを閲覧することができ、その他の組織に所属するユーザは同グループ内で登録されたレコードのみを閲覧することができるようになります。
## 事前準備
(1) システム管理者でログイン後、下記の表を参考に[管理]-[ユーザの管理]、[組織の管理]、[グループの管理]からグループと組織情報を含めたユーザ情報を作成してください。ここでは本社に所属するユーザと各営業店に所属するユーザを想定し、組織とグループを構成します。下記にその構成を表に記載いたします。
|ユーザ|組織|グループ|
|:--|:--|:--|
|branch-user1|営業店1|グループ1|
|branch-user2|営業店2|〃|
|branch-user3|営業店3|グループ2|
|head-user1|本社|-|
![image](/binaries/5f756ef12c38496ebefb526397a197d8)
(2)[管理]-[テーブルの管理]-[エディタ]より分類Bを任意の表示名にして(ここでは”店番”,わかりやすいように分類Cを”店名”に設定)、[一覧]タブからそれぞれを有効化してください。
(3) 各ユーザでレコードを少なくても一つ作成してください。
![image](/binaries/7908f11352084eeca30058bd4ae2852c)
(4) 以下のサンプルコード(Sql)の@_Dの値とサンプルコード(JSON)のSiteIdListの値を環境に合わせ、変更してください。
この例では@_Dの値は29,SiteIdListの値は843になります。
(5) Extensionsテーブルに(3)で作成したサンプルコードとその他の項目を記入してください。
拡張SQLについてはこちらをご確認下さい(/manual/extended-sql)
(6)プリザンダーを再起動してください。
##### Sql
```
(
@_U = 1 or @_D = 1 --システム管理者のユーザIDまたは本社組織の組織ID
or [ClassB] in (
select [Depts].[DeptCode]
from [GroupMembers]
left join [Depts]
on Depts.DeptId = GroupMembers.DeptId
and ([GroupMembers].[GroupId] in(
select [GroupId]
from [GroupMembers]
where [DeptId] = @_D))
where [Depts].[DeptCode] is not null)
)
```
##### JSON
```
{
"SiteIdList": [2],
"OnSelectingWhere": true
}
```
## 結果
以下のようにユーザ毎に所属するグループまたは組織によって表示(取得)されるレコードが変わります。
・本社ユーザでログインした場合
![image](/binaries/3e6d6ce653264d25bb5373164183d743)
・営業店2に所属するユーザでログインした場合
![image](/binaries/0b71016636d044f6a7d4fdd14e29eea0)
・営業店3に所属するユーザでログインした場合
![image](/binaries/5ae776ed1a8f45ea8ab2bf910c855e13)