Массовое изменение прав (не БСП)

Администрирование - Защита, права, пароли

Внешняя обработка для массового изменения прав пользователей. Не требует БСП.

Есть насквозь нетиповая конфигурация (на 8.2). Потребовалось массово изменить набор прав для пользователей - у всех отобрать все роли и добавить одну. Для 300+ пользователей менять это в конфигураторе - слишком долго. И есть риск, что-то пропустить. Поэтому потребовался какой-то инструмент.

Конечно, сразу пошел искать на ИС. Сходу такого инструмента не нашел - чтобы все прямо совсем массово было. Поэтому потратил некоторое количество времени, чтобы написать свою реализацию.

Как оказалось, все просто. Решается через св-во глобального контекста ПользователиИнформационнойБазы. Главное, после редактирования прав, не забыть выполнить метод Записать() для элемента типа ПользовательИнформационнойБазы.

Выкладываю свой велосипедик (на ОФ). Вдруг кому еще пригодится.

Работа инструмента проверена на целевой нетиповой конфигурации, платформа 8.2.17.157. На типовых конфигурациях (с БСП), технически, тоже будет работать. Но, насколько знаю, там не приветствуется ввод пользователей и редактирование прав через Конфигуратор. А эта обработка действует аналогично - пишет только в настройки пользователей на уровне платформы.

И еще. Нюансик реализации. В список пользователей, кому могут быть изменены наборы ролей, НЕ выходят товарищи с ролью Администратор. Чтобы случайно не лишиться всех админов. Такие пользователи выводятся в служебное окно сообщений при запуске обработки.

Скачать файлы

Наименование Файл Версия Размер
Массовое изменение прав (не БСП):
.epf 13,27Kb
05.10.17
4
.epf 13,27Kb 4 Скачать

См. также

Комментарии
1. Павел Азаров (Ashwood) 21.02.18 19:19 Сейчас в теме
На 8.3.11.2867 не работает. Выдает ошибку:

Ошибка инициализации модуля: ВнешняяОбработка.МассовоеРедактированиеПрав.МодульОбъекта
по причине:
{ВнешняяОбработка.МассовоеРедактированиеПрав.МодульОбъекта(19)}: Ошибка при вызове метода контекста (Содержит)

по причине:
Несоответствие типов (параметр номер '1')
2. Сергей Долинин (ImHunter) 20 22.02.18 16:33 Сейчас в теме
(1) Возможно, обработка запущена под пользователем без админских прав.
Либо в конфигурации нет роли Администратор.
Что из этого - ваш случай?
3. Павел Азаров (Ashwood) 17.03.18 23:31 Сейчас в теме
Запущено было под полными правами, отдельно роли Администратор нет.
4. Сергей Долинин (ImHunter) 20 19.03.18 07:00 Сейчас в теме
(3) Ну ясно теперь. Допилю, как найду время.
5. Сергей Долинин (ImHunter) 20 22.03.18 07:57 Сейчас в теме
(3) Выложил обновление. А можно сделать и самостоятельно. Нужно заменить код процедуры модуля объекта ЗаполнитьПользователей(...) на вот этот:
Процедура ЗаполнитьПользователей(ЗначениеФлажкаИспользовать = Истина)
	
	РольАдминистратор = РольПоИмени("Администратор");
	
	ВсеПользователи = ПользователиИнформационнойБазы.ПолучитьПользователей();
	Для Каждого ТекПользователь Из ВсеПользователи Цикл 
		ЭтоАдминистратор = РольАдминистратор<>Неопределено И ТекПользователь.Роли.Содержит(РольАдминистратор);
		Если ЭтоАдминистратор Тогда 
			Сообщить("Пользователь с админскими правами: " + ТекПользователь);
			Продолжить;
		КонецЕсли;
		НовСтрока = ЭтотОбъект.СписокПользователей.Добавить();
		НовСтрока.Использовать = ЗначениеФлажкаИспользовать;
		НовСтрока.ИмяПользователя = ТекПользователь.Имя;
		НовСтрока.ПредставлениеПользователя = ТекПользователь.ПолноеИмя;
		НовСтрока.УИД = Строка(ТекПользователь.УникальныйИдентификатор);
	КонецЦикла;
	
КонецПроцедуры
Показать

Работу измененной обработки не тестировал. Но вроде все и так очевидно.
Оставьте свое сообщение