да тут вообще шальные мысли...
Самая общая схема реализации ролей что в голову пришла:
1) Есть глПользователь - он же пользователь (фактически логин/пароль).
к пользователю привязываем некий объект РОЛИ, который определяет все роли, назначенные глПользователь. (параметры сеанса, фактически).
2) Каждая роль - это типа вектор доступа к объектам (доки, справочники и пр).
В общем случае Роль - вещь параметрическая. (то есть Кладовщик - склада, ГлБух - Организации, Сотрудник - отдела).
3) Есть Объекты (доки, спр и т.д.) которые тоже параметрические.
Для каждого Объекта определен список доступов к нему (запись, чтение и пр.)
Для каждого Объекта в разрезе доступов к инфо задаются его список параметров:
а) влияющие на доступ,
б) зависящие от доступа.
(К примеру журнал доков организации А, (организация А - влияющая на доступ (разрешить/запретить)), выводить только доки сотрудников отдела Б (значение отбора - зависящее от доступа).
4) Есть матрица отношения Роли(Параметры) и Объектов(Параметры) в конечном итоге и определяющая возможность доступа.
При реализации этой схемы написание конфы с ролями идет комфортно. Объекты пишутся так, как будто доступ к объектам полный. Я как разработчег в этот момент вообще о доступах не парюсь. Т.е. конструкций типа:
Если глПользователь.Кладовщик <> 1 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
Если глДоступныеСклады.НайтиЗначение(Склад) = 0 Тогда
СтатусВозврата(0);
Возврат;
КонецЕсли;
не пишу.
При таком подходе доступ к объекту и параметры будут проставлены автоматически, согласно правилам из матрицы отношений Ролей и Объектов. Но это коммунизм.
Если вынести из кода хотя бы ту часть стандартных доступов к объектам 1с что там уже реализована платформой, уже б стало намного проще писать поведение объектов. Котлеты и не котлеты уже б разделились...
Пока в коде все в куче и роли и не роли и это не камильфо никак.