覆盖作者字段并允许访问某些字段。莲花便笺

时间:2017-10-09 20:59:22

标签: lotus-notes

我有一个Notes表单,其中包含许多字段,选项卡表,嵌入式视图等。编辑访问权限仅限于通过作者字段和ACL的小组,以防止更改大多数数据。但是,我还需要允许将一个或两个字段编辑到更广泛的用户组。实质上与使用受控访问部分可以做的相反。

在这种情况下,迁移到XPages并不是一个现实的选择。

我知道这可能是一个非首发,但任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我也会按照理查德在他的回应中描述的路径,但没有延迟。编写代理,代表允许编辑该数据库中所有内容的人/服务器运行。

然后创建一个在对话框中打开的表单,用户可以填写该表单并使用runonserver调用代理程序。

示例代码可能如下所示:

Dim ws as New NotesUIWorkspace
Dim ses as New NotesSession
Dim db as NotesDatabase
Dim ag as NotesAgent
Dim docTmp as NotesDocument
Dim strID as String
Dim varOK as Variant

Set db = ses.CurrentDatabase
Set ag = db.GetAgent( "RunMeOnServerOnBehalfOfSomeone" )
Set docTmp = new NotesDocument( db )
call docTmp.ReplaceItemValue( "ChangeUNID", docToEdit.UniversalID )

varOK = ws.Dialogbox( "YourSpecialDialogForm", True, True, False, False, False, False, "Enter values", docTmp, True, False, True )
If not varOK then exit sub
Call docTmp.Save( True, True, True ) '- runonserver cannot be called with a notesdocument that is unsaved
strId = docTmp.NoteID
Call ag.RunOnServer( strID )

在代理中,您读取文档的unid以更改并将docTmp中的值写入目标文档。

不要忘记稍后在代理或代码中清理docTmp。

当然你可以使用"可重复使用"参数文档或每个用户一个文档。取决于此功能需要多长时间。

但这似乎有点延伸(你需要跟踪你的代理人世界卫生组织要求改变,因为所有文件都将由代理人的签名者而不是用户本人保存。

可能更好的解决方案是将用户添加到文档的作者字段,并使用访问控制部分简单地保护文档中的所有其他内容。你可以完全隐藏那些部分标题和所有内容,这样任何人都无法折叠它们,或者你不喜欢它们的外观。

答案 1 :(得分:0)

没有允许没有作者访问权限的用户能够直接编辑部分文档。我能想到的唯一选择是让他们能够点击一个按钮,允许他们将更改键入新的临时文档(使用仅包含您要公开的字段的表单),并设置一个在创建或修改文档时运行的代理程序将读取这些文档,将数据从它们复制回原始文档。但是,在应用更改之前可能会有一些延迟,因此您必须向用户发出警告。