Копирование групп доступа между пользователями

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

Доработки, позволяющие переносить группы доступа между пользователями. Подходит для Управление торговлей для Украины, редакция 3.1, Управление торговлей, редакция 11.1 и, я думаю, для других конфигураций, написанных на базе БСП.

   Когда в базе создают много групп доступа для тонкой настройки прав между пользователями, то раздача прав новым пользователям может занимать много времени или приводить к ошибкам, так как из за большого количество групп можешь пропустить какую-то из них. Для упрощения этой ситуации был разработан механизм копирования групп между пользователями. Это удобно, когда приходит новый сотрудник в отдел, и он будет выполнять такие же функции, как и другие его коллеги. 

Для добавления этого функционала в конфигурацию необходимо

1. В общюю форму "ПраваДоступа" добавить команду 

2. Пишем код в обработчике команды

&НаКлиенте
Процедура КопироватьГруппыДоступа(Команда)
	ПараметрыФормы = Новый Структура;
	ПараметрыФормы.Вставить("РежимВыбора", Истина);
	ОткрытьФорму("Справочник.Пользователи.ФормаСписка", ПараметрыФормы, ЭтаФорма);
КонецПроцедуры

3. Добавляем на форме обработчик формы "ОбработкаВыбора"

4. Код в обработчике "ОбработкаВыбора"

&НаКлиенте
Процедура ОбработкаВыбора(ВыбранноеЗначение, ИсточникВыбора)
	Если ИсточникВыбора.ИмяФормы = "Справочник.Пользователи.Форма.ФормаСписка" Тогда
		Ответ = Вопрос("Текущий список групп доступа будет очищен. Продолжить?", РежимДиалогаВопрос.ДаНет,,, "Предупреждение");
		Если Ответ = КодВозвратаДиалога.Да Тогда
			Для каждого СтрокаГруппыДоступа Из ГруппыДоступа Цикл
				ВключитьИсключитьИзГруппы(СтрокаГруппыДоступа.ГруппаДоступа, Ложь);	
			КонецЦикла;
			
			СписокГрупп = Новый СписокЗначений;
			ПолучитьСписокГруппВыбранногоПользователя(ВыбранноеЗначение, СписокГрупп);
			
			Для каждого СтрокаСписокГрупп Из СписокГрупп Цикл
				ВключитьИсключитьИзГруппы(СтрокаСписокГрупп.Значение, Истина);		
			КонецЦикла; 
		КонецЕсли;		
	КонецЕсли;  
КонецПроцедуры

&НаСервереБезКонтекста
Процедура ПолучитьСписокГруппВыбранногоПользователя(ВыбранноеЗначение, СписокГрупп)
	Запрос = Новый Запрос;
	Запрос.Текст = "ВЫБРАТЬ
	               |	ГруппыДоступаПользователи.Ссылка КАК ГруппаДоступа
	               |ИЗ
	               |	Справочник.ГруппыДоступа.Пользователи КАК ГруппыДоступаПользователи
	               |ГДЕ
	               |	ГруппыДоступаПользователи.Пользователь = &Пользователь
	               |	И НЕ ГруппыДоступаПользователи.Ссылка.ПометкаУдаления";
	Запрос.УстановитьПараметр("Пользователь", ВыбранноеЗначение);
	РезультатЗапроса = Запрос.Выполнить();
	Если НЕ РезультатЗапроса.Пустой() Тогда
		Выборка = РезультатЗапроса.Выбрать();
		Пока Выборка.Следующий() Цикл
			СписокГрупп.Добавить(Выборка.ГруппаДоступа);
		КонецЦикла;
	КонецЕсли; 
КонецПроцедуры

5. В результате получаем вот такой функционал

Спасибо за внимание!

См. также

В этой теме еще нет сообщений.
Оставьте свое сообщение