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



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

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

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

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

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

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

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

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

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

СписокГрупп = Новый СписокЗначений;
ПолучитьСписокГруппВыбранногоПользователя(ВыбранноеЗначение, СписокГрупп);

Для каждого СтрокаСписокГрупп Из СписокГрупп Цикл
ВключитьИсключитьИзГруппы(СтрокаСписокГрупп.Значение, Истина);
КонецЦикла;
КонецЕсли;
КонецЕсли;
КонецПроцедуры

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

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

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

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *