Веб-терминал (xterm.js) для встраивания в поле HTML документа 1С:Предприятие.
Предоставляет интерактивный терминал внутри формы 1С. Управляется из 1С через window.appTo1C, отправляет команды обратно в 1С через DOM-события. Это только frontend — вся логика выполнения команд на стороне 1С.
- Полноценный терминал на xterm.js (v3.14.5) с автоподгонкой под размер контейнера (
fit) - Обнаружение ссылок в выводе (
xterm-addon-web-links) - Многострочный ввод с поддержкой навигации (ArrowLeft/ArrowRight, Home/End)
- История команд (ArrowUp/ArrowDown)
- Автодополнение по Tab:
- Одиночный Tab — дополнение до наибольшего общего префикса
- Двойной Tab (500 мс) — вывод списка доступных команд
- Редактирование: Backspace, Delete
- Поддержка IME (CJK-ввод через composition events)
- Локальная обработка команды
clear(очистка экрана без вызова 1С)
Управление терминалом из 1С через глобальный объект window.appTo1C:
| Метод | Назначение |
|---|---|
init(options) |
Инициализация терминала (путь, разделитель промпта) |
setPath(path) |
Обновить путь в промпте |
setInput(text) |
Установить текст в буфере ввода |
insertText(text) |
Вставить текст в позицию курсора |
clearInput() |
Очистить буфер ввода |
setCommonCommands(json) |
Установить список команд для автодополнения (общие) |
setLocalCommands(json) |
Установить список команд для автодополнения (локальные) |
startOperation() |
Отправить команду в 1С (аналог Enter) |
endOperation(log?) |
Вывести результат выполнения и показать новый промпт |
setBaseUrl(url) |
Установить <base href> для разрешения относительных URL |
close() |
Завершение работы (заглушка) |
Схема работы:
- Пользователь вводит команду в терминале
- Нажатие Enter (или вызов
startOperation()) отправляетCustomEvent('click')с командой вdetail.data - 1С обрабатывает команду на своей стороне
- 1С вызывает
endOperation(вывод)для отображения результата
При загрузке страницы вне 1С терминал инициализируется автоматически с пустым путём. Это позволяет разрабатывать и отлаживать интерфейс без запуска 1С.
npm start # Dev-сервер на порту 8084 с HMR
npm run build # Production-сборка (clean + webpack)
npm run format # Форматирование Prettier
npm run lint # ESLint (--max-warnings=0)
npm run tscheck # Проверка типов TypeScript (noEmit)
npm test # Jest (не настроен)
npm run test:e2e # Playwright e2e-тестыnpm install
npm run buildРезультат — dist/ (один JS-бандл + один CSS-файл).
npm startОткрыть http://localhost:8084 в браузере.