|
Управляемые формы | ☑ | ||
---|---|---|---|---|
0
NewBieOneS
04.04.13
✎
20:25
|
Здравствуйте!
Начал осваивать управляемые формы, и в связи с этим возник вопрос: Пусть у нас есть некий простейший справочник "Сотрудники" с реквизитами "ФИО" (строка) и "Телефон" (строка). Допустим, нам нужно реализовать кнопку на форме элемента справочника, которая запускает процедуру по заполнению в данном элементе реквизита "Телефон" неким значением. Я могу сделать это, обратившись к реквизиту: Объект.Телефон = "322-223". Причем процедура может быть как &НаСервере, так и &НаКлиенте. Объясните, пожалуйста, зачем тогда нужны стандартные процедуры РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы(), если объект и так доступен для редактирования? Я, может быть, неправильно привел пример и вышеуказанные процедуры нужны для других случаев; если да, то для каких? Помогите новичку :-) Заранее спасибо! |
|||
1
exwill
04.04.13
✎
20:30
|
Передай управление на сервер.
Заполни телефон. Посмотри на результат в форме. Сделай вывод. |
|||
2
GROOVY
04.04.13
✎
20:45
|
||||
3
NewBieOneS
04.04.13
✎
20:47
|
Написал для примера вот такой код в модуле формы:
&НаСервере Процедура ЗаполнитьТелефон() Объект.Телефон = "322-223"; КонецПроцедуры &НаКлиенте Процедура Команда1(Команда) ЗаполнитьТелефон(); КонецПроцедуры Привязал Команда1() к кнопке. Нажимаю - вижу в поле "Телефон" значение "322-223" на форме. Вопрос по-прежнему остался. |
|||
4
IamAlexy
04.04.13
✎
20:49
|
(3) запусти отладку в тонком клиенте..
|
|||
5
IamAlexy
04.04.13
✎
20:52
|
(0) я слышал что эти мантры позволяют вызвать процедуры и функции модуля объекта...
|
|||
6
NewBieOneS
05.04.13
✎
21:12
|
(4) запустил. результат тот же.
|
|||
7
Поросенок Петр
05.04.13
✎
21:29
|
"Начал осваивать управляемые формы" т.е. подразумевается что обычные уже освоил. Херня. Таким подходом нельзя ничего освоить.
|
|||
8
EvgeniuXP
05.04.13
✎
22:07
|
(7) у нас также осваивают 8.2, написали в модуле формы команду:
Процедура ЗаполнитьСправочник() ... полный рабочий код КонецПроцедуры Нажимают на кнопку и нифига не запускается эта процедура! :) |
|||
9
sanja26
05.04.13
✎
22:15
|
(0) млин так телефон - реквизит объекта! ты попробуй на сервере заполнить реквизит формы. или вывести в табличное поле формы свой табличный документ
|
|||
10
Kvestin
05.04.13
✎
22:17
|
(0) На клиенте и на сервере "Объект" тебе недоступен. Посмотри в отладчике на Тип "Объект". По сути это структура созданная из объекта.
Чтобы понять отличие &НаСервере и &НаКлиенте попробуй сделать реквизит справочника ссылочного типа, т.е. добавь еще один справочник (Должности) и реквизит Должность у сотрудника. А теперь попробуй &НаКлиенте написать Сообщить(Объект.Должность.Наименование); А теперь тоже самое "Сообщить" вызови на сервере. |
|||
11
sanja26
05.04.13
✎
22:19
|
(10) фигню сказал какую-то
|
|||
12
Волчара2010
05.04.13
✎
22:21
|
(10) ну и че? в форме в серверной процедуре все ништяково отработает и вернет Объект.Должность.Наименование
(11) ага, чушь полная (3) > Объясните, пожалуйста, зачем тогда нужны стандартные процедуры РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() Объясняю, это нужно для полной совместимосити с ВебКлиентом и для минимизации количеств серверных вызовов. |
|||
13
Orfin
05.04.13
✎
22:23
|
РеквизитФормыВЗначение()
с помощью неё можно вызывать процедуры из модуля формы процедуры модуля объекта Например в модуле обычно располагается процедура печати, она вызывается по кнопке на форме Печать, тут то и понадобиться РеквизитФормыВЗначение() что бы вызвать процедуру модуля |
|||
14
Волчара2010
05.04.13
✎
22:24
|
+(12) РеквизитФормыВЗначение("Объект") - форма уходит на сервер и возвращает значение ОбъектаБД, к свойствам, методам и экспортным процедурам которого ты можешь обращаться через точку.
ЗначениеВРеквизитФормы() - форма с сервера и ОбъектБД синхронизируется с формой на клиенте Воспринимай это так. |
|||
15
Orfin
05.04.13
✎
22:25
|
(12) В общем то да это всё ради оптимизации работы клиент серверного взаимодействия
|
|||
16
Волчара2010
05.04.13
✎
22:25
|
пасаны вы все, нифига не знаете, а хотите отстатыщ
|
|||
17
Волчара2010
05.04.13
✎
22:32
|
(0) Когда ты, мля, пишешь РеквизитФормыВЗначение() и ЗначениеВРеквизитФормы() - у тебя происходит передача данных формы на сервер, далее выполняются на сервере действия с объектом, потом обновленная форма возвращается с сервера.
А когда ты, мля, вместо этого в модуле формы постоянно юзаешь серверные процедуры, то у тебя при каждом вызове такой процедуры форма летает на сервер и обратно. Что очень плохо, так как, мля, надо стремиться к минимизации количеств серверных вызовов! Учитесь пока мы, поколение волчар живы! |
|||
18
Kvestin
05.04.13
✎
22:56
|
(17) Прям всегда вся форма летает?
.... Что то мне подсказывает, что не всегда. Просто видимо на &НаСервереБезКонтекста позабыли. Ну да ладно. Когда я пишу РеквизитФормыВЗначение() у меня происходит передача данных формы на сервер? Опять не заметил ... Точно - я же это только на сервере писать могу. Уже прилетел значит со всем контекстом... Мелочи все это - забыли. А так да - мы только учимся у "волчар" - уж извини, если обидел. (0) В сети море инфы (платной и бесплатной) - там проще будет узнать, чем здесь спрашивать. |
|||
19
Волчара2010
05.04.13
✎
23:10
|
(18) > Просто видимо на &НаСервереБезКонтекста позабыли
Что, мля, за чушь! Измени форму через директиву &НаСервереБезКонтекста - я тебе 100 баксов заплачу. |
|||
20
sanja26
05.04.13
✎
23:15
|
(19) в что понимается под на сервере без контекста? легко изменю все реквизиты объекта. а ты быстро учишься похоже.. еще недавно лажовые вопросы были
|
|||
21
Волчара2010
05.04.13
✎
23:17
|
(20) давай сразу на 300 долларей поспорим?
В процедуре с директивой &НаСервереБезКонтекста ты берешься изменить реквизит объекта открытой формы? Я правильно тебя понял? |
|||
22
Волчара2010
05.04.13
✎
23:19
|
(20) я очень быстро учусь, ты даже не представляешь как!
|
|||
23
sanja26
05.04.13
✎
23:22
|
(21) (20) давай сразу на 300 долларей поспорим?
В процедуре с директивой &НаСервереБезКонтекста ты берешься изменить реквизит объекта открытой формы? Я правильно тебя понял? 300р. изменю |
|||
24
фобка
05.04.13
✎
23:23
|
(23) реквизит объекта или реквизит формы?
|
|||
25
sanja26
05.04.13
✎
23:24
|
реквизит объекта
|
|||
26
Kvestin
05.04.13
✎
23:34
|
(22)
&НаКлиенте Процедура Команда1(Команда) ИзменитьРеквизит(Объект.Наименование); КонецПроцедуры &НаСервереБезКонтекста Процедура ИзменитьРеквизит(Наименование) Наименование = "Новое наименование"; КонецПроцедуры Реквизиты куда скинуть? |
|||
27
Волчара2010
05.04.13
✎
23:35
|
(26) а где ты там изменил реквизит открытой формы?
|
|||
28
Kvestin
05.04.13
✎
23:36
|
(27) Тогда нет вопросов ... Спокойной ночи ;)
|
|||
29
Волчара2010
05.04.13
✎
23:37
|
(26) Во-первых, умный чувак написал бы не Процедура, а Функция.
Во-вторых, где в Процедура ИзменитьРеквизит(Наименование) ты изменил реквизит? |
|||
30
Kvestin
05.04.13
✎
23:45
|
(29) По условиям "В процедуре с директивой &НаСервереБезКонтекста ты берешься изменить реквизит объекта открытой формы" (Кто сказал про процедуру ... не я)
Реквизит изменился? ;) Это же не про "правильно" это про результат. Все, что я написал "Just for fun!". Конечно в реале никто так не делает. У меня складывается впечатление, что на данном форуме основная масса старается просто закашмарить (если тактично) новичков. А смысл? Все сразу все знали? Хотя я согласен, что многие просто ленятся "погуглить". |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |