Wednesday, August 19, 2015

Доработка прав доступа в УТ11

Постоянно донимали пользователи со своими правами и разрешениями. В связи с этим пришлось доработать УТ11 на ускорение ввода разрешений или блокировок.

Вот и сделал себе "кайф", а пользователям радость.
Повозился пока нашел удобный вариант получения из ПВХ (Планов видов характеристик) необходимый мне объект и как итог его форму выбора
Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ОсновнаяФормаДляВыбора.ПолноеИмя()

И добавил следующий код

&НаКлиенте
Процедура КомандаПодбор(Команда) 
 ПараметрыФормы = Новый Структура;
 ПараметрыФормы.Вставить("РежимВыбора", Истина);
 ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь);
 ПараметрыФормы.Вставить("МножественныйВыбор",Истина);
 ОткрытьФорму(ВернутьТекущуюФормуВЫбора(),ПараметрыФормы,Элементы.ЗначенияДоступа);
 //Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ПолноеИмя()
 //Если Метаданные.Справочники
КонецПроцедуры

Функция ВернутьТекущуюФормуВЫбора() 
 Возврат Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ОсновнаяФормаДляВыбора.ПолноеИмя();
КонецФункции

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


В общем пока все работает.

No comments:

Post a Comment