Долго искал что-то похожее, но кривые руки и, видимо, неумение пользоваться поиском привели к тому, чтобы написать простую обработку для получения разбивки по каждому объекту (документу и справочнику) ролей и прав пользователей.
Звёзд с неба она не хвататет, но дело своё делает.
Привожу код ниже:
// !!! Роли !!!
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Роль»);
Для каждого пользователь из ПользователиИнформационнойБазы.ПолучитьПользователей() Цикл
Для каждого роль из пользователь.роли Цикл
Строка = ТЗ.Добавить();
Строка.Роль = Роль;
КонецЦикла;
КонецЦикла;
ТЗ.Свернуть(«Роль»);
ИспользуемыеРолиБезПовторов = ТЗ;// !!! Документы !!!
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Документ»);
Для Каждого Документ Из Метаданные.Документы Цикл
Строка = ТЗ.Добавить();
Строка.Документ = Документ;
КонецЦикла;
ТЗ_Документы = ТЗ;// !!! Справочники !!!
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить(«Справочник»);
Для Каждого Справочник Из Метаданные.Справочники Цикл
Строка = ТЗ.Добавить();
Строка.Справочник = Справочник;
КонецЦикла;
ТЗ_Ссправочники = ТЗ;// !!! Шапка таблицы значений !!!
ТаблицаРезультат = Новый ТаблицаЗначений;
ТаблицаРезультат.Колонки.Добавить(«ОбъектМетаданных»);
ТаблицаРезультат.Колонки.Добавить(«Право»);
Для каждого элем из ИспользуемыеРолиБезПовторов Цикл
ТаблицаРезультат.Колонки.Добавить(элем.Роль.Имя);
КонецЦикла; // Роли в ТаблицуРезультат// !!! Права доступа!!!
МассивПрав = Новый Массив;
МассивПрав.Добавить(«Чтение»);
МассивПрав.Добавить(«Добавление»);
МассивПрав.Добавить(«Изменение»);
МассивПрав.Добавить(«Удаление»);
МассивПрав.Добавить(«Проведение»);
МассивПрав.Добавить(«ОтменаПроведения»);
МассивПрав.Добавить(«Просмотр»);
МассивПрав.Добавить(«ИнтерактивноеДобавление»);
МассивПрав.Добавить(«Редактирование»);
МассивПрав.Добавить(«Использование»);
МассивПрав.Добавить(«ВводПоСтроке»);// !!! Проверка Документов !!!
Для каждого документ Из ТЗ_Документы Цикл
Для каждого элемент Из МассивПрав Цикл
НоваяСтрокаТЗ = ТаблицаРезультат.Добавить();
НоваяСтрокаТЗ.ОбъектМетаданных = документ.Документ;
НоваяСтрокаТЗ.Право = элемент;
Для каждого роль Из ИспользуемыеРолиБезПовторов Цикл
Колонка = ТаблицаРезультат.Колонки.Найти(роль.Роль.Имя);
НомерКолонки = ТаблицаРезультат.Колонки.Индекс(Колонка);
НоваяСтрокаТЗ.Установить(НомерКолонки, ПравоДоступа(элемент, документ.Документ, роль.Роль));
КонецЦикла;
КонецЦикла;
КонецЦикла;// !!! Проверка Справочников!!!
Для каждого справочник Из ТЗ_Ссправочники Цикл
Для каждого элемент Из МассивПрав Цикл
НоваяСтрокаТЗ = ТаблицаРезультат.Добавить();
НоваяСтрокаТЗ.ОбъектМетаданных = справочник.Справочник;
НоваяСтрокаТЗ.Право = элемент;
Для каждого роль Из ИспользуемыеРолиБезПовторов Цикл
Колонка = ТаблицаРезультат.Колонки.Найти(роль.Роль.Имя);
НомерКолонки = ТаблицаРезультат.Колонки.Индекс(Колонка);
НоваяСтрокаТЗ.Установить(НомерКолонки, ПравоДоступа(элемент, справочник.Справочник, роль.Роль));
КонецЦикла;
КонецЦикла;
КонецЦикла;
а нажать в конфигураторе правой кнопкой по ОБЩИЕ Роли и выбрать ВСЕ РОЛИ и получиться без кода и без веловипеда + можно смотреть ограничения.
(1)rumik007, Это всё хорошо, но что делать с той таблицей? Или ты предлагаешь в xml грузить?) Видел я что получается. Только по одному объекту(документу) порядка 5000 строчек в xml файле. Потому и пришлось писать что-то своё.
Ограничения были не так важны. И с их выводом тоже проблем нет, если нужно. Но в своей результирующей таблице я сразу вижу нужные мне права на объекты в разрезе ролей.
(2) AlX0id, (3) Светлый ум, Это всё хорошо и прекрасно. Но такому пользователю, как мне — не поможет =) ибо 0$m и как-то почерпнуть важную инфу очень сложно. Потому и приложил текст модуля. Чтобы было быстро понятно что и как #k8SjZc9Dxk_#k8SjZc9Dxk
на УТ10.3 1С 8.2 как будет работать?
(4) JieroJiac,
Если 0СМ — открою один секрет.. Можно поискать в интернете по названию 😉 Не так уж редко находится или обработка, или аналог )