百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
B

bsl_console

> 编程语言
开源

Консоль для 1С 8.3 (Управляемые и формы)

380 stars0 点赞2 次浏览
访问官网GitHub

工具介绍

Консоль для 1С 8.3 (Управляемые и формы)

Консоль кода для 1С 8.3 (Управляемые и обычные формы)

Для работы внутри 1С требуется версия платформы не ниже 8.3.24 (обновлённый WebKit)

Для работы с платформами от 8.3.14.1565 до 8.3.23.2157 следует использовать архивные ветки:

  1. webpack_0_20 - ES-модули, с возможностью сборки в один файл (работает в linux)
  2. develop_0_20 - AMD-модули, набор файлов

Как работает?

На основе Monaco editor, версии 0.55.1

Основные возможности

  • Подсветка синтаксиса языка 1С
  • Подсветка языка запросов
  • Автокомплит для глобальных перечислений и функций
  • Автокомплит для метаданных (Справочники, Документы и т.п.)
  • Автокомплит для объектов метаданных (СправочникСсылка, ДокументОбъект и т.п.)
  • Подсказка параметров конструкторов и методов
  • Подсказка для типов
  • Вставка готовых блоков кода (сниппеты)
  • Вызов конструктора запроса и конструктора форматной строки
  • Загрузка пользовательских функций и сниппетов
  • Выделение строки, при выполнении которой произошла ошибка
  • Сворачивание циклов, условий и текстов запросов
  • Всплывающие подсказки для глобальных функций, перечислений и классов
  • Подсказки через точку для реквизитов типа справочники/документы
  • Подсказки через точку для объектов типа ТаблицаЗначений/Массив/РезультатЗапроса/ДвоичныеДанные и др., в том числе для объектов, полученных через методы других объектов.
  • Определение типа переменной по коду: конструктор Новый, присваивание, результат метода или функции
  • Подсказка имён ключей структуры и колонок таблицы значений, заданных в коде
  • Объявление типа комментарием в синтаксисе строгой типизации ЕДТ
  • Подсказки для источников и полей в режиме запроса

Публикации

  • На Инфостарте

Сборка

Для разработки и сборки необходим установленный node.js.
Установка
npm install
Разработка и отладка с помощью встроенного сервера
npm run debug

Помимо самого редактора (http://localhost:9000/), dev-сервер сразу отдаёт страницы тестов: http://localhost:9000/test.html (встроенный язык) и http://localhost:9000/test_query.html (язык запросов).

Сборка финального файла ./dist/index.html
npm run build
Сборка single-file (один самодостаточный HTML для поля 1С 8.3.27+)

Собирает ./dist/index.html как единый самодостаточный файл без внешних ресурсов: JS, CSS, шрифты, картинки, иконки дерева и воркер Monaco инлайнятся в сам HTML (data:/blob:). Это нужно, чтобы загружать редактор в «Поле HTML документа» 1С как текст и обойти предупреждение безопасности платформы 8.3.27+ «ПолеHTMLДокумента пытается открыть локальный файл» (оно возникает на любой ресурс, читаемый с диска).

npm run build:single

После сборки в ./dist/ остаётся ровно один файл index.html. Проверить отсутствие внешних ссылок можно отдельно:

npm run check:single

Обычная сборка (npm run build) при этом не меняется.

Сборка сжатого single-file (один самодостаточный HTML для поля 1С 8.3.27+ меньшего размера)
npm run build:pack
Опции сборки

По умолчанию штатный интерфейс Monaco (поиск, контекстные меню, панель inline-подсказок и другие виджеты) собирается на русском языке. Английские варианты основных команд:

npm run debug:en
npm run build:en
npm run build:single:en
npm run build:pack:en

То же значение можно передать webpack напрямую: --env monacoLocale=en. Поддерживаются только ru и en; локаль фиксируется на время жизни HTML-документа. Функция switchLang переключает язык программных подсказок BSL и не меняет штатный интерфейс Monaco.

Для передачи дополнительных опций, используемых при создании редактора, можно воспользоваться следующей командой:

npm run build -- --env customOptions="automaticLayout: true, someOption: false"

Опции подставляются в вызов editor.create() (маркер customOptions в src/editor.js). Значение — через --env (webpack-cli 5+ не принимает произвольные флаги вроде --customOptions).

Как запускать?

  1. Собрать проект и открыть в браузере файл ./dist/index.html, либо воспользоваться ссылкой
  2. Для запуска в 1С можно использовать обработку console.epf, выкладываемую в релизах или сделать свою.
  3. Редактор используется на сайте Paste1C.
  4. На платформе 8.3.27+ (с включённой «Защитой от опасных действий») собрать single-file (npm run build:single) и загрузить содержимое ./dist/index.html в «Поле HTML документа» как текст — так платформа не выдаёт предупреждение об открытии локального файла.

Функции для взаимодействия с 1С:Предприятием

Работа с текстом (кодом)

Функция Описание
setText Устанавливает переданный текст в текущую или определенную позицию
updateText Полностью заменяет весь текст редактора, игнорируя при этом режим Только просмотр
setContent Устанавливает текст редактора. Игнорирует режим Только просмотр и не генерирует событие EVENT_CONTENT_CHANGED
getText Возвращает весь текст из окна редактора
eraseText Удаляет весь текст редактора
selectedText Получает или заменяет выделенный текст
getSelection Возвращает selection, аналог GetTextSelectionBounds
setSelectionByLength Устанавливает выделение, аналог первой сигнатуры SetTextSelectionBounds
setSelection Устанавливает выделение, аналог второй сигнатуры SetTextSelectionBounds
getLineCount Возвращает количество строк
getLineContent Возвращает содержимое строки по её номеру, аналог GetLine
setLineContent Устанавливает содержимое строки по её номеру, аналог ReplaceLine
getCurrentLineContent Возвращает содержимое текущей строки
getCurrentLine Возвращает номер текущей строки
getCurrentColumn Возвращает номер текущей колонки
getCurrentWord Возвращает текущее слово и его позици
getModuleMethods Возвращает JSON-описание процедур и функций модуля; список перехода открывается по CTRL+ALT+P
getQuery Определяет текст запроса в текущей позиции и возвращает его вместе с областью текста
getFormatString Определяет текст форматной строки в текущей позиции
findText Возвращает номер строки, в которой находится заданный текст
addComment Добавляет комментарий к текущему блоку кода
removeComment Удаляет комментарий у текущего блока
addWordWrap Добавляет перенос строки к текущему блоку
removeWordWrap Удаляет перенос строки у текущего блока
insertLine Вставляет текст в строку с указанным номером
addLine Добавляет новую строку с указанным текстом
deleteLine Удаляет строки с указанным номером
getPositionOffset Возвращает координаты текущей позиции курсора
jumpToBracket Переход к парной скобке CTRL+[]
selectToBracket Выделяет скобки и текст между ними SHIFT+ALT+B
formatDocument Форматирование выделенного фрагмента кода или всего кода ALT+SHIFT+F
insertSnippet Вставляет переданный сниппет в текущую позицию редактора
revealDefinition Переход к определению переменной, функции или поля запроса F12
peekDefinition Быстрый просмотр определения переменной, функции или поля запроса CTRL+F12
getDifferences Возвращает список различий в режиме сравнения
hideBlocks Сворачивает переданные диапазоны строк в обычном редакторе
showHiddenBlocks Раскрывает области, свернутые функцией hideBlocks

Вкладки

Функция Описание
createTab Создаёт и выбирает новую независимую вкладку с редактором
closeCurrentTab Закрывает текущую вкладку или очищает единственную вкладку
getCurrentTab Возвращает название и нулевой индекс текущей вкладки

Управление режимом работы / настройками

Функция Описание
init Инициализация редактора с передачей версии платформы и имени пользователя
setLanguageMode Переключение режимов редактора (встроенный язык, язык запросов и т.п.)
setContextMode Установка контекста редактора (сервер / тонкий клиент)
getContextMode Получение текущего контекста редактора (сервер / тонкий клиент)
setTheme Установка темы редактора bsl-white, bsl-white-query, bsl-dark, bsl-dark-query, bsl-edt-white, bsl-edt-dark
setReadOnly Устанавливает/снимает режим Только просмотр
getReadOnly

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

JavaScript

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言