如果有两个角色 Lotus Formula 脚本如何显示按钮
how to show button if there are two roles Lotus Formula script
我在 Lotus 中有一个页面,它有一个操作按钮。
当用户不属于角色 Admin 或 Supervisor 时,此按钮必须不可见。
我这样做的方法是添加这个公式:
@IsNotMember("[Admin]"; @UserRoles) | @IsNotMember("[主管]"; @UserRoles)
但是没用..
如果我只有 1 个,例如:@IsNotMember("[Admin]"; @UserRoles) 和管理员角色,那么作为管理员我可以看到它。
但我也希望,如果用户来自角色 Supervisor 而不是 Admin,他仍然可以看到该按钮。
怎么办?
公式
@IsNotMember("[Admin]" : "[Supervisor]"; @UserRoles)
returns @True 如果用户既没有角色“[Admin]”也没有“[Supervisor]”。将其用作按钮的 hide-when 公式。只有管理员和主管才能看到该按钮。
克努特的回答是正确的。我的回答说明了原因,并提供了一种隐藏时间的方法,几乎总能使它们更容易弄清楚。
Notes 一直在使用 hide-when 公式,但人们在他们的需求中确实倾向于考虑“see-when”!我们知道什么时候想看东西(在这种情况下,当我们是主管或管理员时)。我们真的很不擅长将那些“何时可见”的要求变成“何时隐藏”的公式,因为我们真的不善于记住 DeMorgan's Law,它说的是:^(P & Q) == (^P | ^问)
所以如果我们这样陈述需求:
Hide when the user isn't a Supervisor or an Admin
我们往往难以通过两次 @IsNotMember 调用(隐含逻辑 Nots)将其转化为正确的公式,因为我们忘记了 Ors 必须转化为 And 才能使其正确。但是如果我们这样想:
See when the user is an Admin or the user is an Supervisor
很容易看出如何表达:
@IsMember("[Supervisor]"; @UserRoles) | @IsMember("[Admin]"; @UserRoles);
或者利用公式语言列表的强大功能,我们可以将其缩短为:
@IsMember("[Supervisor]": "[Admin]" ; @UserRoles);
要将其转换为等效的 hide-when,您需要做的就是像这样在其周围放置一个合乎逻辑的 Not:
! (@IsMember("[Supervisor]": "[Admin]" ; @UserRoles));
您可以使用任何时效公式来做到这一点 - 只需用括号将其括起来并加上 !在它前面,但在仅使用@IsMember 的公式的特殊情况下,您可以将其更改为@IsNotMember,这将其带回 Knut 的解决方案。
我在 Lotus 中有一个页面,它有一个操作按钮。 当用户不属于角色 Admin 或 Supervisor 时,此按钮必须不可见。 我这样做的方法是添加这个公式:
@IsNotMember("[Admin]"; @UserRoles) | @IsNotMember("[主管]"; @UserRoles)
但是没用.. 如果我只有 1 个,例如:@IsNotMember("[Admin]"; @UserRoles) 和管理员角色,那么作为管理员我可以看到它。
但我也希望,如果用户来自角色 Supervisor 而不是 Admin,他仍然可以看到该按钮。
怎么办?
公式
@IsNotMember("[Admin]" : "[Supervisor]"; @UserRoles)
returns @True 如果用户既没有角色“[Admin]”也没有“[Supervisor]”。将其用作按钮的 hide-when 公式。只有管理员和主管才能看到该按钮。
克努特的回答是正确的。我的回答说明了原因,并提供了一种隐藏时间的方法,几乎总能使它们更容易弄清楚。
Notes 一直在使用 hide-when 公式,但人们在他们的需求中确实倾向于考虑“see-when”!我们知道什么时候想看东西(在这种情况下,当我们是主管或管理员时)。我们真的很不擅长将那些“何时可见”的要求变成“何时隐藏”的公式,因为我们真的不善于记住 DeMorgan's Law,它说的是:^(P & Q) == (^P | ^问)
所以如果我们这样陈述需求:
Hide when the user isn't a Supervisor or an Admin
我们往往难以通过两次 @IsNotMember 调用(隐含逻辑 Nots)将其转化为正确的公式,因为我们忘记了 Ors 必须转化为 And 才能使其正确。但是如果我们这样想:
See when the user is an Admin or the user is an Supervisor
很容易看出如何表达:
@IsMember("[Supervisor]"; @UserRoles) | @IsMember("[Admin]"; @UserRoles);
或者利用公式语言列表的强大功能,我们可以将其缩短为:
@IsMember("[Supervisor]": "[Admin]" ; @UserRoles);
要将其转换为等效的 hide-when,您需要做的就是像这样在其周围放置一个合乎逻辑的 Not:
! (@IsMember("[Supervisor]": "[Admin]" ; @UserRoles));
您可以使用任何时效公式来做到这一点 - 只需用括号将其括起来并加上 !在它前面,但在仅使用@IsMember 的公式的特殊情况下,您可以将其更改为@IsNotMember,这将其带回 Knut 的解决方案。