|
Вопрос по контексту общих модулей | ☑ | ||
---|---|---|---|---|
0
never_sleep
03.05.17
✎
07:25
|
Гуглил, но до конца не понял.
Флаг "Сервер" Функции такого модуля могут выполняться на сервере. Флаг "Вызов сервера" Флаг доступен для модулей с установленным флагом "Сервер". Разрешает вызов на клиенте экспортных функций этого модуля (которые будут выполняться на сервере). Флаг "Клиент (управляемое приложение)" Функции такого модуля могут выполняться на клиенте в режиме управляемого приложения. Не совсем понятно, почему можно одновременно поставить одновременно все 3 галки? Я прочитал объяснение, вроде как логика в том, чтобы В модуля, которые "Сервер" накидать процедуры, которые выполняются чисто на сервере и на клиенте их вообще не должно быть видно. В модуля, которые "Вызов сервера" накидать процедуры, которые выполняются чисто на сервере, но которые по логике могут понадобиться на клиенте. А в модуля, которые "Клиент (управляемое приложение)" накидать процедуры, которые выполняются чисто на клиенте. Но зачем тогда давать эти галки ставить вместе? Или я не совсем правильно понимаю логику этих галок? Гуглил - все ссылки либо коротенькие отписки, как я привел выше, либо на мистовские темы 10-12 года, где судя по ответам истины никто сам не знал. |
|||
1
Неверный Параметр И
03.05.17
✎
07:40
|
Чтобы иметь в одном экземпляре код, существующий одновременно на клиенте и на сервере и доступный для вызова как с клиента так и с сервера. Например, обработка строк. Так-то!
|
|||
2
never_sleep
03.05.17
✎
08:23
|
(1) В вашей голове наверняка все логично и по полочкам разложено, в моей же пусто и гуляет ветер. Не совсем понял что вы сказали, помогите, пожалуйста, заткнуть дыры в понимании. Я пример с обработкой строк никак не понял((( нуб я пока
|
|||
3
бомболюк
03.05.17
✎
08:40
|
(0) если тебя это утешит - я тоже этого не знаю ;-)
|
|||
4
Неверный Параметр И
03.05.17
✎
08:47
|
(2) Вот есть у тебя алгоритм проверки названия на запрещённые комбинации символов. Вызывается при вводе наименования на клиенте и при загрузке из файла на сервере. Кладется в общий модуль с двумя этими галочками. И все. Клиент вызывает с клиента, сервер с сервера, никакая информация по дохлому сетевому каналу не ходит. А алгоритм один. И правится в одном месте.
|
|||
5
бомболюк
03.05.17
✎
08:49
|
(4) ну про 2 галки ("Клиент", "Сервер") ты все складно растолковал, а что насчет 3й ("Вызов сервера")?
|
|||
6
Неверный Параметр И
03.05.17
✎
09:01
|
(5) Позволяет передавать управления на сервер. Если одновременно стоят клиент и вызов сервера, то по умолчанию вызовется "ближайший", клиентский экземпляр кода. Для понимания принципа разруливания кто где - читай глубже, про директивы компиляции препроцессора, которые разбрасывают код по контекстам внутри программного модуля.
|
|||
7
never_sleep
03.05.17
✎
09:04
|
вот тут еще неплохо по нашей теме:
http://www.obrabotki.com/1s-commonmodule-managedforms/ перевариваю. |
|||
8
never_sleep
03.05.17
✎
09:05
|
так как раз про ближайший вызов написано.
|
|||
9
never_sleep
03.05.17
✎
09:12
|
(6) Т.е. если у модуля стоит только дона галка "клиент", то я смогу из клиента обратиться только к клиентским процедурам внутри этого модуля. А если "Вызов сервера", то мне фактически станут доступны все процедуры данного модуля?
|
|||
10
бомболюк
03.05.17
✎
09:12
|
(7) в примере, насколько я понял, установка флага "Вызов сервера" в дополнение к 2м другим ("Клиент", "Сервер") не приводит к изменениям работы модуля?
|
|||
11
never_sleep
03.05.17
✎
09:13
|
А с сервера, я в любом случае смогу вызвать только серверные процедуры данного модуля, в случае серверного вызова, мне галки "Клиент" и "Вызов сервера" вообще неинтересны?
|
|||
12
never_sleep
03.05.17
✎
09:15
|
(10) Как я понял, влияет повлияет только на доступность процедур при вызове с клиента. С сервера вообще никак не изменится.
|
|||
13
Buster007
03.05.17
✎
09:15
|
галка Клиент - процедуры доступны только на клиенте
галка Сервер - процедуры доступны только на сервере Галка вызов сервера - доступны на клиенте и на сервере |
|||
14
Buster007
03.05.17
✎
09:16
|
+(13) к "вызов сервера" ВСЕ процедуры доступны на клиенте
|
|||
15
never_sleep
03.05.17
✎
09:17
|
(13) а вот и неправильно. плохое объяснение. по вашей логике установка 2х галок "клиент" и "сервер" равнозначна "Вызов сервера"
|
|||
16
never_sleep
03.05.17
✎
09:18
|
(14) ну с допиской да.
|
|||
17
Buster007
03.05.17
✎
09:20
|
(16) торопиться делать выводы не надо ;)
|
|||
18
h-sp
03.05.17
✎
09:21
|
(15) непонятно, что вы хотите? Чтобы там какие-то галки были недоступны? Так это очень неудобно. Путь лучше как сейчас - все галки доступны, а программист сам выбирает, какие сочетания возможны.
|
|||
19
Buster007
03.05.17
✎
09:23
|
(18) все эти галки должны быть всегда доступны, а если закралась мысль о том, что какие-то галку должны быть недоступны, то это значит есть какой-то пробел в знании
|
|||
20
never_sleep
03.05.17
✎
09:25
|
(18) Да теперь уже вроде просветление наступило. Галки нужны, совместное их использование тоже. Вопросов вроде нет. Спасибо, Неверный Параметр И, ваши ответы и пример с проверкой строки крайне помогли в понимании.
|
|||
21
youalex
03.05.17
✎
09:28
|
вызов сервера - имеет смысл только, если стоит галка Сервер, как ни странно, да)
|
|||
22
never_sleep
03.05.17
✎
09:30
|
Ну как бы не странно. Логично, что если в модуле нет серверных процедур, то галка "Вызов сервера" не нужна, хватит "клиент". А если есть серверные, то логично дать возможность их вызывать и с сервера (галка "сервер")
|
|||
23
never_sleep
03.05.17
✎
09:32
|
Единственный вопрос остался. Директивы по умолчанию.
Не указание места компиляции процедуры, по умолчанию всегда приводит к &НаСервере? Независимо от того какие галки стоят у модуля? Напишу модуль, нигде не поставлю директивы, поставлю галку клиент, и не смогу обратиться ни к одной процедуре? |
|||
24
Buster007
03.05.17
✎
09:34
|
(23) ну а ты как думаешь? Если модуль клиентский и его на сервере вообще не существует, то почему система будет ставить директиву НаСервере?
|
|||
25
never_sleep
03.05.17
✎
09:37
|
(24) Да вот мне ближе все-таки унификация "умолчаний".
В моем примере, получается, если стоит только одна галка "клиент", то умолчание "&НаКлиенте", а если ставлю еще и сервер, то сразу умолчание меняется на &НаСервере? Фигово это, имхо. |
|||
26
Неверный Параметр И
03.05.17
✎
09:37
|
(23) Такое поведение будет только в модуле УФ, так как она одновременно существует и там и там, а галочек нет. В общем модуле по умолчанию будет использоватся расстановка флажков контекстов.
|
|||
27
never_sleep
03.05.17
✎
09:41
|
(26) т.е. я все-таки правильно понял Buster007? Что если в модуле только одна галка "клиент", то по умолчанию "&НаКлиенте. Как только появилась галка "сервер", то умолчание сразу &НаСервере?
|
|||
28
never_sleep
03.05.17
✎
09:43
|
а хотя нет. Те у которых нет директив будут скомпилированы как на клиенте так и на сервере?
|
|||
29
Неверный Параметр И
03.05.17
✎
09:44
|
(27) Если галки не одновременные, то да.
Вообще забей ты на эти конструкции с амперсендами, они только для модулей УФ нужны. Есть православные #Если Клиент Тогда специально для этого предназначенные. Читаешь какой нибудь модуль внешнего соединения после таких "спецов", плакать хочется... |
|||
30
never_sleep
03.05.17
✎
09:44
|
в этом и смысл вашего примера с проверкой строки. Не ставлю директиву компиляции, ставлю галки Сервер и Клинет и процедура попадает и в клиентскую часть и в сервеную часть модуля
|
|||
31
Неверный Параметр И
03.05.17
✎
09:45
|
(28) Если галки одновременно стоят, то да.
|
|||
32
never_sleep
03.05.17
✎
09:47
|
(31) Все, как будто Будда коснулся моей головы)) Спасибо!
|
|||
33
ptiz
03.05.17
✎
10:16
|
Я тоже не очень понимаю.
С клиента нельзя вызвать процедуру модуля с галкой "сервер" без галки "вызов сервера"? Т.е. галка нужна только чтобы разрешить вызывать процедуры с клиента? Тогда её назвали странно, т.к. её суть: "вызов с клиента". И в чем смысл такого ограничения? |
|||
34
Naf2017
03.05.17
✎
10:19
|
(33) уменьшить количество информации, которую должен знать клиент для серверных вызовов
|
|||
35
Мимохожий Однако
03.05.17
✎
10:20
|
(22) Не просто так разработчики типовых пишут его свойства в названии модуля
|
|||
36
Timon1405
03.05.17
✎
10:24
|
(33) Галка вызов сервера (точнее ее отсутствие) нужна для защиты серверного кода от внешних обработок(точнее вызовов с клиента). до такого кода нельзя добраться с клиента, то есть, теоретически, злоумышленник не сможет с клиента вытянуть данные из БД, если запрос на их получение в серверном модуле
|
|||
37
ptiz
03.05.17
✎
17:21
|
(36) Злоумышленник в своей обработке сделает процедуру &НаСервере и вызовет всё, что нужно. Не так?
|
|||
38
Timon1405
03.05.17
✎
17:26
|
(37) Если не стоит вызов сервера, ему будет сообщение "процедура не найдена"
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |