コンテンツのクエリWebパーツのクエリは表示件数による制約を受ける

2010年に入り、巷ではSharePoint 2010の情報がかなり出回るようになりました。しかし、昨今の経済情勢から、ウチの会社でのバージョンアップは相当~先になりそうです。

そのうち、2010の検証環境は用意するつもりですが、当面、このブログはSharePoint 2007の情報メインでだらだらと続けさせて頂く予定です。

さて、コンテンツのクエリWebパーツです。

通常、このWebパーツは複数のリストから最新のコンテンツを取得する為に利用され、その分には特に問題が無いのですが、取得先のリストがアイテム単位でアクセス制限されている、または対象ユーザでフィルタされている場合、おかしな現象が発生します。

例えば、次のようなリストがあるとします。
このリストのアイテムを拾うよう設定されたコンテンツのクエリWebパーツは、「表示件数:8」が指定されています。

ID/タイトル/ユーザAのアクセス権/数値列
1 アイテム1 ×閲覧不可 1
2 アイテム2 ×閲覧不可 1
3 アイテム3 ×閲覧不可 1
4 アイテム4 ×閲覧不可 1
5 アイテム5 ×閲覧不可 0
6 アイテム6 ×閲覧不可 0
7 アイテム7 ×閲覧不可 1
8 アイテム8 ×閲覧不可 1
9 アイテム9 ○閲覧可 1

ユーザAがこのコンテンツのクエリWebパーツにアクセスした場合、どのような結果が返るでしょうか?
普通に考えれば、アイテム1~8にはアクセス権がありませんので無視され、アイテム9のみが表示されるように思えます。しかし、実際には、何の情報も返りません(クエリ結果0)。

どうも、コンテンツのクエリWebパーツは、まず8件のアイテムを読み込み、その後にアクセス権を判定しているようです。その為、アクセス権のある9番目のアイテムは、クエリ対象外として無視されます。

対象ユーザによる表示/非表示でも、同じ現象が発生します。
全くもって合理的ではありません。
何故こんな仕様なのか…。

例外は、「追加フィルタ」で、特定の列の値に応じた条件で、アイテムをフィルタしている場合です。
この場合、クエリ自体にきちんと条件が適用されます。
上の例であれば、追加フィルタに「数値列 次の値に等しい 1」を指定していれば、コンテンツのクエリWebパーツは、アイテム1~4、およびアイテム7~9を読み込んだ上で、アクセス権を判定し、最終的にアイテム9が返されます。


Author

中村 和彦(シンプレッソ・コンサルティング株式会社 代表)が「ユーザ視点の SharePoint 情報」を発信します。元大手製造業 SharePoint 運用担当。現SharePoint コンサルタント。お仕事のお問い合わせはこちらまでお願いします。当ブログにおける発信内容は個人に帰属し所属組織の公式発信/見解ではありません。
FB : 中村 和彦
blog: Be・Better!
MS MVP SharePoint 2009/10-2011/9
MS MVP Office 365 2012/10-2014/9