|
Директивы компиляции в общих модулях | ☑ | ||
---|---|---|---|---|
0
Nik777
17.04.12
✎
18:50
|
Вообщем есть следующие тонкости: флаг "Вызов сервера" работает лишь тогда, когда установлен только один флаг: "Сервер", т.е. если, допустим, установлен еще и флаг "Клиент", то из клиентских процедур нельзя будет вызывать методы этого общего модуля, которые компилируются на сервере. Почему так - сам понять не могу, где логика?
|
|||
1
pumbaEO
17.04.12
✎
19:14
|
в ЖКХ
|
|||
2
zak555
17.04.12
✎
19:19
|
(1) там точно про это не в курсе =)
|
|||
3
Нуф-Нуф
17.04.12
✎
19:21
|
курсы гилева рулят и разруливают
|
|||
4
Nik777
17.04.12
✎
19:21
|
(3) как раз этот пример из курсов Гилева.
|
|||
5
le_
17.04.12
✎
19:22
|
СП: ОбъектМетаданных: ОбщийМодуль (MetadataObject: CommonModule) ВызовСервера (ServerCall)
Если свойство установлено в значение Истина, то экспортные процедуры и функции модуля могут быть использованы на клиенте. Если свойство не установлены, то процедуры и функции данного модуля доступны только на сервере. |
|||
6
YF
17.04.12
✎
19:23
|
(0)
Логика в том, что при одной только галке Сервер - модуль компилируется на сервере, с установкой галки вызов сервера методы становятся доступны с клиента. при обоих галках модуль компилится в двух местах и на клиенте и на сервере. в этом случае с клиента ты увидишь только скомпилированную на клиенте часть модуля ... |
|||
7
Nik777
17.04.12
✎
19:24
|
(5) Если Вы помимо сервера поставите галочку "Клиент", то от "Вызов сервера" не будет никакого толку - при вызове серверных методов будут вываливаться ошибки.
|
|||
8
le_
17.04.12
✎
19:25
|
(7) Это не так.
|
|||
9
Nik777
17.04.12
✎
19:26
|
(6) Мне кажется, что это не совсем правильно. Зачем тогда нужен вызов сервера? Было бы более правильным сделать так, чтобы была возможность вызова сервера в данном случае. Иначе - какие могут быть ошибки?
|
|||
10
Nik777
17.04.12
✎
19:27
|
(8) Да ладно, только что смотрел видеоуроки Гилева - там сказано именно так.
|
|||
11
YF
17.04.12
✎
19:27
|
(9) Согласен, но вот так работает у них компилятор, судя по всему ...
|
|||
12
Nik777
17.04.12
✎
19:29
|
(11) Может быть в следующей версии платформы будет что-то вроде "По заявкам телезрителей" :)
|
|||
13
le_
17.04.12
✎
19:51
|
(10) Смотри еще раз.
Когда посмотришь, открой конфигуратор, добавь новый модуль, поставь галки: - клиент (управляемое приложение) - сервер - вызов сервера Добавь в этот модуль такой текст: Процедура МояПроцедура() Экспорт
Далее, создай внешнюю обработку с управляемой формой и одной командой: &НаКлиенте
Запусти - Enjoy! Сними галку "Клиент", перезапусти - снова Enjoy! Поставь галку "Клиент", перезапусти - снова Enjoy! Последние два пункта выполняй пока не надоест. |
|||
14
Nik777
17.04.12
✎
20:06
|
(13) А тебя не смущает тот факт, что в первом случае (когда стоят галки и клиента и сервера) - компиляция процедуры происходит и на сервере, и на клиенте, что означает, что ты запускаешь процедуру, которая находится на клиенте, а не насервере?
Если снять галку "Клиент" - то тут, естественно, ошибок не возникнет. |
|||
15
le_
17.04.12
✎
23:25
|
(14) Да, ты прав, пардон.
СП говорит, если директива компиляции не указана, используется директива по-умолчанию. Директивой по-умолчанию является &НаСервере. Т.о., можно подумать, что процедура МояПроцедура() из (13) должна быть скомпилирована на сервере. Однако, она оказывается и на клиенте... |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |