Имя: Пароль:
1C
1С v8
Вызов процедуры общего модуля (Сервер, Вызов сервера) из клиента (УФ)
0 PiotrLoginov
 
22.10.18
11:53
Всем доброго дня. Нужен ответ на принципиальный вопрос: если из управляемой формы, из процедуры НаКлиенте обратиться напрямую к функции серверного общего модуля, то это аналогично тому, как если бы мы обратились к методу НаСервереБезКонтекста? Форма же на сервер не "поедет"?

Или это нежелательно, и если мы не хотим, чтобы форма "отправлялась" на сервер, т.е. хотим стопудово получить серверный ВНЕКОНТЕКСТНЫЙ вызов, то следует написать отдельную функцию в модуле формы НаСервереБезКонтекста и уже из нее обращаться к методам серверных модулей?
1 PiotrLoginov
 
22.10.18
11:54
Может, это где-то описано в документации? Традиционно буду рад ссылкам.
2 Вафель
 
22.10.18
11:55
без вызова сервере нельзя вызять процедуры модуля из клиента
3 PiotrLoginov
 
22.10.18
12:13
(2)


&НаКлиенте
Процедура ВыполнитьТест(Команда)
    
    Результат = Неопределено;
    Результат = ОбщийМодульСерверИВызовСервера.ВернутьИстина();

    //код успешно отработатал. Теперь Результат = Истина
    
КонецПроцедуры


Так что чисто технически можно обратиться из клиентской процедуры управляемой формы к функции серверного (Вызов сервера) общего модуля. Вопрос в том, насколько это комильфо, и не потянется ли в момент вызова на сервер контекст формы (форма может быть "тяжелой", так что хотелось бы обходиться внеконтекстными вызовами)
4 Cyberhawk
 
22.10.18
12:15
Вызывай, какие проблемы? Никакая форма никуда не поедет
5 PiotrLoginov
 
22.10.18
12:19
(4) >> Никакая форма никуда не поедет

точно?   :)   не хочется краснеть, если вдруг со временем выяснится обратное.  Вот бы у вендора на эту тему почитать, а то сколько статей про замену НаСервере на НаСервереБезКонтекста, а тут вдруг простое размещение серверного функционала в общем модуле - и никаких заморочек с производительностью на узких каналах
6 PiotrLoginov
 
22.10.18
12:22
блин.  Как всегда, только Cyberhawk  готов ответить по существу. Коллеги, как же мы годами работаем, не понимая до конца базовых принципов? Мне самому стыдно...
7 PiotrLoginov
 
22.10.18
12:24
Казалось бы простой вопрос, должен быть "лес рук"...
8 PiotrLoginov
 
22.10.18
12:26
Ладно, ответ дан - и слава подсказавшему.

Вопрос закрыт.
9 Cyberhawk
 
22.10.18
12:27
(5) Ты не путай вызов процедуры ОМ и вызов процедуры модуля формы. Во втором случае он контекстный, в первом - нет.
10 Cyberhawk
 
22.10.18
12:27
Для буквоедов: "Во втором случае он контекстный" если директива "НаСервере". Потому и делают "НаСервереБезКонтекста", чтоб форма никуда не ездила.
11 Cyberhawk
 
22.10.18
12:28
Только такая замена не всегда бывает оправдана, бгг
12 PiotrLoginov
 
22.10.18
12:28
Понял . Искренне благодарен.
13 Сияющий в темноте
 
22.10.18
12:33
Начнем с того,что вызов сервера,это не совсем сервер,это заголовки на клиенте для вызова серверных функций.
и,как и в случае вызова клиентского общего модуля никакая форма внутри общего модуля не доступна.
когда идет вызов сервера,то сначала идет вызов общего модуля,в котором контекст теряется,а потом уже из модуля идет запрос на сервер.
чисто же серверный модуль без вызова сервера вызвать будет просто нельзя,т.к.клиент о нем ничего не знает.

и,формы на сервере не живут,живет там только код,и то,не факт,что не сбрасывается из памяти,при обращении к серверному модулю данные формы передаются на сервер,где формируется контекст вызова,а после выполняется вызов процедуры в этом контексте. Для кластера же возможна ситуация,когда два серверных вызова будут выполнены на разных серверах.
14 PiotrLoginov
 
22.10.18
12:46
(13) >>при обращении к серверному модулю данные формы передаются на сервер,где формируется контекст вызова

... ??
15 PiotrLoginov
 
22.10.18
12:47
к серверному модулю формы или к любому серверному модулю, если только у него нет директивы &НаСервереБезКонтекста ?
16 PiotrLoginov
 
22.10.18
12:48
* к любому серверному модулю если только у вызываемого метода нет директивы &НаСервереБезКонтекста ?
Программист всегда исправляет последнюю ошибку.