|
Как сообщить форме, что ее реквизит изменился? | ☑ | ||
---|---|---|---|---|
0
vacvant
25.11.21
✎
18:45
|
Здравствуйте!
Я не знаток УФ. Поэтому вопрос наверное "избитый". Но прокопавшись в "помойке" пол дня, так и не смог решить проблему. 1. В простых формах есть какие-то действия при изменении реквизита, сделанные давно и профи. Я в своем коде изменяю этот реквизит, затем спокойно дергаю эту процедуру (При Изменении) и дальше не задумываюсь. 2. В УФ, я на сервере изменил реквизит, как мне дернуть клиентское событие ПриИзменении. Я понимаю, что простого пути нет. С сервера клиента не дернешь. Но ведь эта проблема как-то решается. Наведите на мысль. Заранее спасибо! |
|||
1
runoff_runoff
25.11.21
✎
18:47
|
вызвать серверный код, который дергает клиентская ПриИзменении()
|
|||
2
vacvant
25.11.21
✎
18:50
|
(1) Это понятно. Но ведь там не только серверный, в общем случае. Допустим при каком-то значении поля должна измениться видимость другого поля. Ну или типа того... Вот тут как быть?
|
|||
3
runoff_runoff
25.11.21
✎
18:53
|
(2) задублировать код на сервере
|
|||
4
vacvant
25.11.21
✎
18:59
|
(3) Вот в этом то и проблема! Простой дубляж клиентского кода не пройдет. Ну как Вы на сервере скроете видимость поля формы? Значит приходится перерабатывать, перелопачивать тонны кода. Вот и спрашиваю, может есть какие хитрые (ну в смысле отработанные) ходы. Облегчающие жизнь???
Или я туплю и там все просто? |
|||
5
RomanYS
25.11.21
✎
19:07
|
(4) >> Ну как Вы на сервере скроете видимость поля формы?
....Видимость = Ложь;//как и на клиенте |
|||
6
vacvant
25.11.21
✎
19:12
|
(5) Вот тут то я и плыву... Разве на сервере есть контекст формы? Как к ней можно обратиться? Если не трудно пример???
|
|||
7
Василий Алибабаевич
25.11.21
✎
19:12
|
(0) "я на сервере изменил реквизит".
Как? Если командой из этой же формы - просто код после вызова серверной процедуры. Если из другой формы - В коде клиентской процедуры "той" формы сказать Оповестить(). В коде "этой" формы прописать ОбработкаОповещения() |
|||
8
Василий Алибабаевич
25.11.21
✎
19:15
|
+ (7) Если данные изменены в другом сеансе (например данные динамического списка) - периодически дергать для нужного реквизита Обновить().
|
|||
9
RomanYS
25.11.21
✎
19:15
|
(6) Если вызов контекстный конечно есть контекст.
Элементы.ТвойЭлемент.Видимость = Ложь; |
|||
10
vacvant
25.11.21
✎
19:15
|
(7) Не, ну если бы это было так прямолинейно - вопроса бы не было. На сервере то своя логика, я ведь не про изменение одного реквизита спрашиваю.
|
|||
11
vacvant
25.11.21
✎
19:17
|
(6) Ага, понял, спасибо. Буду про это читать. Почему-то мне влезло в голову, что на сервере контекст объекта...
|
|||
12
Василий Алибабаевич
25.11.21
✎
19:18
|
(10) Код на сервере сам по себе не начнет выполняться. Его выполнение можно вызвать с клиента. Или из модуля внешнего соединения. Или регламентным заданием. В общем зависит от места вызова.
|
|||
13
vacvant
25.11.21
✎
19:20
|
(10) Понял, понял. Просто я же не могу потом после вызова сервера, все скопом на клиенте отрабатывать... Мне надо логику на сервере отработать.
|
|||
14
Василий Алибабаевич
25.11.21
✎
19:23
|
(11) А-а-а... Ты вот о чем. Я думал вопрос за то как обновить данные в форме списка, если изменился реквизит объекта. Например. Или на форме объекта выведены данные связанного объекта. А он в свою очередь редактируется в своей форме. В общем если реквизит отображается и изменяется в разных формах. А если все в одной - сервер вполне знает контекст формы. Если ничего не делать. А вот чтобы вызвать код вне контекста нужно тек и сказать НаСервереБезКонтекста.
|
|||
15
vacvant
25.11.21
✎
19:26
|
(14) Пазл сложился)))
Всем спасибо!!! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |