|
Как получить ПутьКДанным элемента в ОбщемМодуле? | ☑ | ||
---|---|---|---|---|
0
Mr-FReSH
22.08.23
✎
09:10
|
Доброго времени суток, господа!
Есть задача по централизованной инициализации форм документов. Если простыми словами при открытии формы документа вызывается процедура инициализации из общего модуля. В чем проблема. Есть клиентская глобальная переменная, которая хранит в себе данные по всем путям к данным на формах документов. Заполняется эта переменная 1 раз при первом входе в документ, чтобы делать меньше серверных вызовов. Вопрос. Как централизованно (в общем модуле) можно получить пути к данным элементов форм? |
|||
1
RomanYS
22.08.23
✎
09:22
|
Для Каждого Элемент Из Форма.Элементы Цикл...
...Элемент.ПутьКДанным... |
|||
2
Mr-FReSH
22.08.23
✎
09:26
|
(1) Я уточню.
С клиента проверяется заполненность клиентской глобальной переменной, если она не заполнена требуется вызов процедуры заполнения. С клиента на сервер централизованно. Я вижу решение в вызове серверной процедуры с контекстом, которая обращается в общий серверный модуль и передает туда форму, а там уже все как вы описали. Вопрос в другом. Могу ли я обойтись без этой процедуры и с клиента сразу вызывать серверную процедуру, в которой будут доступны пути к данным элементов? |
|||
3
Mr-FReSH
22.08.23
✎
09:28
|
речь идет о вызове процедуры из общего модуля через серверную процедуру с формы документа
|
|||
4
Мультук
гуру
22.08.23
✎
09:31
|
(3)
вы про это ? &НаКлиенте Процедура ОбновитьВсякое() ОбновитьВсякое_КотораяНеНужна() КонецПроцедуры &НаСервере Процедура ОбновитьВсякое_КотораяКакБыНеНужна() МойОбщийМодуль.ОбновитьВсякое(ЭтаФорма); КонецПроцедуры |
|||
5
Mr-FReSH
22.08.23
✎
09:32
|
(4) Да, могу ли я в этой схеме избавиться от процедуры ОбновитьВсякое_КотораяКакБыНеНужна() ?
|
|||
6
Мультук
гуру
22.08.23
✎
09:40
|
(5)
&НаКлиенте Процедура ОбновитьВсякое() ОбщийМодульКлиент.ОбновитьВсякое(ЭтаФорма); КонецПроцедуры В "ОбщийМодульКлиент" стоит флажок Клиент. Весь разбор формы и ее элементов делается "НаКлиенте". Если вы можете всё это сделать "НаКлиенте", то делайте. Сорри, включать мозг и думать "а можно ли, и какие там еще есть внезапные проблемы" я в настоящий момент не хочу / не могу. |
|||
7
RomanYS
22.08.23
✎
09:46
|
(6) на клиенте не доступен ПутьКДанным, поэтому так не получится
|
|||
8
RomanYS
22.08.23
✎
09:49
|
(0) что ты пытаешься сэкономить непонятно, для применения всех настроек достаточно одно серверного вызова. Точнее даже дополнительных вызовов не требуется, если сделать все в ПриСоздании
|
|||
9
Mr-FReSH
22.08.23
✎
09:56
|
(8) Как ты поместишь данные в клиентскую переменную, если все получишь при создании на сервере?
|
|||
10
Mr-FReSH
22.08.23
✎
09:56
|
(7) в этом и вопрос
|
|||
11
Mr-FReSH
22.08.23
✎
09:56
|
(6) на клиенте недоступно свойство элемента "ПутьКДанным"
|
|||
12
RomanYS
22.08.23
✎
10:01
|
(9) Не очень понятно зачем тебе это на клиенте. А решение возможно: на сервере можно добавить реквизиты <формы> и засунуть туда структуру (или даже ТЗ) с описаниями элементов
|
|||
13
Mr-FReSH
22.08.23
✎
10:04
|
(12) я пытаюсь делать больше вещей на клиенте и меньше на сервере, потому что он занят более нужными вещами.
А то что ты предлагаешь не получится, потому что с сервера ты не сможешь понять, заполнена ли клиентская константа, для того чтобы лишний раз не формировать данные с описанием элементов, потому что в рамках одного сеанса они не меняются. Условно я хочу сделать кэш путей элементов формы на время сеанса. |
|||
14
RomanYS
22.08.23
✎
10:07
|
(13) вот в (12) ровно это и описано "сделать кэш путей элементов формы на время сеанса". И делается это при создании без дополнительных вызовов сервера.
Только что ты будешь делать с этим кэшем на клиенте непонятно |
|||
15
Mr-FReSH
22.08.23
✎
10:15
|
(14) ну тогда остается только идти по пути (4)
У меня на форме очень много строковых полей, от документа к документу они повторяются, и я делаю механизм готовых фраз. на форме есть отслеживание текущего элемента и в правой части все возможные варианты заполнения (или части варианта), при выборе текста из таблицы в реквизит формы нужно вставить содержимое, для этого нужны пути к данным. Чтобы каждый выбор не делать серверный вызов, я делаю кэш... |
|||
16
Mr-FReSH
22.08.23
✎
10:17
|
Как вы понимаете готовые фразы заполняют сами пользователи, и их может быть много, а также нужна возможность комбинировать разные фразы.
|
|||
17
Mr-FReSH
22.08.23
✎
10:18
|
Потому использовать список выбора невозможно
|
|||
18
RomanYS
22.08.23
✎
10:20
|
(15) и где создается/заполняется твоя таблица? ... на сервере, и что мешает при её заполнении подменить пути на имена элементов?
|
|||
19
Mr-FReSH
22.08.23
✎
10:22
|
(18) Фразы должны иметь возможность быть использованы как в конкретном поле, так и в любом поле.
|
|||
20
RomanYS
22.08.23
✎
10:26
|
(19) для этого ПутьКДанным не нужен
|
|||
21
Mr-FReSH
22.08.23
✎
10:30
|
(20) Тебе в любом случае нужен путь к данным, для того чтобы заполнять выбранные значения. Имя элемента формы может отличаться от имени реквизита.
|
|||
22
RomanYS
22.08.23
✎
10:36
|
(21) в (12) описано как можно получить и хранить на время сеанса связи Имя-ПутьКДанным
|
|||
23
Mr-FReSH
22.08.23
✎
10:40
|
(22) Дак тогда я буду вынужден это делать каждый раз, при открытии формы, что не является кэшем на время сеанса.
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |