Имя: Пароль:
1C
 
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 - это реквизиты формы.

Универсально, извратно, фишка.
Я не хочу быть самым богатым человеком на кладбище. Засыпать с чувством, что за день я сделал какую-нибудь потрясающую вещь — вот что меня интересует. Стив Джобс