#Область ОбработчикиСобытийФормы
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
Если Параметры.РежимВыбора Тогда
СтандартныеПодсистемыСервер.УстановитьКлючНазначенияФормы(ЭтотОбъект, "ВыборПодбор");
Иначе
Элементы.Список.РежимВыбора = Ложь;
КонецЕсли;
РодительПерсональныхГруппДоступа = Справочники.ГруппыДоступа.РодительПерсональныхГруппДоступа(Истина);
УпрощенныйИнтерфейсНастройкиПравДоступа = УправлениеДоступомСлужебный.УпрощенныйИнтерфейсНастройкиПравДоступа();
Если УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаСоздать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюСоздать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаСкопировать", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюСкопировать", "Видимость", Ложь);
КонецЕсли;
Список.Параметры.УстановитьЗначениеПараметра("Профиль", Параметры.Профиль);
Если ЗначениеЗаполнено(Параметры.Профиль) Тогда
Элементы.Профиль.Видимость = Ложь;
Элементы.Список.Отображение = ОтображениеТаблицы.Список;
Автозаголовок = Ложь;
Заголовок = НСтр("ru = 'Группы доступа'");
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаСоздатьГруппу", "Видимость", Ложь);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюСоздатьГруппу", "Видимость", Ложь);
КонецЕсли;
Если НЕ ПравоДоступа("Чтение", Метаданные.Справочники.ПрофилиГруппДоступа) Тогда
Элементы.Профиль.Видимость = Ложь;
КонецЕсли;
Если НЕ Пользователи.ЭтоПолноправныйПользователь() Тогда
ОбщегоНазначенияКлиентСервер.УстановитьЭлементОтбораДинамическогоСписка(
Список, "Ссылка", УправлениеДоступом.ГруппаДоступаАдминистраторы(),
ВидСравненияКомпоновкиДанных.НеРавно, , Истина);
КонецЕсли;
РежимВыбора = Параметры.РежимВыбора;
Если Параметры.РежимВыбора Тогда
РежимОткрытияОкна = РежимОткрытияОкнаФормы.БлокироватьОкноВладельца;
Элементы.Список.ВыборГруппИЭлементов = Параметры.ВыборГруппИЭлементов;
АвтоЗаголовок = Ложь;
Если Параметры.ЗакрыватьПриВыборе = Ложь Тогда
Элементы.Список.РежимВыделения = РежимВыделенияТаблицы.Множественный;
Заголовок = НСтр("ru = 'Подбор групп доступа'");
Иначе
Элементы.Список.МножественныйВыбор = Ложь;
Заголовок = НСтр("ru = 'Выбор группы доступа'");
КонецЕсли;
КонецЕсли;
Если ОбщегоНазначения.ЭтоАвтономноеРабочееМесто() Тогда
ТолькоПросмотр = Истина;
КонецЕсли;
Если ОбщегоНазначения.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ПриСозданииНаСервере(ЭтотОбъект);
КонецЕсли;
КонецПроцедуры
#КонецОбласти
#Область ОбработчикиСобытийЭлементовТаблицыФормыСписок
&НаКлиенте
Процедура СписокПриИзменении(Элемент)
СписокПриИзмененииНаСервере();
КонецПроцедуры
&НаКлиенте
Процедура СписокПриАктивизацииСтроки(Элемент)
Если ОбщегоНазначенияКлиент.ПодсистемаСуществует("СтандартныеПодсистемы.ПодключаемыеКоманды") Тогда
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьОбновлениеКоманд(ЭтотОбъект);
КонецЕсли;
Если Не СтандартныеПодсистемыКлиент.ЭтоЭлементДинамическогоСписка(Элементы.Список) Тогда
Возврат;
КонецЕсли;
ТекущиеДанные = ТекущиеДанныеТаблицы(Элементы.Список);
ПереносДопустим = НЕ ЗначениеЗаполнено(ТекущиеДанные.Пользователь)
И ТекущиеДанные.Ссылка <> РодительПерсональныхГруппДоступа;
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"ФормаПеренестиЭлемент", "Доступность", ПереносДопустим);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокКонтекстноеМенюПеренестиЭлемент", "Доступность", ПереносДопустим);
ОбщегоНазначенияКлиентСервер.УстановитьСвойствоЭлементаФормы(Элементы,
"СписокПеренестиЭлемент", "Доступность", ПереносДопустим);
КонецПроцедуры
&НаКлиенте
Процедура СписокВыборЗначения(Элемент, Значение, СтандартнаяОбработка)
Если Значение = РодительПерсональныхГруппДоступа Тогда
СтандартнаяОбработка = Ложь;
ПоказатьПредупреждение(, НСтр("ru = 'Эта группа только для персональных групп доступа.'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломДобавления(Элемент, Отказ, Копирование, Родитель, Группа)
Если Родитель = РодительПерсональныхГруппДоступа Тогда
Отказ = Истина;
Если Группа Тогда
ПоказатьПредупреждение(, НСтр("ru = 'В этой группе не используются подгруппы.'"));
ИначеЕсли УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
ПоказатьПредупреждение(,
НСтр("ru = 'Персональные группы доступа
|создаются только в форме ""Права доступа"".'"));
Иначе
ПоказатьПредупреждение(, НСтр("ru = 'Персональные группы доступа не используются.'"));
КонецЕсли;
ИначеЕсли НЕ Группа
И УпрощенныйИнтерфейсНастройкиПравДоступа Тогда
Отказ = Истина;
ПоказатьПредупреждение(,
НСтр("ru = 'Используются только персональные группы доступа,
|которые создаются только в форме ""Права доступа"".'"));
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура СписокПередНачаломИзменения(Элемент, Отказ)
ТекущиеДанные = Элемент.ТекущиеДанные;
Если ТекущиеДанные = Неопределено
Или ТекущиеДанные.ЭтоГруппа Тогда
Возврат;
КонецЕсли;
Отказ = Истина;
ПараметрыФормы = Новый Структура("Ключ", ТекущиеДанные.Ссылка);
ОткрытьФорму("Справочник.ГруппыДоступа.ФормаОбъекта", ПараметрыФормы, Элемент);
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СписокПриПолученииДанныхНаСервере(ИмяЭлемента, Настройки, Строки)
Для Каждого СтрокаСписка Из Строки Цикл
Если ТипЗнч(СтрокаСписка.Ключ) <> Тип("СправочникСсылка.ГруппыДоступа") Тогда
Продолжить;
КонецЕсли;
Данные = СтрокаСписка.Значение.Данные;
Если Данные.ЭтоГруппа
Или Не ЗначениеЗаполнено(Данные.Пользователь) Тогда
Продолжить;
КонецЕсли;
Данные.Наименование =
УправлениеДоступомСлужебныйКлиентСервер.ПредставлениеГруппыДоступа(Данные);
КонецЦикла;
КонецПроцедуры
&НаКлиенте
Процедура СписокПеретаскивание(Элемент, ПараметрыПеретаскивания, СтандартнаяОбработка, Строка, Поле)
Если Строка = РодительПерсональныхГруппДоступа Тогда
СтандартнаяОбработка = Ложь;
ПоказатьПредупреждение(, НСтр("ru = 'Эта папка только для персональных групп доступа.'"));
ИначеЕсли ПараметрыПеретаскивания.Значение = РодительПерсональныхГруппДоступа Тогда
СтандартнаяОбработка = Ложь;
ПоказатьПредупреждение(, НСтр("ru = 'Папка персональных групп доступа не переносится.'"));
КонецЕсли;
КонецПроцедуры
&НаСервереБезКонтекста
Процедура СписокПриИзмененииНаСервере()
УправлениеДоступомСлужебный.ЗапуститьОбновлениеДоступа();
КонецПроцедуры
&НаКлиенте
Функция ТекущиеДанныеТаблицы(ТаблицаФормы)
Возврат ТаблицаФормы.ТекущиеДанные;
КонецФункции
#КонецОбласти
#Область СлужебныеПроцедурыИФункции
&НаКлиенте
Процедура Подключаемый_ВыполнитьКоманду(Команда)
МодульПодключаемыеКомандыКлиент = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиент");
МодульПодключаемыеКомандыКлиент.НачатьВыполнениеКоманды(ЭтотОбъект, Команда, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ПродолжитьВыполнениеКомандыНаСервере(ПараметрыВыполнения, ДополнительныеПараметры) Экспорт
ВыполнитьКомандуНаСервере(ПараметрыВыполнения);
КонецПроцедуры
&НаСервере
Процедура ВыполнитьКомандуНаСервере(ПараметрыВыполнения)
МодульПодключаемыеКоманды = ОбщегоНазначения.ОбщийМодуль("ПодключаемыеКоманды");
МодульПодключаемыеКоманды.ВыполнитьКоманду(ЭтотОбъект, ПараметрыВыполнения, Элементы.Список);
КонецПроцедуры
&НаКлиенте
Процедура Подключаемый_ОбновитьКоманды()
МодульПодключаемыеКомандыКлиентСервер = ОбщегоНазначенияКлиент.ОбщийМодуль("ПодключаемыеКомандыКлиентСервер");
МодульПодключаемыеКомандыКлиентСервер.ОбновитьКоманды(ЭтотОбъект, Элементы.Список);
КонецПроцедуры
#КонецОбласти