|
Почему код модуля документа исполняется на толстом клиенте, а не на сервере? | ☑ | ||
---|---|---|---|---|
0
ruslanruslan
23.07.12
✎
17:30
|
V8.2, клиент-серверный режим, толстый клиент.
Почему-то при сохранении документа в форме, событие ПриЗаписи в модуле документа исполняется на клиенте, а не на сервере. И если в нем написать Предупреждение() - все работает, вылезает окошко, а по логике должна быть ошибка компиляции. Я думал, что модуль документа всегда по умолчанию исполняется на сервере. Или же всегда надо явно писать &НаСервере ? Вообще в документации нигде не нашел слов о том, что модуль документа всегда исполняется на сервере. Как-то неопределенно. |
|||
1
х86
23.07.12
✎
17:32
|
(0)он на сервере тож может выполняться
|
|||
2
H A D G E H O G s
23.07.12
✎
17:35
|
В Толстом Клиенте модуль документа всегда на клиенте.
|
|||
3
H A D G E H O G s
23.07.12
✎
17:36
|
Хотя нет, пардонте
|
|||
4
H A D G E H O G s
23.07.12
✎
17:36
|
Можно и на сервере сделать, если его открыть в серверном модуле.
|
|||
5
H A D G E H O G s
23.07.12
✎
17:36
|
Без формы документа.
|
|||
6
ruslanruslan
23.07.12
✎
17:37
|
Вопрос в том, где он должен выполняться по умолчанию, когда идет сохранение документа в форме.
|
|||
7
Reset
23.07.12
✎
17:37
|
(6) На клиенте, разумеется. Объект-то на клиенте.
|
|||
8
ruslanruslan
23.07.12
✎
17:38
|
А на сервере что?
|
|||
9
Reset
23.07.12
✎
17:38
|
(8) Вопрос непонятен
|
|||
10
H A D G E H O G s
23.07.12
✎
17:39
|
(8) Серверные и клиент-серверные модули, модули документов, инициированных на сервере.
|
|||
11
ruslanruslan
23.07.12
✎
17:39
|
На сервере тоже должен быть создан экземпляр объекта.
|
|||
12
H A D G E H O G s
23.07.12
✎
17:40
|
(11) Это в Тонком.
|
|||
13
ruslanruslan
23.07.12
✎
17:42
|
Проблема в том, что если модуль документа при сохранении в форме всегда по умолчанию выполняется на клиенте, тогда он должен видеть другие клиентские модули. А он работает как хочет.
|
|||
14
H A D G E H O G s
23.07.12
✎
17:44
|
Он работает как может. Не ругай его.
|
|||
15
SerMaxim
23.07.12
✎
17:45
|
(0) Не верно размышляешь. Если форма обычная - то будет на клиенте (толстом)
Если форма - управляемая то будет на сервере. |
|||
16
SerMaxim
23.07.12
✎
17:46
|
Важна не только платформа, но и архитектура ....
|
|||
17
ruslanruslan
23.07.12
✎
17:48
|
(16) Форма обычная режим SQL.
Получается так. Если идет запись объекта в форме, тогда модуль документа исполняется на клиенте. Если идет просто запись на сервере, то тогда он наверное будет выполняться на сервере. Из-за этого он то не видит клиентские модули, то не видит серверные. |
|||
18
Reset
23.07.12
✎
17:52
|
(17) Исполняется там, где "находится" сам объект. Поэтому в модуле(который может исполняться как на клиенте, так и на сервере) нужно с осторожностью использовать процедуры, доступные только на "одной стороне". Для исключения таких ошибок существуют инструкции препроцессору (#Если Клиент и тп)
|
|||
19
ruslanruslan
23.07.12
✎
17:57
|
(18) Если я в начале модуля документа напишу &НаСервере, то его код точно будет всегда выполнятся только на сервере, даже если объект находится на клиенте. То есть объект будет передаваться на сервер, для исполнения кода модуля.
Непонятно только одно, зачем вообще коду модуля документа выполнятся на клиенте? |
|||
20
х86
23.07.12
✎
18:02
|
(17)делаешь модуль который компилится и на сервере и на клиенте, а из него уже вызываешь нужные тебе функции и процедуры
|
|||
21
Reset
23.07.12
✎
18:04
|
(19) При чем здесь директива компиляции &НаСервере? У тебя же приложение не управляемое. А в управялемом объект документа на клиенте просто не может быть.
Я бы рекомендовал тебе почитать документацию. |
|||
22
MRAK
23.07.12
✎
18:04
|
(19) вроде как в обычном приложении такие инструкции работают нестабильно и непредсказуемо. Поправьте, если ошибаюсь.
|
|||
23
х86
23.07.12
✎
18:05
|
(22)с чего эт???
|
|||
24
MRAK
23.07.12
✎
18:05
|
(23) а, ну да. Вроде как вообще не работают
|
|||
25
ll13
23.07.12
✎
18:15
|
(0) Автор, какое приложение используется - обычное или управляемое ?
|
|||
26
ruslanruslan
23.07.12
✎
18:23
|
(25) Обычное, не управляемое.
|
|||
27
ll13
23.07.12
✎
19:01
|
(26) Вот с этого и надо было начинать.
В общем, если кратко: Если прочитаешь документацию, хотя бы синтаксис помощник, то поймешь, что директивы компиляции можно использовать ТОЛЬКО в модуле формы, модуле команды и общем модуле, отсюда следует что в модуле объекта они вообще не используются. Толстых клиентов вообще говоря существует ДВА, толстый клиент - обычное приложение(твой вариант) его работа аналогична платформе 8.1, и толстый клиент - управляемое приложение. Толстый клиент(обычное приложение) модуль объекта может быть скомпилирован как на клиенте так и на сервере, управлять порядком компиляции можно с помощью инструкций препроцессора вида #Если Сервер Тогда ... Толстый клиент(управляемое приложение) модуль объекта компилируется всегда на сервере. Все это справедливо для клиент-серверного варианта, в файловом есть маленький ньюанс - так называемое "слияние контекстов" Если предполагается использовать конфигурацию как в управляемом так и в обычном режимах, модули объектов требуют очень тщательной проектировки, в части управления порядком компиляции с помощью инструкций препроцессора. |
|||
28
ruslanruslan
23.07.12
✎
19:25
|
(27) Зачем вообще в клиент-серверном варианте модуль документа компилировать на клиенте? Я так понимаю, что мне придется во всех модулях объектов ставить в начале модуля &НаСервере.
|
|||
29
ruslanruslan
23.07.12
✎
19:52
|
(27) Ступил, скажу спасибо за этот пост.
|
|||
30
Азазелло
23.07.12
✎
21:44
|
(27) Как показала практика, добавление директивы &НаСервере в модуль объекта перед процедурой ОбработкаПроведения в режиме обычного приложения привела к тому, что документ проводился, но обработчик проведения не выполнялся.
|
|||
31
MRAK
24.07.12
✎
07:39
|
(23) кстати, вот (30)
|
|||
32
х86
24.07.12
✎
09:30
|
(31)инструкции работают стабильно и предсказуемо, а вот их не умелое использование и не понимание приводит к странным вариантам
|
|||
33
ruslanruslan
24.07.12
✎
13:06
|
(30) Я все-таки склоняюсь к мысли, что не стоит использовать &НаСервере в модуле документа. Иначе это ведет к очень странному поведению системы.
Я полностью отказался от использования каких-либо функций в модуле документа, которые могут работать только на клиенте. То есть вызываются функции только из тех общих модулей, у которых стоят флаги Сервер и Вызов сервера. В таком случае уже все-равно где выполняется код модуля документа. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |