Исходный текст
Option Explicit
Call ShowUserRole(ThisObject)
'==============================================================================
' Вывести роль выбранного пользователя на указанном объекте
'==============================================================================
Sub ShowUserRole(Obj)
Dim SelUserDlg, RetVal, SelUser, Role, StrInfo
' Открываем диалог выбора пользователя
Set SelUserDlg = ThisApplication.Dialogs.SelectUserDlg
RetVal = SelUserDlg.Show
'Если диалог отменен или не выбрано ни одного пользователя, выйти из процедуры
If (RetVal<>TRUE) Or (SelUserDlg.Users.Count=0) Then Exit Sub
'Получить ссылку на первого выбранного пользователя
Set SelUser = SelUserDlg.Users(0)
'Найти роль пользователя на объекте
StrInfo = ""
For Each Role In Obj.Roles
If Role.User.SysName = SelUser.SysName Then
StrInfo = StrInfo & "Роль: " & Role.Description & _
", наследуемая: " & Role.Inheritable & Chr(13)
'В логах отладчика выводим идентификатор
ThisApplication.DebugPrint("Идентификатор роли " & Role.Description & " - " & Role.Handle)
End If
Next
'Если строка до сих пор пустая, значит ни одной роли на объекте нет.
If StrInfo="" Then
StrInfo = "Пользователь " & SelUser.Description & " не имеет роли на объекте."
Else
StrInfo = "Роли пользователя " & SelUser.Description &_
" на объекте """ & Obj.Description & """:" & Chr(13) & StrInfo
End If
'Вывести информацию в окно сообщений
ThisApplication.AddNotify StrInfo
End Sub
'==============================================================================