Skip to content

Latest commit

 

History

History
92 lines (82 loc) · 7.1 KB

File metadata and controls

92 lines (82 loc) · 7.1 KB

Архитектура

Общая схема

┌─────────────────────────────────────────────────┐
│                Управляемая форма                │
│  ┌───────────────────────────────────────────┐  │
│  │          Поле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-редактором
конс_ПодключаемаяКонсольВызовСервера ВызовСервера Прокси-вызовы к серверному модулю
конс_ПодключаемаяКонсольКлиентСервер КлиентСервер Утилиты разбора ошибок
конс_ПодключаемаяКонсольПовтИсп Сервер (кэш) Кэширование данных макета и метаданных

JavaScript-слой (Monaco)

Файл Назначение
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-редактора)