Я попытался решить ту же проблему и в итоге сделал две вещи: (1) автоматически отправил пользователю электронное письмо со ссылкой на базу данных и попросил его удалить значок базы данных, чтобы удалить частные просмотры, и (2) предупредить пользователя, когда дизайн частного просмотра изменился.
Первая часть была довольно простой - я написал функцию LotusScript, которая отправляла бы текущему пользователю сообщение электронной почты, содержащее ссылку на текущую базу данных (ту, которая содержит частные представления), вместе с некоторым значимым текстом иинформация базы данных.Все, что нужно было сделать пользователю, это выйти из базы данных, удалить значок базы данных, открыть только что полученное электронное письмо и снова открыть базу данных, используя ссылку.Нет необходимости перемещаться по папкам сервера или задаваться вопросом, на какой сервер перейти.Это может быть использовано само по себе, например, в кнопке, но я закончил тем, что скомбинировал это с чем-то более хитрым.
Во второй части был изобретен способ предупредить пользователя о том, что дизайн представления ониоткрытие устарело.Сложно было обнаружить, что дизайн представления изменился.То, что сделало это возможным, было то, что фактически вызвало проблему в первую очередь - тот факт, что Notes кэширует частное представление.При кэшировании частного представления Notes также кэширует константы, на которые ссылается скрипт в событиях представления, которые являются частью библиотек LotusScript, используемых этим представлением.
Вот описание дизайна, который я использовал:
- Позвольте представлению использовать общую библиотеку сценариев,
PrivateViewsCode
. - В
PrivateViewsCode
(Declarations)
объявить Const DESIGN_VERSION = "1.0"
. - В
PrivateViewsCode
объявить функцию myQueryopen
.Один из параметров, который получает myQueryopen
- это строка designVersion
. - В приватном вызове события
Queryopen
myQueryopen
, передавая DESIGN_VERSION
в designVersion
.Поскольку этот код находится в кэшированном представлении, DESIGN_VERSION
будет содержать постоянное значение, как оно было в момент кэширования дизайна представления (когда пользователь впервые его открыл), в данном случае - "1.0"
. В myQueryopen
сравнить designVersion
с DESIGN_VERSION
.
Dim designChanged As Integer
designChanged = (designVersion <> DESIGN_VERSION)
Поскольку myQueryopen
является частью библиотеки сценариев PrivateViewsCode
, здесь вы фактически сравниваете DESIGN_VERSION
(как кешируется в приватном представлении и затем передается в myQueryopen
) с DESIGN_VERSION
изPrivateViewsCode
, который всегда актуален.
- Осталось только перекомпилировать представления (Tools \ Recompile all LotusScript) после изменения
DESIGN_VERSION
.
Я надеюсь, что это объясняет дизайн, вот как это работает:
Способ, которым Кен справляется с этим, имеет главное преимущество: он вообще не вовлекает пользователей.Для меня это было неприемлемо из-за частоты, с которой я вносил изменения в представления (приложение только что было развернуто, и у меня было много запросов на изменение представлений), а также из-за большого количества частных представлений в приложении.
(Редактировать)
Я предполагал, что у вас есть особая причина для использования частных представлений, но я использовал «Показать отдельную категорию» во встроенном представлении (как предлагает leyrer) с тех пор, как оно стало доступно и быловполне доволен этим.Если вы обнаружите какие-либо ограничения в использовании параметра «Показать отдельную категорию», я постараюсь вам в этом помочь.