Skip to content
| Marketplace
Sign in
Visual Studio Code>Programming Languages>1C HBK BSLNew to Visual Studio Code? Get it now.
1C HBK BSL

1C HBK BSL

Maksim

|
3 installs
| (0) | Free
1C Enterprise BSL: syntax highlighting, diagnostics, go-to-definition, hover, completions, formatting, rename, and more
Installation
Launch VS Code Quick Open (Ctrl+P), paste the following command, and press enter.
Copied to clipboard
More Info

1C HBK BSL — расширение для VS Code / Cursor

Расширение подключает LSP-сервер onec-hbk-bsl к редактору: подсветка синтаксиса BSL, диагностики, переход к определению, hover, дополнения, форматирование, переименование и семантические токены для кода 1С:Предприятие (модули .bsl, OneScript .os).

Лицензия: см. LICENSE (MIT).


Возможности

Возможность Описание
Диагностики Правила BSL001… (совместимы по именам с BSL Language Server там, где задано)
Навигация Переход к определению, поиск символов, вызовы
Форматирование Встроенный форматтер, в т.ч. format on save для [bsl]
Отступ по Enter При editor.formatOnType (включено по умолчанию для [bsl]) сервер делает только правку ведущих пробелов/табов новой строки по контексту (Если/Пока/Для и т.д.) — остальной текст не трогает
Inlay hints Имена параметров на вызовах
Семантика Дополнительная подсветка поверх TextMate

Python в рантайме не нужен — в работе участвует только нативный бинарник onec-hbk-bsl (PyInstaller и т.п.).


Откуда берётся сервер (onec-hbk-bsl)

Порядок поиска бинарника (как в коде расширения):

  1. onecHbkBsl.serverPath — явный путь к исполняемому файлу (удобно для разработки, pip install / локальная сборка — системный PATH не просматривается).
  2. bin/ внутри расширения — если VSIX собран с вложенным бинарником под вашу платформу (релизы GitHub Actions делают именно так).
  3. Кэш после скачивания — глобальное хранилище расширения.
  4. Предложение скачать с GitHub Releases — если ничего не найдено (тег релиза = v + version из package.json расширения, см. src/extension.ts).

Имеет смысл держать serverPath пустым или значением по умолчанию onec-hbk-bsl, если вы используете готовый VSIX с бинарником в bin/ или соглашаетесь на скачивание. Чтобы использовать бинарник из установки в окружение Python, укажите полный путь в serverPath.

Команды расширения и CLI в обычном терминале

Расширение не добавляет onec-hbk-bsl в системный PATH. Команды палитры (Reindex Workspace и т.д.) вызывают LSP или подставляют полный путь к бинарнику из bin/ расширения / кэша.

Если вы вручную запускаете индексацию в zsh/bash, варианты:

  • полный путь к бинарнику из установки расширения, например
    ~/.vscode/extensions/mussolene.1c-hbk-bsl-<версия>/bin/onec-hbk-bsl --index …
    (в Cursor путь к папке расширений может отличаться);
  • или установка в окружение: uv tool install onec-hbk-bsl / pip install onec-hbk-bsl и затем onec-hbk-bsl в PATH.

Упаковывать ли бинарник в VSIX?

Подход Плюсы Минусы
Бинарник внутри VSIX (по платформам: darwin-arm64, linux-x64, …) Работает сразу после установки, без сети и без настройки; предсказуемая версия сервера. Нужно собирать отдельный VSIX на целевую ОС; размер пакета больше.
Только скачивание с Releases Меньший универсальный пакет; можно всегда тянуть последний билд с релиза. Первый запуск требует сети; возможны лимиты GitHub; версия должна совпадать с расширением.

Практическая рекомендация: для публикации в Marketplace оставить платформенные VSIX с вложенным бинарником (как сейчас в CI) — лучший UX. Скачивание с релиза — запасной путь и для пользователей без бинарника в пакете. Оба варианта в коде уже поддерживаются; приоритет у явного пути и вложенного bin/.


Настройки

Основные ключи (полный список — в package.json → contributes.configuration):

Ключ Назначение
onecHbkBsl.serverPath Путь к onec-hbk-bsl или onec-hbk-bsl.exe
onecHbkBsl.indexDbPath Путь к SQLite-индексу (пусто = по умолчанию)
onecHbkBsl.logLevel Уровень логов LSP
onecHbkBsl.diagnostics.enabled Включить диагностики при вводе
onecHbkBsl.diagnostics.select / ignore Список кодов правил
onecHbkBsl.format.indentSize Отступ при форматировании

Стандартный editor.formatOnType для bsl не запускает полное форматирование файла при каждом символе: у сервера единственный триггер — перевод строки (\n), и ответ — одна правка только отступа текущей строки. Если отключите editor.formatOnType, отступ после Enter будет считаться только эвристикой редактора (language-configuration.json), без уточнения от LSP.

language-configuration.json: indentationRules (fallback без LSP)

В VS Code это декларативные regex (документация): при вводе/переносе строк редактор подстраивает отступ, если строка совпала с increaseIndentPattern (следующая строка глубже) или decreaseIndentPattern (текущая — меньше). Для JS/TS в примерах Microsoft чаще смотрят на незакрытые { ( [; у BSL блоки — ключевые слова (Если…Тогда, КонецЕсли, #Область и т.д.), поэтому паттерны другие.

У многих грамматик BSL для VS Code в типичной поставке в language-configuration.json часто только folding, без indentationRules — автоотступ при Enter там в основном даёт редактор (копирование отступа, editor.autoIndent) и/или языковой сервер, а не отдельный богатый JSON.

В нашем расширении regex дополняют типичный стиль 1С: многострочное условие с Тогда на отдельной строке и конец Цикл на отдельной строке, плюс #Область / #КонецОбласти. Это не заменяет семантику _indent_at в LSP при включённом formatOnType, но улучшает поведение, если LSP недоступен или отключён format on type.


Сборка расширения (разработчики)

Из каталога vscode-extension/:

npm ci
npm run compile    # webpack → out/extension.js

Упаковка VSIX (локально) с тем же бинарником, что только что собрали — из корня репозитория (PyInstaller → vscode-extension/bin/ → webpack → vsce):

# один раз: зависимости расширения
cd vscode-extension && npm ci && cd ..

# свежий бинарник + VSIX (не вызывайте vsce без sync — попадёт старый bin/)
make vsix

Или вручную: make extension-bin (или make build и make sync-extension-bin), затем cd vscode-extension && npm run compile && npx @vscode/vsce package --no-dependencies -o onec-hbk-bsl-local.vsix.

Проверка типов без бандла:

npx tsc --noEmit -p ./

Репозиторий

Исходный код сервера, индексатор и CI:
https://github.com/mussolene/1c_hbk_bsl

  • Contact us
  • Jobs
  • Privacy
  • Manage cookies
  • Terms of use
  • Trademarks
© 2026 Microsoft