|
Вопрос по пониманию УФ | ☑ | ||
---|---|---|---|---|
0
Genayo
17.12.12
✎
09:15
|
Я правильно понимаю, что при вызове в модуле формы процедуры с директивой &НаСервере в памяти сервера создается объект формы, заполненный данными формы с клиента. При возврате на клиента измененные на сервере данные формы копируются в данные формы на клиенте и объект на сервере уничтожается? Или объект формы на сервере продолжает существовать?
|
|||
1
Asmody
17.12.12
✎
09:18
|
(0) неправильно. всё с точностью до наоборот
|
|||
2
Genayo
17.12.12
✎
09:19
|
(1) Т.е. объект формы существует на сервере все время существования формы?
|
|||
3
Asmody
17.12.12
✎
09:20
|
на сервере форма существует с момента создания (ещё до открытия) и до уничтожения (после закрытия). на клиенте существуют копии данных формы сервера, причем не всегда прямые.
|
|||
4
ДенисЧ
17.12.12
✎
09:21
|
хм... А Асмодей ещё и одинэсит? О_о
|
|||
5
Asmody
17.12.12
✎
09:22
|
(4) изредка, для души
|
|||
6
samozvanec
17.12.12
✎
09:25
|
(1) пытаюсь представить этот наоборот, никак не получается)
(0) объекты сборщик мусора уничтожает, когда - его личное дело, но по-любому после выхода из процедуры. туда-сюда данные формы(и не только) гоняются. |
|||
7
Genayo
17.12.12
✎
09:25
|
(3) Следовательно, ситуация, когда данные формы на клиенте и на сервере различаются при возвращении управления с сервера на клиент вполне возможна. Интересно...
|
|||
8
Genayo
17.12.12
✎
09:29
|
Тогда вопрос, а как-нибудь принудительно синхронизировать объект формы на клиенте и на сервере возможно?
|
|||
9
Asmody
17.12.12
✎
09:33
|
(8) измененные реквизиты при любом вызове сервера обновятся, верно и обратное, зачем еще что-то синхронизировать?
|
|||
10
olegves
17.12.12
✎
09:41
|
(8) на сервере нет объекта, а только данные формы, которые уничтожаются при закрытии процедуры (ф-ии)
Если в серверной процедуре изменить данные формы (реквизит формы или реквизит объекта, то эти изменения передаются на клиента. |
|||
11
Genayo
17.12.12
✎
09:44
|
(9) Я вот тоже так думал, однако получил такую ситуацию. На форме реквизит типа СписокЗначений, его значениями являются структуры. И изменения, внесенные в эти структуры на сервере не видны на клиенте и наоборот (Если не меняется сам Список Значений).
Оно конечно понятно, что в реальной разработке так делать не надо, это был просто эксперимент. Ну ладно, видимо это особенность платформы. |
|||
12
Genayo
17.12.12
✎
09:46
|
(10) Так. А вот и альтернативное мнение. Когда есть 2 разных мнения, хочется получить обоснования с обеих сторон...
|
|||
13
ДенисЧ
17.12.12
✎
09:49
|
(5)
а) откуда душа у демона? :-) б) Это ж какую душу надо иметь, чтобы для неё одинесить? :-)) |
|||
14
olegves
17.12.12
✎
10:01
|
(12) попробуй создать переменную в серверной процедуре, в которую присвоишь там значение. Вызови эту же процедуру повторно. Твоя переменная будет неопределена в начале процедуры.
|
|||
15
milan
17.12.12
✎
10:03
|
(11) может системе подсказать как-то ? дернуть не только внутри списка а сам список.
|
|||
16
Cunni
17.12.12
✎
10:05
|
(3) По идее она должна уничтожаться с сервера после обработчика ПриСозданииНаСервере().
С курса Гилева: Если осуществляется открытие существующего документа, то происходит обращение к базе данных. Создается объект с типом данных ДокументОбъект.<ИмяДокумента>, данные объекта заполняются из информационной базы. После этого на стороне сервера создается управляемая форма с основным реквизитом ДокументОбъект.<ИмяДокумента> и осуществляется конвертация данных объекта ДокументОбъект.<ИмяДокумента в реквизит формы Объект. ДокументОбъект.<ИмяДокумента> удаляется на сервере. Заполненная управляемая форма передается на сторону клиента. На стороне клиента управляемая форма открывается. Управляемая форма удаляется на стороне сервера. |
|||
17
milan
17.12.12
✎
10:11
|
(16) в каком-то релизе писали про оптимизацию вызовов сервера в части передачи с клиента только изменившихся реквизитов, так что скорее всего (3) прав. Вообще, судя по тусе в софтпоинте, управляемые формы все используют только теоретически ;)
|
|||
18
Genayo
17.12.12
✎
10:12
|
(14) Переменная тут причем? Я в описанной в (11) ситуации изменениия, сделанные в одной серверной процедуре вижу в другой серверной процедуре модуля формы. Тут может быть 2 объяснения - либо объект формы на сервере живет всегда, либо я обратился к нему до момента его удаления сборщиком мусора, как пишут в (6) (что, конечно, было бы достаточно странно).
|
|||
19
Genayo
17.12.12
✎
10:13
|
(16) Гилева я читал :) Но практика вот вызвала сомнения...
А мне не нравится, когда я что-то не до конца понимаю... |
|||
20
olegves
17.12.12
✎
10:32
|
(18) для этого используют модули с повторным использованием
А переменная у тебя д.б. сохраниться, если б данные формы на сервере хранились. Как ты одномоментно можешь видеть 2 серверные процедуры? |
|||
21
Genayo
17.12.12
✎
11:07
|
(20) Так в том и дело, что не одномоментно. Отработала одна серверная процедура, результат ее работы на клиенте в реквизите формы не отобразился. Вызвана другая серверная процедура, в ней в реквизите формы виден результат работы первой процедуры.
Я всеже склонен согласиться, что объект формы существует на сервере все время существования формы, это более логично... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |