Brief: модули
Модули и порядок
Модуль — функционально законченная часть проекта: объявления классов, свойств, действий, форм, событий, ограничений (модули). Один модуль — один файл .lsf, начинающийся с заголовка модуля: MODULE, REQUIRE, PRIORITY, NAMESPACE.
REQUIRE перечисляет модули, от которых текущий зависит. Зависимость транзитивна, циклы не допускаются, и по ней строится порядок инициализации: модуль инициализируется после всех своих зависимостей. От модуля System зависит любой модуль. Зависимость определяет и видимость: элемент можно найти по имени только в модуле-зависимости, поэтому расширять чужой функционал позволяет техника расширений, см. Brief: расширения.
Проект — совокупность модулей и сопутствующих файлов; по умолчанию модулями считаются все файлы .lsf в classpath сервера приложений, а параметры запуска logics.includePaths, logics.topModule, logics.orderDependencies сужают этот набор и переопределяют порядок.
Аналогия: пакет или сборка.
MODULE Sale;
REQUIRE System, Utils, Item;
NAMESPACE Sale;
Системные модули
Системные модули поставляются вместе с платформой — это стандартная библиотека, которую проект подключает через REQUIRE и не переопределяет (системные модули). Двенадцать из них платформа загружает сама — System, Service, Reflection, Authentication, Security, SystemEvents, Email, Icon, Scheduler, Time, Utils, UserEvents, — но загруженность не означает зависимость: неявной зависимостью каждого модуля является только System, а объявление из любого другого требует REQUIRE.
| Модуль | Для чего |
|---|---|
System | корневые типы, базовые классы, инфраструктура |
Utils | вспомогательные свойства и действия общего назначения |
Time | свойства и операции над датой и временем |
Authentication | пользователи, контакты, вход в систему |
Security | роли и политики доступа |
Service | сервисные действия и настройки сервера |
SystemEvents | события жизненного цикла сервера |
UserEvents | программный доступ к фильтрам и сортировкам формы |
Reflection | метаданные о навигаторе, формах, свойствах, таблицах |
Scheduler | запуск действий по расписанию |
Email | отправка и приём почты |
Icon | каталог иконок интерфейса |
Прикладные дополнения: Backup, Chat, Eval, Excel, Document / Word, Image / OpenCV, I18n, Integration, MasterData, Numerator, Hierarchy, Historizable, Geo, Printer / QZTray / Sound / Com, ProcessMonitor / Profiler, RabbitMQ / WebSocket, Messenger со своими Telegram / Slack / Viber / Whatsapp / Skype, SQLUtils, DefaultData, Schedule.
Всё это — обычные объявления в .lsf, а не примитивы языка: lpad, currentDate, currentUser — свойства, искать их следует в ветке paradigm.