| 
    
        
     
     | 
    
  | 
8.3. УФ. Установить значение элемента формы на клиенте | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        SeiOkami    
     20.02.17 
            ✎
    09:05 
 | 
         
        Такое дело. 
 
        Делаю универсальную обработину, чтобы ей проводить манипуляции над открытыми формами (для разработки\отладки\тестирования). На клиенте в УФ получаю открытые формы и делаю с ними разные махинации. Влиять на свойства элемента формы можно без проблем. Однако, установить значение реквизитов не знаю как. Дело в том, что путь к данным элемента формы можно узнать только на сервере, но туды я, естественно, форму отправить не могу. Можно было бы вывести просто все реквизиты формы для редактирования (без привязки к элементам), но и их получить можно только на сервере. Есть ли какая-то фишка, позволившая бы это устроить?  | 
|||
| 
    1
    
        SeiOkami    
     20.02.17 
            ✎
    09:29 
 | 
         
        уп     
         | 
|||
| 
    2
    
        SeiOkami    
     20.02.17 
            ✎
    10:12 
 | 
         
        апну     
         | 
|||
| 
    3
    
        Вафель    
     20.02.17 
            ✎
    10:14 
 | 
         
        Форма[ИмяРеквизита] = Значение     
         | 
|||
| 
    4
    
        Вафель    
     20.02.17 
            ✎
    10:14 
 | 
         
        Нужно не отправлять форму на сервер, а брать ее оттуда     
         | 
|||
| 
    5
    
        SeiOkami    
     20.02.17 
            ✎
    10:23 
 | 
         
        (3), как узнать какие реквизиты есть у открытой формы?     
         | 
|||
| 
    6
    
        SeiOkami    
     20.02.17 
            ✎
    10:23 
 | 
         
        (4), и как я на сервере получу открытую форму?     
         | 
|||
| 
    7
    
        Вафель    
     20.02.17 
            ✎
    10:28 
 | 
         
        (6) Из сревреной процедуры формы вызывать процдеру из общего модуля. например при создании на сервере     
         | 
|||
| 
    8
    
        Вафель    
     20.02.17 
            ✎
    10:29 
 | 
         
        (5) ПолучитьРеквизиты     
         | 
|||
| 
    9
    
        SeiOkami    
     20.02.17 
            ✎
    10:44 
 | 
         
        (7), ты отвечаешь на что-то совсем другое.
 
        Повторю вопрос: "как я на сервере получу открытую форму?"  | 
|||
| 
    10
    
        SeiOkami    
     20.02.17 
            ✎
    10:45 
 | 
         
        (5), похоже, что ты не прочитал (0)...
 
        Этот метод доступен только на сервере. А получить открытые формы можно только на клиенте. А передать открытую форму с клиента на сервер нельзя.  | 
|||
| 
    11
    
        SeiOkami    
     21.02.17 
            ✎
    08:36 
 | 
         
        уп     
         | 
|||
| 
    12
    
        Windyhead    
     21.02.17 
            ✎
    09:06 
 | 
         
        (10) "Передать открытую форму с клиента на сервер нельзя..." 
 
        Дать ложку?  | 
|||
| 
    13
    
        FIXXXL    
     21.02.17 
            ✎
    09:27 
 | 
         
        (10) можно же как параметр серверной процедуры     
         | 
|||
| 
    14
    
        Fedor-1971    
     21.02.17 
            ✎
    09:41 
 | 
         
        (10) поясни свою мысль примерным кодом: 
 
        1. как получил открытую форму (или список оных)? 2. что и как делать собрался с ней (добавил реквизиты просто формы или вывел некие реквизиты объекта)? 3. как собственно пытался получить реквизиты уже открытой формы (если что - форма это, по большому счёту, коллекция значений)? В сторону Метаданных смотрел? и самый главный вопрос на зачем тебе это нужно? Изобретаешь большой универсальный велосипед с квадратными колёсами или просто пытаешься посмотреть на возможности УФ?  | 
|||
| 
    15
    
        SeiOkami    
     21.02.17 
            ✎
    09:54 
 | 
         
        (12), (13), если можно, то прошу пример     
         | 
|||
| 
    16
    
        SeiOkami    
     21.02.17 
            ✎
    09:57 
 | 
         
        (14), 
 
        1. ПолучитьОкна() 2. Нужно предоставить возможно изменять значения любых реквизитов любой открытой формы 3. ПолучитьРеквизиты() - доступна только на сервере. Передать на сервер перехваченную открытую форму нельзя (если можно, жду пример)  | 
|||
| 
    17
    
        FIXXXL    
     21.02.17 
            ✎
    09:59 
 | 
         
        (16) у тебя есть форма как объект?
 
        вызываешь серверную процу ЗыритьНаСервере(ФормаКакОбъект)  | 
|||
| 
    18
    
        Fedor-1971    
     21.02.17 
            ✎
    10:07 
 | 
         
        (16)Пробуй примерно так:
 
        мас=ПолучитьОкна(); фрм=мас[0].ПолучитьСодержимое(); Возможно тут надо добавить твою универсальную процедуру (или пару одну НаКлиенте - для передачи контекста на сервер, вторую НаСервере - для разбора что чего и зачем) фрм.Процедура которая &НаСервере - твой контекст формы приехал на сервер тут его и жуй  | 
|||
| 
    19
    
        Вафель    
     21.02.17 
            ✎
    10:10 
 | 
         
        без вызова серверной процедуры из ФОРОМЫ никак не получится     
         | 
|||
| 
    20
    
        Вафель    
     21.02.17 
            ✎
    10:10 
 | 
         
        кстати можно послать кнопки через sendkeys     
         | 
|||
| 
    21
    
        Fedor-1971    
     21.02.17 
            ✎
    10:28 
 | 
         
        (20) уж лучше подключить ОбработчикОжидания внутри формы и из него дёрнуть серверную процедуру     
         | 
|||
| 
    22
    
        Windyhead    
     21.02.17 
            ✎
    10:56 
 | 
         
        (16) Ты путаешь форму с окном клиентского приложения. 
 
        "ПолучитьОкна" получаешь коллекцию окон. у эллемента коллекции получаем содержимое. вернется массив объектов типа УправляемаяФорма или Форма. ну а дальше уже работаешь с их свойствами, хочешь на сервере хочешь на аклиенте  | 
|||
| 
    23
    
        Windyhead    
     21.02.17 
            ✎
    10:57 
 | 
         
        открой СП там все понятно расписано     
         | 
|||
| 
    24
    
        Вафель    
     21.02.17 
            ✎
    10:57 
 | 
         
        (21) Это если в форме что-то есть.
 
        А если оно есть, то и так его можно дернуть  | 
|||
| 
    25
    
        Вафель    
     21.02.17 
            ✎
    10:57 
 | 
         
        (22) Форму нельзя передать на сервер     
         | 
|||
| 
    26
    
        FIXXXL    
     22.02.17 
            ✎
    08:51 
 | 
         
        (25) точно :( видел просто работу с формами в общих модулях, но были КЛИЕНТСКИЕ общие модуля
 
        вот и почудилось, что можно... если только пореквизитно передавать &НаСервере Процедура ОкноНаСервереНаСервере(РеквизитФ) РеквизитФ = "Я был на сервере!"; КонецПроцедуры &НаКлиенте Процедура ОкноНаСервере(Команда) ОкнаКП = ПолучитьОкна(); ФРМ = ОкнаКП[1].Содержимое[0]; ОкноНаСервереНаСервере(ФРМ.Реквизит1); КонецПроцедуры  | 
|||
| 
    27
    
        SeiOkami    
     22.02.17 
            ✎
    14:30 
 | 
         
        Походу, что это сделать нельзя. Жаль(     
         | 
|||
| 
    28
    
        DailyLookingOnA Sunse    
     22.02.17 
            ✎
    15:06 
 | 
         
        На клиенте получаешь имена используемых форм.
 
        Запускаешь конфигуратор в пакетном режиме с выгрузкой конфигурации в файлы. По имени форм смотришь файлы, в них смотришь ветку Attributes - это реквизиты формы. Универсально, извратно, фишка.  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |