Тема: Открытие доступа к объекту
Привет всем) Люди добрые нужен скрипт.
Скрипт должен выбрать пользователя или группу пользователей(диалог выбора пользователей) а затем дать определенную роль(ну т.е.заранее определенную в скрипте по sysid).
У меня есть код такой: выбор пользователя, затем выбор роли и отправка выбранному юзеру уведомления(с наследованием прав, есть еще код без наследования прав). Если можно выделите место где дополняется код:) Заранее спасиба!
Option explicit call main(ThisObject) sub main(obj) ' процедура назначения пользователей на роль ' выбирается из диалога пользователя или группы dim usersDlg dim selectedUsers, selectedGroups dim user, group dim usersTable dim objRoles dim eBody obj.Permissions = SysAdminPermissions set objRoles = obj.Roles ' диалог выбора set usersDlg = ThisApplication.Dialogs.SelectUserDlg usersDlg.Show if usersDlg.Groups.Count > 0 then ' если выбрали хоть одну группу set selectedGroups = usersDlg.Groups ' для каждой группы for each group in selectedGroups ' добавить роль на группу eBody = "" call addRole(objRoles, group.SysName, eBody) if eBody <> "" then eBody = eBody + " группе пользователей " call SendmailMsg(group, obj, eBody) end if next end if if usersDlg.Users.Count > 0 then ' если выбрали хоть одного пользователя set selectedUsers = usersDlg.Users ' для каждого пользователя for each user in selectedUsers ' добавить этих пользователей eBody = "" call addRole(objRoles, user.SysName, eBody) if eBody <> "" then eBody = eBody + " пользователю " call SendMailMsg(user, obj, eBody) end if next end if end sub Function roleExists(objRoles, roleName, userName) dim role roleExists = False for each role in objRoles if role.User is nothing then roleExists = roleExists or ((role.RoleDef.SysName = roleName) and _ (role.Group.SysName = userName)) else roleExists = roleExists or ((role.RoleDef.SysName = roleName) and _ (role.User.SysName = userName)) end if next End Function Sub addRole(objRoles, userName, eBody) dim role, roleName, dsRole dim arr(), rearr dim slDlg dim slRoles, i set slRoles = ThisApplication.RoleDefs i = 0 for each role in slRoles i = i + 1 ReDim Preserve arr(i) set arr(i) = role next set slDlg = ThisApplication.Dialogs.SelectDlg slDlg.SelectFrom = arr if slDlg.Show = False then Exit sub else rearr = slDlg.Objects if ubound(slDlg.Objects) = 0 then set role = rearr(0) roleName = role.sysname dsRole = role.Description else if ubound(slDlg.Objects) > 0 then msgbox("выбрано слишком много ролей") Exit sub end if end if end if if not roleExists(objRoles, roleName, userName) then set role = objRoles.create(roleName, userName) eBody = "Назначена роль " & Chr(34) & dsRole & Chr(34) else MsgBox "Такая роль уже существует на объекте!", vbExclamation end if End Sub sub SendMailMsg(mList, mObj, eBody) dim objMail Set objMail = ThisApplication.CreateMessage ' Заполняем свойства сообщения objMail.Subject = "Назначение роли" 'тема сообщения eBody = eBody & Chr(34) & mList.Description & Chr(34) & " на объект " & Chr(34) & mObj.Description & Chr(34) objMail.Body = eBody 'тело письма objMail.To = mList 'кому отправляем objMail.Attachments.Add(mObj) 'прибиваем объект к письму, чтобы долго не искать потом что же за объект ' Отсылаем сообщение objMail.Send end sub