Исполнение кода на клиенте и на сервере
страницаИсполнение кода на клиенте и на сервере
На предыдущем занятии мы создали одну процедуру для обработки нескольких событий и поместили ее в общий модуль РаботаСДокументами. При этом в его свойствах мы поставили флажок Клиент (управляемое приложение) и сняли флажок Сервер. Эта процедура вызывалась из модуля формы, в котором для обработчика события также была указана директива, определяющая контекст исполнения этого обработчика — &НаКлиенте. Расскажем подробнее, как именно происходит исполнение кода в этом случае.
После запуска прикладного решения выполнение кода всегда начинается на клиенте. В процессе работы выполнение кода может быть передано на сервер посредством вызова процедуры общего модуля, скомпилированного на сервере.
Дело в том, что при вызове процедуры или функции ее поиск осуществляется сначала на клиенте. Если скомпилированный контекст клиента не содержит данную процедуру, то поиск продолжается на стороне сервера. Если вызываемая процедура будет найдена, то выполнение кода будет передано на сервер. После завершения процедуры выполнение кода продолжится на клиенте.
Например, при изменении цены в форме приходной накладной вызывается процедура модуля формы ЦенаПриИзменении(). Она исполняется на стороне клиента в режиме тонкого клиента. Во второй строке этого обработчика вызывается процедура РассчитатьСумму(). Эта процедура находится в общем модуле РаботаСДокументами, скомпилированном также на клиенте. Она исполняется в режиме тонкого клиента. После выполнения этой процедуры управление опять передается в модуль формы (рис. 5.49).

Рис. 5.49. Передача выполнения кода между модулями на клиенте