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


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

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

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

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

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