Skip to main content

Общие модули

Назначение ключевых свойств

СвойствоДля чего нужноВажные нюансы
СерверИсполнение кода на сервере. Доступ к серверным функциям (работа с ИБ, безопасность).Без Клиент. Из клиента вызывается через ВыполнитьНаСервере()
ВызовСервераПозволяет вызывать экспортные функции модуля из клиентского кода напрямую.Работает только в паре с Сервер. Упрощает синтаксис.
Клиент (Обычное)Исполнение кода на клиенте. Доступ к интерфейсу, диалогам, локальным данным.Для толстого/управляемого клиента.
Клиент (Управляемое)Исполнение кода в веб-клиенте или тонком клиенте.
ВнешнееСоединениеДоступ к модулю из внешних подключений (COM, OLE, HTTP-сервисы, ВнешниеИсточникиДанных).Нужен для интеграций, когда код запускается не из сеанса пользователя.
ПовторноеИспользованиеКэширование результатов функций для одинаковых входных параметров.НаВремяВызова (до 20 мин от последнего вызова). НаСеанс (до конца сеанса). Только простые типы параметров!

Типовые комбинации свойств

Сценарий использованияРекомендуемые свойства
Серверная логика, вызываемая из клиентаСервер + ВызовСервера
Логика для внешних интеграций (COM, HTTP)Сервер + ВнешнееСоединение
Обработчики событий (Подписки)Сервер (если логика серверная) + ВнешнееСоединение (если из COM)
Глобальные утилитыСервер/Клиент + Глобальный (осторожно!)
Кэшируемый справочник настроекСервер + ПовторноеИспользование

Критически важные нюансы

Повторное использование возвращаемых значений

  • Параметры: Только простые типы (Неопределено, Null, Булево, Число, Строка, Дата, Ссылка).
  • Возвращаемые значения: Рекомендуются иммутабельные (ФиксированнаяСтруктура, ФиксированныйМассив).
  • Память: Необоснованное использование → утечки памяти (кэш живет до 20 минут).
  • Использовать если: Результат часто нужен и стабилен (настройки, константы, справочники-списки).

Глобальный общий модуль

  • Функции доступны без указания имени модуля.
  • Требование уникальности имен функций в рамках всей конфигурации.
  • Осторожно! Может привести к конфликтам имен и усложнить чтение кода ("откуда эта функция?")

Вызов сервера

  • Устанавливать признак "Вызов сервера" только для тех серверных общих модулей, чьи экспортные методы действительно должны вызываться с клиента
  • Не устанавливать этот признак принудительно для всех серверных модулей — он должен быть осознанным и ограниченным
  • Размещать в таких модулях только безопасные методы, которые передают клиенту только разрешенные данные (например, итоговые результаты расчетов, а не исходные или промежуточные данные, недоступные пользователю)
  • Не размещать в модулях с "Вызов сервера" методы, использующие привилегированный режим, либо требующие повышенных прав доступа