Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Открытие управляемую форму для определенного пользователя, для других обычную

Открытие управляемую форму для определенного пользователя, для других обычную
Я
   Guerro
 
24.10.21 - 18:52
Сейчас потихоньку подготавливаю(учусь) к переходу на управляемые формы и приложения, поэтому есть необходимость для определенных пользователей(админа), при создании документа из формы списка открывалась управляемая форма, которая не форма по умолчанию, а для других обычная. Как это реализовать?
   Guerro
 
1 - 24.10.21 - 18:54
Мне в голову пока только приходит идея с событием "ПередОткрытием" из обычный формы, которая по умолчанию
   mikecool
 
2 - 24.10.21 - 19:21
кури методы менеджера объекта, хотя в обычно приложении могут не срабатывать
   Ёпрст
 
3 - 24.10.21 - 19:42
(2) работают.
   Ёпрст
 
4 - 24.10.21 - 19:44
(0)
Тип Того

Процедура ОбработкаПолученияФормы(ВидФормы, Параметры, ВыбраннаяФорма, ДополнительнаяИнформация, СтандартнаяОбработка)
   #Если МобильныйКлиент Тогда

    СтандартнаяОбработка = Ложь;
    Если ВидФормы = "ФормаСписка" ИЛИ ВидФормы = "ФормаВыбора" Тогда 
        ВыбраннаяФорма = Метаданные.Справочники.Номенклатура.Формы.ФормаСпискаМобильноеПриложение;
    ИначеЕсли ВидФормы = "ФормаОбъекта" Тогда 
        ВыбраннаяФорма = Метаданные.Справочники.Номенклатура.Формы.ФормаЭлементаМобильноеПриложение;
    КонецЕсли;
  #КонецЕсли;

КонецПроцедуры

   Гений 1С
 
5 - 24.10.21 - 19:46
(4) бинго
   pechkin
 
6 - 24.10.21 - 21:58
(4) в толстом клиенте это событие не работает
   Guerro
 
7 - 24.10.21 - 22:06
(6) Походу поэтому у меня его нет в подписке на событие
   TormozIT
 
8 - 24.10.21 - 22:10
(4) Это событие работает только для управляемых форм.
   Ёпрст
 
9 - 24.10.21 - 22:10
Ну, тогда в передОткрытием подменять форму
   Guerro
 
10 - 24.10.21 - 22:47
(8) Форма управляемая, приложение обычное
   Guerro
 
11 - 24.10.21 - 22:48
(9) Сделал так
Если ПараметрыСеанса.ТекущийПользователь.Наименование="Администратор" Тогда  
    
    Если Проведен Тогда
        ФормаЭлемента = Ссылка.ПолучитьФорму("ФормаУФ");    
    Иначе
        ФормаЭлемента = Документы.Заказ.ПолучитьФорму("ФормаУФ");    
    КонецЕсли;
     
    ФормаЭлемента.Открыть();
    Отказ=Истина;
    
КонецЕсли;
   pechkin
 
12 - 24.10.21 - 22:57
А ввод на основании, а копирование?
   Guerro
 
13 - 30.10.21 - 11:31
(12) Только сейчас обнаружил проблему, как ее решить?
   Guerro
 
14 - 30.10.21 - 11:32
(12) Пока такой костыль есть:

Для Каждого ЭлементИсточник Из Метаданные.Документы.Расход.Реквизиты Цикл
    Попытка
        ЭлементФормыОФ = ЭтотОбъект[ЭлементИсточник.Имя];
        ФормаЭлемента.Объект[ЭлементИсточник.Имя] = ЭлементФормыОФ;            
    Исключение
    
    КонецПопытки;            
КонецЦикла; 

Для Каждого СтрТЧ Из ТабличнаяЧасть1 Цикл 
    СтрТЧФ = ФормаЭлемента.Объект.ТабличнаяЧасть1.Добавить();  
    ЗаполнитьЗначенияСвойств(СтрТЧФ,СтрТЧ);                            
КонецЦикла;
   Guerro
 
15 - 30.10.21 - 11:35
Полностью выглядит так:
Если ПараметрыСеанса.ТекущийПользователь.Наименование="Администратор" Тогда  
    
    Если НЕ ЭтоНовый() Тогда
        ФормаЭлемента = Ссылка.ПолучитьФорму("ФормаУФ");    
    Иначе
        
        ФормаЭлемента = Документы.Заказ.ПолучитьФорму("ФормаУФ");  
        
        Для Каждого ЭлементИсточник Из Метаданные.Документы.Заказ.Реквизиты Цикл
            Попытка
                ЭлементФормыОФ = ЭтотОбъект[ЭлементИсточник.Имя];
                ФормаЭлемента.Объект[ЭлементИсточник.Имя] = ЭлементФормыОФ;            
            Исключение
            
            КонецПопытки;            
        КонецЦикла; 

        Для Каждого СтрТЧ Из ТабличнаяЧасть1 Цикл 
            СтрТЧФ = ФормаЭлемента.Объект.ТабличнаяЧасть1.Добавить();  
            ЗаполнитьЗначенияСвойств(СтрТЧФ,СтрТЧ);                            
        КонецЦикла;
        
    КонецЕсли;
    
    ФормаЭлемента.Открыть();
    Отказ=Истина;
    Возврат;
    
КонецЕсли;

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.