┌─────────────────────────────────────────────────┐
│ Управляемая форма │
│ ┌───────────────────────────────────────────┐ │
│ │ ПолеHTML (Monaco Editor) │ │
│ │ ┌─────────────────────────────────────┐ │ │
│ │ │ editor.js ←→ bsl_helper.js │ │ │
│ │ │ bslGlobals.js bslMetadata.js │ │ │
│ │ │ snippets.js actions.js │ │ │
│ │ │ bslQuery.js bslDCS.js colors.js │ │ │
│ │ └─────────────────────────────────────┘ │ │
│ └──────────────────┬────────────────────────┘ │
│ │ события │
│ ┌──────────────────▼────────────────────────┐ │
│ │ конс_ПодключаемаяКонсольКлиент │ │
│ │ (обработка событий, UI, мост) │ │
│ └──────────────────┬────────────────────────┘ │
│ │ │
│ ┌──────────────────▼────────────────────────┐ │
│ │ конс_ПодключаемаяКонсольВызовСервера │ │
│ └──────────────────┬────────────────────────┘ │
│ │ │
│ ┌──────────────────▼────────────────────────┐ │
│ │ конс_ПодключаемаяКонсольСервер │ │
│ │ (инициализация, настройки, метаданные, │ │
│ │ выполнение кода, переменные) │ │
│ └──────────────────┬────────────────────────┘ │
│ │ │
│ ┌──────────────────▼────────────────────────┐ │
│ │ конс_ПодключаемаяКонсольПовтИсп │ │
│ │ (кэш макетов и метаданных) │ │
│ └───────────────────────────────────────────┘ │
│ │
│ конс_ПодключаемаяКонсольКлиентСервер │
│ (утилиты: разбор ошибок, конвертация типов) │
└─────────────────────────────────────────────────┘
| Модуль | Контекст | Назначение |
|---|---|---|
конс_ПодключаемаяКонсольСервер |
Сервер | Инициализация, настройки, метаданные, выполнение кода |
конс_ПодключаемаяКонсольКлиент |
Клиент | Управление UI, мост между формой и JS-редактором |
конс_ПодключаемаяКонсольВызовСервера |
ВызовСервера | Прокси-вызовы к серверному модулю |
конс_ПодключаемаяКонсольКлиентСервер |
КлиентСервер | Утилиты разбора ошибок |
конс_ПодключаемаяКонсольПовтИсп |
Сервер (кэш) | Кэширование данных макета и метаданных |
| Файл | Назначение |
|---|---|
editor.js |
Ядро: глобальные функции API, инициализация Monaco, обработка событий |
bsl_helper.js |
Автодополнение, подсказки, навигация по коду, работа с токенами |
bsl_language.js |
Определение языка BSL: токенизация, ключевые слова, правила подсветки |
bslGlobals.js |
Глобальные функции платформы с сигнатурами |
bslMetadata.js |
Структура метаданных конфигурации (справочники, документы...) |
bslQuery.js |
Автодополнение языка запросов 1С |
bslDCS.js |
Автодополнение языка выражений СКД |
snippets.js |
Встроенные сниппеты BSL |
actions.js |
Действия: закладки, навигация, контекстное меню |
colors.js |
Справочник веб-цветов для подсказок |
parsers.js |
Парсеры форматов |
finder.js |
Поиск по коду |
1C (BSL) ──вызов JS──→ editor.js (публичные функции)
│
├── setText(), getText(), updateMetadata()...
│
editor.js ──sendEvent()──→ 1C (ОбработчикПриНажатии)
│
├── EVENT_CONTENT_CHANGED
├── EVENT_GET_METADATA
├── EVENT_QUERY_CONSTRUCT
└── EVENT_ON_LINK_CLICK
| Данные | Где хранятся |
|---|---|
| Настройки пользователя | ХранилищеОбщихНастроек → конс_ПодключаемаяКонсольКода/НастройкиРедактора |
| Параметры редактора | Реквизит формы конс_СтруктураПараметровРедактораКода |
| Исходники Monaco | Временный каталог %TEMP%\bsl_console\ (с версионным кэшированием) |
| Опции редактора | Массив editor_options[] в JavaScript (переживает пересоздание diff-редактора) |