В mdclasses реализован API записи объектов метаданных в файлы (EDT .mdo, при необходимости — Designer .xml). Для вызова из расширений IDE (например, vscode-1c-platform-tools) предполагается protocol extension в BSL Language Server: кастомные LSP-методы, которые вызывают mdclasses.
Реализация самих LSP-методов выполняется в репозитории bsl-language-server; здесь описан рекомендуемый контракт для согласования с клиентом.
Чтение конфигурации по пути к корню проекта (EDT или Designer).
Параметры (JSON-RPC):
path(string) — путь к каталогу конфигурации (корень EDT-проекта или каталог сConfiguration.xmlдля Designer).
Ответ:
- JSON-представление конфигурации или упрощённое дерево (имя, uuid, дочерние типы/объекты) для отображения в панели метаданных. Либо путь к считанной конфигурации и минимальный набор полей.
Вызов на стороне BSL LS: MDClasses.createConfiguration(Path.of(params.path)) или MDOReader.readConfiguration(Path.of(params.path)).
Запись одного объекта метаданных в файл.
Параметры:
path(string) — путь к файлу (.mdoдля EDT или.xmlдля Designer).object(string) — тип объекта, напримерSubsystem,Configuration,Catalog.data(object) — данные объекта для сериализации (соответствуют полям модели mdclasses).
Ответ:
{ "success": true }при успехе.- Ошибка (например,
UnsupportedOperationException,IOException) в формате LSP.
Вызов на стороне BSL LS: построить Java-объект (Subsystem, Configuration, Catalog и т.д.) из data и вызвать MDClasses.writeObject(Path.of(path), object) или MDOWriter.writeObject(...).
Добавление нового объекта в дерево конфигурации: обновление Configuration.mdo (EDT) или корневого файла конфигурации (Designer).
Параметры:
configurationRoot(string) — путь к корню конфигурации.objectType(string) — тип объекта (например,Subsystem,Catalog).objectName(string) — имя нового объекта.
Действие: прочитать конфигурацию через MDOReader, добавить ссылку в соответствующий список (например, <subsystems>Subsystem.Имя</subsystems>), записать обновлённый файл конфигурации через API записи Configuration.
Упрощает сценарий «добавить новую подсистему/справочник» без ручного разбора и записи Configuration.mdo на стороне клиента.
- EDT (.mdo): запись
Subsystem,Configuration,Catalog(и при необходимости других типов по мере реализации конвертеров). - Designer (.xml): запись
Subsystem(и при необходимости других типов).
Формат определяется по расширению пути в writeObject.
- План API записи метаданных и интеграция с VSCode extension.
- Реализация в mdclasses: пакеты
writer,writer.edt,writer.designer.