Исполнение модуля
Модуль существует в том же окружении, что и тип, к которому относится модуль: Клиент, Сервер или КлиентИСервер. Однако методы и типы, объявленные в модуле, могут существовать и исполняться в разных окружениях.
Есть стандартные окружения, в которых существуют типы и исполняются методы модуля. Они используются тогда, когда окружение не указано в явном виде. Они зависят от вида элемента проекта:
- HttpСервис — Сервер,
- КлючДоступа — Сервер,
- Пользователи — Сервер,
- ПроцессИнтеграции — Сервер,
- РегистрСведений — Сервер,
- Справочник — Сервер,
- ОбщийМодуль — такое же как у элемента проекта,
- Структура — такое же как у элемента проекта,
- КомпонентИнтерфейса — Клиент,
- НавигационнаяКоманда — Клиент,
- ОбычнаяКоманда — Клиент,
- ПереключаемаяКоманда — Клиент,
- Перечисление — Клиент Сервер,
- ХранимаяСтруктура — Клиент,
Наряду с этим окружение для метода, структуры, исключения, перечисления, константы можно задать в явном виде с помощью аннотаций окружения:
- @Клиент,
- @Сервер,
- @ДоступноСКлиента.
Аннотации окружения работают следующим образом:
- Если у типа окружение — КлиентИСервер
- Можно использовать следующие аннотации окружения:
- @Сервер
- Метод (тип) доступен на сервере. Метод исполняется на сервере.
- @Клиент
- Метод (тип) доступен на клиенте. Метод исполняется на клиенте.
- @Сервер @Клиент
- Метод (тип) доступен и на клиенте и на сервере. Если метод вызывается с клиента, то он исполняется на клиенте.Если метод вызывается с сервера, то он исполняется на сервере.
- @Сервер @ДоступноСКлиента
- Метод (тип) доступен и на клиенте и на сервере. Метод исполняется на сервере, а вызвать его можно как с сервера, так и с клиента.
- Если у типа окружение — Клиент
- Можно использовать те же аннотации, что и для предыдущего случая. Разница только в методах, имеющих аннотацию @Сервер. Они не имеют доступа к экземпляру, то есть у них нет контекста экземпляра и недоступно обращение через этот.
- Если у типа окружение — Сервер
- Можно использовать только одну аннотацию — @Сервер. Однако окружение Сервер является стандартным для таких модулей, поэтому аннотацию @Сервер можно не писать.