|
Можно ли получить доступ к команде формы из общего модуля? | ☑ | ||
---|---|---|---|---|
0
ChAlex
05.06.12
✎
14:45
|
Можно ли организовать доступ к командам или элементам формы в общем модуле на сервере? То бишь доступен ли контекст управляемой формы в общем серверном модуле с установленным признаком вызов сервера? Хотелось бы ряд функций организовать на сервере, что бы не тиражировать их для каждой формы. Например изменение заголовка кнопки команды.
|
|||
1
Stepa86
05.06.12
✎
14:50
|
дык с сервера передай ЭтаФорма параметром
|
|||
2
ChAlex
05.06.12
✎
15:28
|
Ну дык вооще-то на сервер надо передать, только на сервер ЭтоФорма - нельзя передать
|
|||
3
Stepa86
05.06.12
✎
16:16
|
(2) что тебе мешает с сервера на сервер передать?
|
|||
4
ChAlex
05.06.12
✎
16:21
|
С какого сервера? Речь про модули и управляемые формы. Мне нужно получить на сервере доступ к контексту формы. То бишь есть директивы &НаСервере и &НаСервереБезКонтекста. Если процедуры с директивой &НаСервере находится в модуле формы - то в нее передается контекст формы и как результат в ней доступны все объекты формы. Я что-то нигде в документации не нашел про вызов функция, расположенных на сервере. На сервере вроде тоже процедуры компилируются с директивой &НаСервере. Но вопрос, контекст при этом передается или нет?
|
|||
5
Stepa86
05.06.12
✎
16:28
|
(4) вот теперь вообще запутался... включаю телепата-
Обработчики команд и событий элементов формы могут вызывать только методына клиенте ( &Наклиенте ) Клиентские методы могут вызывать клиентские, клиентские без контекста, серверные и серверные без контекста Серверные методы могут вызывать серверные и серверные без контекста Безконтекстные могут вызывать только другие безконтекстные В методе &НАСервере контекст формы доступен полностью (который доступен на сервере). |
|||
6
ChAlex
05.06.12
✎
16:45
|
(5) - ну типа и так считал, вернее иного явно не нашел. И так команда вызывается на клиенте (естественно). Далее хочу вызвать серверный метод, написанный в общем модуле, и в этом методе обратиться к команде формы (вернее к свойству команды "Подсказка") поскольку через это свойство, доступное на сервере можно поменять подсказку текста кнопки этой команды, расположенной на форме. Например кнопка (и команда) "Утвердить" - которя располагается во многих формах документов, вот и не хочется в каждом модуле документа писать одно и то же. Казалось все просто - взять и разместить процедуру в общем модуле. Но вот тут и возник то вопрос: а доступен ли контекст формы там? ибо как-то обратиться типа Этаформа. - и т.п. не получается. Передать туда объект "Форма" - тоже. Н
|
|||
7
Stepa86
05.06.12
✎
17:03
|
&НаКлиенте
Процедура Команда1(Команда) ... ОбновитьПодсказки(); КонецПроцедуры &НаСервере Процедура ОбновитьПодсказки() некоторыйМодуль.ОбновитьПодсказку( ЭтаФорма ); или некоторыйМодуль.ОбновитьПодсказку( Команды.МояКоманда ); или некоторыйМодуль.ОбновитьПодсказку( Элементы.МояКнопка ); или Элементы.МояКнопка.Подсказка = некоторыйМодуль.ПолучитьПодсказку(); КонецПроцедуры |
|||
8
ChAlex
05.06.12
✎
17:08
|
(7) - оп, но тут есть лишний вызов серверной процедуры модуля формы! А как раз ее хотелось и избежать. А напрямую я так понимаю не получится?
|
|||
9
Stepa86
05.06.12
✎
17:09
|
(8) изменение свойств элементов формы по любому приведет к вызову сервера
|
|||
10
ChAlex
05.06.12
✎
17:12
|
(9) - Дело не в том. Дело в том что вызов идет по такой схеме: команды на клиенте -> серверная процедура модуля формы - > серверная процедура общего модуля. А возможна ли схема: команды на клиенте -> серверная процедура общего модуля (с доступом к контексту формы)?
|
|||
11
Stepa86
05.06.12
✎
17:14
|
(10) нет, контекст формы можно передать только клиент-клиент или сервер-сервер
|
|||
12
ChAlex
05.06.12
✎
17:15
|
(11) :) а как же клиент-сервер модуля формы (контекстный вызов сервера)?
|
|||
13
ChAlex
05.06.12
✎
17:17
|
Тут 1С опять поставила заборы на ровном месте. Чем такой вызов с точки зрения идеологии и производительности отличается от вызова в модуле формы?
|
|||
14
Stepa86
05.06.12
✎
17:18
|
(12) когда мы переходим из клиента на сервер в рамках формы, то мы не передаем контекст, он там уже есть. Фактически форма существует только на сервере, и когда в ней чо нить происходит, то она обновляет свое представление на клиенте, а не передает контекст полностью
|
|||
15
ChAlex
05.06.12
✎
17:31
|
(14) - ну а зачем тогда &НаСервереБезКонтекста? Все-таки что-то да передается,и это что-то и есть контекст (согласен не данные), хотя ко-что объяснимое в этом есть. Ладно, собственно от этого ни легче и не проще. :) Спасибо за дискуссию!
|
|||
16
Stepa86
05.06.12
✎
17:45
|
(15) &НаСервереБезКонтекста не содержит контекста формы, из него не получится вызвать контекстный метод или написать чтото вроде Элементы.Команда.Заголовок = "Не трогай эту кнопку!!!", это как обращение к методу общего модуля, только расположен он тут же. Вызов таких методов быстрее, потому что не нужно передавать контекст
|
|||
17
ChAlex
05.06.12
✎
18:16
|
(16) - ну так я о чем :) ваша цитата (14) - ...когда мы переходим из клиента на сервер в рамках формы, то мы не передаем контекст... - это для контекстного вызова, и опять же ваша цитата (16) "...Вызов таких методов быстрее, потому что не нужно передавать контекст.." - для внеконтекстного вызова. :) и там и там вы не хотите передавать контекст, но работают вызовы по-разному. Вы сами себе противоречите :))
|
|||
18
Stepa86
05.06.12
✎
20:53
|
(17) харош придираться =)
Когда вызываем контекстный сервер с клиента, то форма не передается с клиентской машины на сервер, а уже есть на сервере и метод забирает ее оттуда, при вызове безконтекстного метода этого забирательства не происходит |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |