() посмотрел, на ИТСе красиво расписали, а по факту в конфигурации шляпа полная.
// Возвращает доступность хотя бы одной из указанных ролей или полноправность
// пользователя (текущего или указанного).
//
// Параметры:
// ИменаРолей - Строка - имена ролей, разделенные запятыми, доступность которых проверяется.
//
// Пользователь - Неопределено - проверяется текущий пользователь ИБ.
// - СправочникСсылка.Пользователи
// - СправочникСсылка.ВнешниеПользователи - осуществляется
// поиск пользователя ИБ по уникальному идентификатору, заданному в реквизите.
// ИдентификаторПользователяИБ. Если пользователь ИБ не существует, возвращается Ложь.
// - ПользовательИнформационнойБазы - проверяется указанный пользователь ИБ.
//
// УчитыватьПривилегированныйРежим - Булево - если задано Истина, тогда для текущего пользователя
// функция возвращает Истина, когда установлен привилегированный режим.
//
// Возвращаемое значение:
// Булево - Истина, если хотя бы одна из указанных ролей доступна
// или функция ЭтоПолноправныйПользователь(Пользователь) возвращает Истина.
//
Функция РолиДоступны(ИменаРолей,
Пользователь = Неопределено,
УчитыватьПривилегированныйРежим = Истина) Экспорт
РольАдминистраторСистемы = ЭтоПолноправныйПользователь(Пользователь, Истина, УчитыватьПривилегированныйРежим);
РольПолныеПрава = ЭтоПолноправныйПользователь(Пользователь, Ложь, УчитыватьПривилегированныйРежим);
Если РольАдминистраторСистемы И РольПолныеПрава Тогда
Возврат Истина;
КонецЕсли;
МассивИменРолей = СтрРазделить(ИменаРолей, ",", Ложь);
ТребуетсяРольАдминистраторСистемы = Ложь;
НазначениеРолей = ПользователиСлужебныйПовтИсп.НазначениеРолей();
Для Каждого ИмяРоли Из МассивИменРолей Цикл
Если НазначениеРолей.ТолькоДляАдминистраторовСистемы.Получить(ИмяРоли) <> Неопределено Тогда
ТребуетсяРольАдминистраторСистемы = Истина;
Прервать;
КонецЕсли;
КонецЦикла;
Если РольАдминистраторСистемы И ТребуетсяРольАдминистраторСистемы
Или РольПолныеПрава И Не ТребуетсяРольАдминистраторСистемы Тогда
Возврат Истина;
КонецЕсли;
УстановитьПривилегированныйРежим(Истина);
СвойстваПользователяИБ = СвойстваПроверяемогоПользователяИБ(Пользователь);
Если СвойстваПользователяИБ = Неопределено Тогда
Возврат Ложь;
КонецЕсли;
Если СвойстваПользователяИБ.УказанТекущийПользовательИБ Тогда
Для Каждого ИмяРоли Из МассивИменРолей Цикл
//@skip-check using-isinrole
Если РольДоступна(СокрЛП(ИмяРоли)) Тогда // Не заменять на РолиДоступны.
Возврат Истина;
КонецЕсли;
КонецЦикла;
Иначе
Роли = СвойстваПользователяИБ.ПользовательИБ.Роли;
Для Каждого ИмяРоли Из МассивИменРолей Цикл
Если Роли.Содержит(Метаданные.Роли.Найти(СокрЛП(ИмяРоли))) Тогда
Возврат Истина;
КонецЕсли;
КонецЦикла;
КонецЕсли;
Возврат Ложь;
КонецФункции
Показать
Внимание вопрос - Что вернет Функция Пользователи.РолиДоступны("МояНоваяРоль") если это полноправный пользователь ?
А предположим у меня таких пользователей несколько но "МояНоваяРоль" назначена и должна работать только у одного конкретного пользователя