0

特定のロールのみがアクセスできるドキュメントを非表示にしたいビューがあります (実際に問題を引き起こしているのはドキュメントではなく、分類されたビューであることが後でわかります)。

できる限り具体的にお答えするように努めますので、不明な点があれば遠慮なくご質問ください。

英語は私の第一言語ではないことに注意してください;-)

4 つの異なるタイプのドキュメントがあり、3 つ (TypeA、TypeB、TypeC) は全員に表示され、1 つ (TypeD) は特定のロール (例: [RoleD]) が必要です。

ビューはドキュメント タイプごとに分類され、適切な役割を持っていない場合にドキュメントが表示されないようにするセキュリティ フィールドが各ドキュメントにあります。したがって、[RoleD] のメンバーではないときにビューを見ると、次の結果が得られます。

TypeA
    Doc1
    Doc2
    Doc3
TypeB
    Doc4
    Doc5
TypeC
    Doc6
    Doc7
TypeD
    {Empty}

私の問題は、TypeD のすべてのドキュメントが非表示になっているにもかかわらず、「カテゴリ」も非表示にしたいということです。

ユーザーがロール [RoleD] のメンバーである場合にのみ TypeD ドキュメントを選択するように、ビューの選択でいくつかの条件を試しましたが、@If、@IsMember (および @IsNotMember)、および @UserRoles を使用しても成功しませんでした。結果は、私がロールのメンバーであっても、カテゴリとドキュメントが非表示 (?!?!?) であるという奇妙な結果です。

これが私がこれまでに試したことです:

Try #1
    @If(@IsNotMember("[RoleD]";@UserRoles) ; DocTypeField != "TypeD" ; 1=1)
Try #2
    @IsNotMember("[RoleD]";@UserRoles) & DocTypeField != "TypeD"
    |
    @IsMember("[RoleD]";@UserRoles) & 1=1

あまり混乱しないことを願っています。

大変お世話になりました。

4

2 に答える 2

2

「空のカテゴリを表示しない」というビュー プロパティがあります。それはあなたの見解に基づいていますか?

于 2012-07-12T17:08:30.620 に答える
1

ケンの答えは正しいです。ただし、2つのことを指摘したいと思います。

まず、「空のカテゴリを表示しない」は、ユーザーのパフォーマンスを低下させる可能性があります。これは、大量のドキュメント (何万ものドキュメント) があり、個々のユーザーがそれらのごく一部にしかアクセスできない場合に特に当てはまります。

次に、ビューで @UserRoles を確実に使用できない理由は、通常のビューの場合、ビュー インデックスがクライアントによって構築されないためです。選択式を適用するのはサーバー上のインデクサー タスクであるため、@UserRoles はサーバー ID に適用されるロールを返します。クライアントによってインデックス付けされたプライベート ビューを使用する場合、@UserRoles は期待どおりの結果を返します。考慮すべき詳細はこれ以外にもありますが、経験則として、ビュー選択式では通常、異なるユーザーに対して異なる結果を返す関数や、異なる日時に異なる結果を返す関数を使用しないでください。

于 2012-07-12T18:37:32.527 に答える