Вот и сделал себе "кайф", а пользователям радость.
Повозился пока нашел удобный вариант получения из ПВХ (Планов видов характеристик) необходимый мне объект и как итог его форму выбора
Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ОсновнаяФормаДляВыбора.ПолноеИмя()
И добавил следующий код
&НаКлиенте Процедура КомандаПодбор(Команда) ПараметрыФормы = Новый Структура; ПараметрыФормы.Вставить("РежимВыбора", Истина); ПараметрыФормы.Вставить("ЗакрыватьПриВыборе", Ложь); ПараметрыФормы.Вставить("МножественныйВыбор",Истина); ОткрытьФорму(ВернутьТекущуюФормуВЫбора(),ПараметрыФормы,Элементы.ЗначенияДоступа); //Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ПолноеИмя() //Если Метаданные.Справочники КонецПроцедуры Функция ВернутьТекущуюФормуВЫбора() Возврат Метаданные.НайтиПоТипу(ТекущийВидДоступа.ТипЗначения.Типы()[0]).ОсновнаяФормаДляВыбора.ПолноеИмя(); КонецФункции &НаКлиенте Процедура ЗначениеДоступаОбработкаВыбора(Элемент, ВыбранноеЗначение, СтандартнаяОбработка) Если ВыбранноеЗначение = Тип("СправочникСсылка.Пользователи") ИЛИ ВыбранноеЗначение = Тип("СправочникСсылка.ГруппыПользователей") Тогда СтандартнаяОбработка = Ложь; НачальноеЗначение = Элементы.ЗначенияДоступа.ТекущиеДанные.ЗначениеДоступа; ОткрытьФорму("Справочник.Пользователи.ФормаВыбора", Новый Структура("ВыборГруппПользователей, ТекущаяСтрока", Истина, НачальноеЗначение), Элемент); ИначеЕсли ВыбранноеЗначение = Тип("СправочникСсылка.ВнешниеПользователи") ИЛИ ВыбранноеЗначение = Тип("СправочникСсылка.ГруппыВнешнихПользователей") Тогда СтандартнаяОбработка = Ложь; НачальноеЗначение = Элементы.ЗначенияДоступа.ТекущиеДанные.ЗначениеДоступа; ОткрытьФорму("Справочник.ВнешниеПользователи.ФормаВыбора", Новый Структура("ВыборГруппВнешнихПользователей, ТекущаяСтрока", Истина, НачальноеЗначение), Элемент); КонецЕсли; тМасс = Новый Массив; Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") тогда тМасс.Добавить(ВыбранноеЗначение); Иначе тМасс = ВыбранноеЗначение; КонецЕсли; Если ТипЗнч(ВыбранноеЗначение) = Тип("Массив") тогда Для Каждого ВыбранныйЭлемент Из ВыбранноеЗначение Цикл Если Объект.ЗначенияДоступа.НайтиСтроки(Новый Структура("ЗначениеДоступа",ВыбранныйЭлемент)).Количество() = 0 Тогда НоваяСтрока = Объект.ЗначенияДоступа.Добавить(); НоваяСтрока.ЗначениеДоступа = ВыбранныйЭлемент; НоваяСтрока.ВидДоступа = ТекущийВидДоступа; КонецЕсли; КонецЦикла; КонецЕсли; КонецПроцедуры
В общем пока все работает.
No comments:
Post a Comment