1
0
mirror of https://github.com/salexdv/bsl_console.git synced 2024-11-24 08:33:29 +02:00
Консоль кода для 1С 8.3 (Управляемые и обычные формы)
Go to file
2020-12-17 20:49:43 +03:00
src Работа над подсказками для полей таблиц в запросе (доработка структуры метаданных под использование в запросах) 2020-12-17 20:49:43 +03:00
.gitignore Подсказки через точку для реквизитов типа справочники/документы 2020-07-31 11:05:35 +03:00
CHANGELOG.md changelog 2020-09-30 22:13:06 +03:00
LICENSE Initial commit 2020-07-16 21:40:27 +03:00
README.md Регистрация синтаксиса языка запросов и простейшие подсказки по его конструкциям. Переключение между режимом редактирования запроса и режимом редактирования кода. 2020-09-28 11:44:04 +03:00

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

Для работы внутри 1С требуется версия платформы не ниже 8.3.14.1565

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

На основе Monaco editor

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

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

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

  1. Для запуска в браузере достаточно открыть index.html из каталога src, либо воспользоваться ссылкой
  2. Для запуска в 1С можно использовать обработку console.epf, выкладываемую в релизах или сделать свою.
  3. Редактор используется на сайте Paste1C.

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

Функция Описание
setText Устанавливает переданный текст в текущую или определенную позицию
updateText Полностью заменяет весь текст редактора, игнорируя при этом режим Только просмотр
getText Возвращает весь текст из окна редактора
eraseText Удаляет весь текст редактора
getQuery Определяет текст запроса в текущей позиции и возвращает его вместе с областью текста
getFormatString Определяет текст форматной строки в текущей позиции
updateMetadata Обновляет через JSON структуру метаданных (Справочники/Документы/пр.)
updateSnippets Обновляет пользовательские сниппеты
updateCustomFunctions Обновляет пользовательские функции
setTheme Установка темы редактора bsl-white, bsl-white-query, bsl-dark, bsl-dark-query
setReadOnly Устанавливает/снимает режим Только просмотр
switchLang Переключает язык подсказок с английского на русский и обратно
addComment Добавляет комментарий к текущему блоку кода
removeComment Удаляет комментарий у текущего блока
markError Индикация ошибки в указанной строке
findText Возвращает номер строки, в которой находится заданный текст
init Инициализация редактора с передачей версии платформы
enableQuickSuggestions Включает/выключает режим быстрых подсказок
minimap Включает/выключает отображение карты кода
enableModificationEvent Включает/выключает генерацию события, возникающего при изменении содержимого редактора
addContextMenuItem Регистрирует пользовательский пункт контекстного меню и связанное с ним событие
switchQueryMode Переключение между режимом запроса и режимом редактирования кода

События, генерируемые редактором для 1С:Предприятия

Событие Описание
EVENT_QUERY_CONSTRUCT При выборе пункта меню "Конструктор запросов". Возвращает текст и позицию запроса
EVENT_FORMAT_CONSTRUCT При выборе пункта меню "Конструктор форматной строки". Возвращает текст и позицию фор.строки
EVENT_CONTENT_CHANGED При любом изменении содержимого редактора. Вкл/откл через enableModificationEvent
EVENT_XXX При выборе пользовательского пункта меню. addContextMenuItem('Мой пункт', 'EVENT_MY')

Проверенные платформы:

  • 8.3.15.1830
  • 8.3.16.1148
  • 8.3.17.1386
  • 8.3.18.891

Известные проблемы:

  • На платформах до 8.3.16 могут не работать горячие клавиши CTRL+C, CTRL+V и CTRL+Z и т.п.
  • На платформах до 8.3.18 команды копировать/вставить работают только в пределах окна редактора
  • В веб-клиенте недоступно любое взаимодействие редактора и 1С. Можно попробовать только набор кода. Иногда для этого в браузере надо предварительно открыть данную ссылку
  • Работа в linux на данный момент не поддерживается.
  • Из-за особенностей реализации подсказка через точку для реквизитов ссылочного типа работает только тогда, когда подсказываемый реквизит выбран через Enter

Благодарности

Выражаю благодарность команде 1c-syntax и их проекту для VSCode за подробное описание внутренних конструкций языка в JSON, а также за коллекцию сниппетов.