如何解决如何将用户目录绑定到系统用户列表 (1C:Enterprise 8.3)
我想将系统用户列表与我的员工目录绑定,以便我可以存储其他用户信息并基于当前用户创建 RLS 访问限制。
所以,我在员工目录中创建了 ID 属性,并在 ItemForm 模块中编写了这段代码:
&AtClient
Procedure IDStartChoice(Item,ChoiceData,StandardProcessing)
// Fill out the list of system users to choose from
StandardProcessing = False;
ChoiceData = GetUserList();
EndProcedure
&AtClient
Procedure IDChoiceProcessing(Item,SelectedValue,StandardProcessing)
// Fill out Users catalog item data
StandardProcessing = False;
ThisForm.Object.ID = SelectedValue;
Object.ID = GetIDUser(SelectedValue);
EndProcedure
&AtServerNoContext
// Read the list of system users
Function GetUserList()
UserList = New ValueList;
UserArray = InfobaseUsers.GetUsers();
For Each SystemUser In UserArray do
UserList.Add(SystemUser.UUID,SystemUser.FullName);
EndDo;
Return UserList;
EndFunction
&AtServerNoContext
Function GetIDUser(UserID)
If ValueIsFilled(UserID) then
SetPrivilegedMode(True);
Return InfobaseUsers.FindByUUID(UserID).FullName;
EndIf;
EndFunction
这里的想法是这行代码 Object.ID = GetIDUser(SelectedValue);
读取当前系统用户 ID 并将其存储到目录中。
我还创建了 CurrentUser 会话参数并将其值设置为属于会话模块中当前系统用户的 CatalogRef.Employees,如下所示:
Procedure SessionParameteRSSetting(requiredParameters)
// Set the CurrentUser session parameter value
SetPrivilegedMode(True);
CurrentUser = InfobaseUsers.CurrentUser();
SessionParameters.CurrentUser = Catalogs.Employees.FindByAttribute("ID",CurrentUser.UUID);
EndProcedure
我将这个 Read RLS 限制添加到 Emlopoyees 目录:WHERE Ref = &CurrentUser
,但是当我在任何特定用户下打开它时,我仍然可以看到所有用户(未过滤):
Should see Mesut only,not all the users
请帮忙!
Here is the DT file with the app
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。