Skip to content

LevkinSergey/OneTerminal

Repository files navigation

OneTerminal

Веб-терминал (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С:Предприятие

Управление терминалом из 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() Завершение работы (заглушка)

Схема работы:

  1. Пользователь вводит команду в терминале
  2. Нажатие Enter (или вызов startOperation()) отправляет CustomEvent('click') с командой в detail.data
  3. 1С обрабатывает команду на своей стороне
  4. 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 в браузере.

About

Реализация терминала для интеграции в поле HTML документа внутри 1С

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages