Исполнение модуля

Модуль существует в том же окружении, что и тип, к которому относится модуль: Клиент, Сервер или КлиентИСервер. Однако методы и типы, объявленные в модуле, могут существовать и исполняться в разных окружениях.

Есть стандартные окружения, в которых существуют типы и исполняются методы модуля. Они используются тогда, когда окружение не указано в явном виде. Они зависят от вида элемента проекта:

  • HttpСервис — Сервер,
  • КлючДоступа — Сервер,
  • Пользователи — Сервер,
  • ПроцессИнтеграции — Сервер,
  • РегистрСведений — Сервер,
  • Справочник — Сервер,
  • ОбщийМодуль — такое же как у элемента проекта,
  • Структура — такое же как у элемента проекта,
  • КомпонентИнтерфейса — Клиент,
  • НавигационнаяКоманда — Клиент,
  • ОбычнаяКоманда — Клиент,
  • ПереключаемаяКоманда — Клиент,
  • Перечисление — Клиент Сервер,
  • ХранимаяСтруктура — Клиент,

Наряду с этим окружение для метода, структуры, исключения, перечисления, константы можно задать в явном виде с помощью аннотаций окружения:

  • @Клиент,
  • @Сервер,
  • @ДоступноСКлиента.

Аннотации окружения работают следующим образом:

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