[Notes/Domino] ポリシー文書の表示とビューの PostOpen イベント
ビューを開いたときにカテゴリを省略して表示したい場合、「データベースを最初に開くときにすべてを省略する」オプションを使用するかと思いますが、このオプションだけでは最後に使用したカテゴリだけは展開して表示されてしまいます(x_x)
絶対にすべてのカテゴリが閉じている必要がある場合、ビューの PostOpen に「@Command([ViewCollapseAll])」を記述しておけば OK です。これでひと安心……と思いきや、思わぬ落とし穴が。
それはポリシー文書(データベースについて)が表示される場合です。ポリシー文書が表示されるときに、ビューの PostOpen のイベントが実行されると、「指定したコマンドを実行できません」エラーになってしまいます 😥
この現象は、おそらく、ビューの PostOpen イベントが、ポリシー文書をコンテキストとして実行されてしまうバグなのではないかと思われます。(R8 あたりで直っているっぽいですが、どのバージョンで直ったかは不明。)
回避方法としては、ちょっと強引ですが、式を以下のように変えると、とりあえずエラーは起きなくなります。(「$Body」のところは、ポリシー文書にあるフィールドならなんでもよいです。)
@If(@IsAvailable($Body); ""; @Command([ViewCollapseAll]))
ポリシー文書は、基本的にはデータベースを最初に開くときに表示されるので、開発時にはこの現象に気付かず、本番移行してから発覚しがちです(わたしは2回ひっかかりました 😥 )。みなさんも気をつけてくださいませ。
(2012/02/10追記)
以下の式のほうが、PickList や フレームセットの設計画面なんかでもエラーが起きなくなっていいみたいです。お詫びして訂正いたします(_ _;;;
@IsError(@Command([ViewCollapseAll]))
コメント
コメントはありません
※コメントは承認制となっております。管理者が承認するまで表示されません。申し訳ありませんが、投稿が表示されるまでしばらくお待ちください。