2021/05/05

MANUAL

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 = "組織ID" --システム管理者のユーザ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": ["任意のサイトID"], "OnSelectingWhere": true } ``` ## 結果 以下のようにユーザ毎に所属するグループまたは組織によって表示(取得)されるレコードが変わります。 ・本社ユーザでログインした場合 ![image](/binaries/3e6d6ce653264d25bb5373164183d743) ・営業店2に所属するユーザでログインした場合 ![image](/binaries/0b71016636d044f6a7d4fdd14e29eea0) ・営業店3に所属するユーザでログインした場合 ![image](/binaries/5ae776ed1a8f45ea8ab2bf910c855e13)
このページをシェアする