Тема: Роли объекта. Не срабатывает проверка наличия роли

Создаем команду для некоего объекта с кодом

If ThisObject.Roles.Has(ThisApplication.RoleDefs("ROLE_DEVELOPER")) Then
MsgBox "Yes"
End If

Запускаем ее, а в ответ тишина. Такая роль на объекте точно есть, проверял

Re: Роли объекта. Не срабатывает проверка наличия роли

а вот так работает?:

If ThisObject.Roles.Has("ROLE_DEVELOPER") Then MsgBox "Yes"

Re: Роли объекта. Не срабатывает проверка наличия роли

Сработало, в итоге вышло следующее:

If Not(ThisObject.Signs("SGN_CREATE").Empty) Then
    MsgBox "Yes"
    While ThisObject.Roles.Has("ROLE_DEVELOPER")
        ThisObject.Roles.Remove ThisObject.Roles.Item("ROLE_DEVELOPER")
    Wend
End If

Немного отклоняясь от темы, Not(ThisObject.Signs("SGN_CREATE").Empty) долэно принять TRUE в том случае если есть ХОТЯ БЫ ОДНА заполненная подпись этого типа на объекте?

(изменено: Anatoly, 3 мая 2007г. 09:02:16)

Re: Роли объекта. Не срабатывает проверка наличия роли

SafiullinMF пишет:

Сработало, в итоге вышло следующее:

...

На самом деле, в 3-йке появилась функция RolesByDef(RoleDef)
Т.е. код удаления роли "ROLE_DEVELOPER" из объекта "Object":

For Each Role in Object.RolesByDef("ROLE_DEVELOPER")
  Object.Roles.Remove Role
Next

Чтобы получить список ролей, данных конкретному пользователю, на конкретный объект используйте "RolesForUser"(user)