Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Как сообщить форме, что ее реквизит изменился?

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

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.