Текстовый пользовательский интерфейс (TUI) для сценарного языка OneScript

14.11.25

Разработка - Инструментарий разработчика

Представляю кроссплатформенную библиотеку для разработки приложений с текстовым пользовательским интерфейсом (TUI) для сценарного языка OneScript. Она использует модель программирования, похожую на классические Desktop GUI (например, WinForms или WPF), но целиком работает в текстовом режиме. Возможно это ностальгия по DOS временам, но в наше время это так же и повышенная скорость отрисовки интерфейса, и легкость в написании скрипта. Создавайте интуитивно понятные окна, кнопки, поля ввода и выпадающие списки. Благодаря OneScript инструмент будет доступен даже новичкам без долгого обучения.

А кто из вас ещё помнит Norton Commander, Turbo Pascal IDE, DOS-программы? Да, да, это устаревшая технология. Стоит ли применять её сейчас? Но ведь многие администраторы предпочитают использовать CLI (Command Line Interface) - интерфейс командной строки. И время от времени кто нибудь да посетует - "Вот бы интерактива добавить, выбрать файл, выбрать значение из списка". Есть, конечно, для этого GUI (Graphical User Interface) - графический пользовательский интерфейс, но он "тяжеловесен". 

TUI - это "золотая середина" между суровым CLI и тяжёлым GUI. Он даёт удобство взаимодействия там, где графика невозможна или нецелесообразна, сохраняя скорость, портативность и низкую нагрузку на систему. Попробуйте ещё один инструмент для OneScript, вот эту разработку. При создании его так же имелся в виду и образовательный аспект. Обучение "от простого к сложному" опирается на когнитивные механизмы усвоения знаний. OneScript для этого по моему подходит идеально.

 

Для кого это решение может пригодиться?

  • разработчикам, желающим создать удобный консольный интерфейс без перехода на GUI;
  • разработчикам, которые создают интерактивные инструменты для себя и команды, стремящимся автоматизировать рутину с удобным интерфейсом;
  • командам, нуждающимся в кросс-платформенном TUI-решении для администрирования, мониторинга или настройки;
  • тем, кто ищет альтернативу традиционным CLI-приложениям с минимальным потреблением ресурсов;
  • всем, кто хочет сделать свои консольные скрипты и программы по-настоящему профессиональными и удобными;
  • и не забываем про возможность обучения программированию и работе с терминалом (для самых маленьких).

 

Ключевые преимущества

1. Кросс-платформенность.

2. Богатый набор элементов управления.  Вот некоторые из основных классов: 

  • ВыборЦвета (ColorPicker)    Выбор цвета из палитры;
  • Дерево (TreeView)    Древовидный элемент с ветвями;
  • Диалог (Dialog)    Окно, которое расположено по центру и содержит несколько кнопок;
  • ДиалогОткрытия (OpenDialog)    Окно для выбора файлов или каталогов;
  • ДиалогСохранения (SaveDialog)    Окно для сохранения файлов;
  • Индикатор (ProgressBar)    Индикатор выполнения;
  • Кнопка (Button)    Элемент, который вызывает действие;
  • КонтекстноеМеню (ContextMenu)    Всплывающее меню;
  • Математика (Math)    Предоставляет константы и статические методы математических функций;
  • Надпись (Label)    Отображает строку в заданной позиции;
  • Окно (Window)    Элемент с границами и названием сверху;
  • ОкноСообщений (MessageBox)    Модальное сообщение с вариантами действий;
  • ПанельВкладок (TabView)    Элемент с вкладками;
  • ПанельМеню (MenuBar)    Панель меню с каскадными меню;
  • Переключатель (RadioGroup)    Группа меток с индикатором выбора;
  • ПолеВвода (TextField)    Однострочное поле для ввода текста;
  • ПолеВремени (TimeField)    Элемент редактирования времени;
  • ПолеВыбора (ComboBox)    Раскрывающийся список элементов;
  • ПолеДаты (DateField)    Элемент редактирования даты;
  • Прокручиваемый (ScrollView)    Элемент управления с полосами прокрутки;
  • РамкаГруппы (FrameView)    Контейнерная рамка вокруг содержимого;
  • СписокЭлементов (ListView)    Прокручиваемый список данных;
  • СтрокаСостояния (StatusBar)    Элемент, который привязан к нижней части элемента верхнего уровня;
  • Таблица (TableView)    Просмотр табличных данных;
  • Таймер (Timer)    Возможность создания повторяющихся событий;
  • Текстовый (TextView)    Многострочное текстовое поле для редактирования;
  • Уведомление (Balloons)    Аналог окна сообщений, но с интервалом для автоматического закрытия;
  • Флажок (CheckBox)    Переключатель.

3. Гибкая система компоновки. Поддерживается:

  • абсолютное и относительное позиционирование;
  • процентные размеры;
  • автоматическое заполнение пространства;
  • центрирование.

4. Поддержка ввода.  Обрабатывает:

  • клавиатурные события (включая сочетания клавиш);
  • события мыши (в поддерживающих эмуляторах);
  • перетаскивание (ограниченная поддержка).

5. Цвета. Система цветовых схем позволяет настраивать внешний вид интерфейса под нужды проекта.
6. Событийная модель. Четкая и привычная модель событий для реакции на действия пользователя.

 

Технические детали

Библиотека применима к OneScript 1.x. Исходный код доступен на github (OneScriptTerminalGui). Там же найдете ссылку на документацию (Справка). Документация содержит подробные примеры. 
Проверка выполнялась на OneScript v1.8.4.5 в среде Windows 10 и Linux Mint 20.3 (терминал - "mate-terminal").

 

Пример кода

Условно можно обозначить два варианта использования библиотеки.

Первый - это работа внутри приложения. Вы пишите код сценария на языке OneScript, запускаете сценарий на исполнение в окне терминала и при этом вся информация для пользователя может быть показана только средствами элементов интерфейса. Командная строка не видна, она закрыта приложением. При закрытии приложения закроется и окно терминала.

Второй вариант - вызов интерактивных диалогов или таблиц и другой информации как дополнительная возможность по ходу выполнения вашего основного сценария. Вы при этом остаетесь в командной строке и видите результат например метода Сообщить() непосредственно. При закрытии приложения окно терминала не закроется.

Вот как можно реализовать этот второй вариант в коде. Содержимое основного сценария ПримерGUI.os

Перем ТекПуть;

Процедура ОткрытьДиалог(параметр1) Экспорт
	Контекст = Новый Структура();
	Контекст.Вставить("МояСтруктура", параметр1);
	ЗагрузитьСценарий(ОбъединитьПути(ТекПуть,"ДиалогОткрытия.os"), Контекст);
КонецПроцедуры

ТекПуть = Новый Файл(ТекущийСценарий().Источник).Путь;
МояСтруктура = Новый Структура("Результат", "Файл не выбран");
МассивПараметров = Новый Массив(1);
МассивПараметров[0] = МояСтруктура;
Задание = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ОткрытьДиалог", МассивПараметров);
Задание.ОжидатьЗавершения();
Сообщить("Результат = " + МояСтруктура.Результат);
Приостановить(2000);
Задание = ФоновыеЗадания.Выполнить(ЭтотОбъект, "ОткрытьДиалог", МассивПараметров);
Задание.ОжидатьЗавершения();
Сообщить("Результат = " + МояСтруктура.Результат);

Пока Истина Цикл
	Приостановить(1000);
КонецЦикла;

Содержимое сценария для интерактивного выбора файла ДиалогОткрытия.os (должен лежать рядом с основным сценарием)

Перем ТФ;

Процедура ДиалогЗакрыт() Экспорт
	Если ТФ.АргументыСобытия.Файлы.Количество() > 0 Тогда
		МояСтруктура.Результат = ТФ.АргументыСобытия.Файлы.Получить(0);
	КонецЕсли;
	ТФ.Завершить();
КонецПроцедуры

ПодключитьВнешнююКомпоненту("OneScriptTerminalGui.dll");
ТФ = Новый ТерминалФормыДляОдноСкрипта();

ДиалогОткрытия1 = ТФ.Верхний.Добавить(ТФ.ДиалогОткрытия("Диалог открытия", "Сообщение"));
ДиалогОткрытия1.ДиалогЗакрыт = ТФ.Действие(ЭтотОбъект, "ДиалогЗакрыт");
ДиалогОткрытия1.ПутьКаталога = "C:\";
ДиалогОткрытия1.ПоказатьДиалог();

ТФ.Запуск();

Подобным образом можно организовать любые диалоги с пользователем и вывод различной информации в удобном виде, таблиц, списков, текста и т.д.

 

Заключение

Я портной. Шью одежды для OneScript. Сшил два пиджака (OneScriptForms и OneScriptDeclarativeForms). И вот этот спортивный костюмчик OneScriptTerminalGui
Если пуговицу не туда пришил, Вы мне скажите.
У меня в мастерской есть ещё материал, нитки, иголки для пошивки нового фрака. Как сошью, обязательно напишу.

Вступайте в нашу телеграмм-группу Инфостарт

См. также

Инструментарий разработчика Роли и права Запросы СКД Программист Руководитель проекта 1С v8.3 Управляемые формы Запросы Система компоновки данных Платные (руб)

Инструменты для разработчиков 1С 8.3: Infostart Toolkit. Автоматизация и ускорение разработки на управляемых формах. Легкость работы с 1С.

15500 руб.

02.09.2020    225740    1224    415    

1071

Инструментарий разработчика Чистка данных Свертка базы Инструменты администратора БД Системный администратор Программист Руководитель проекта 1С v8.3 1С:ERP Управление предприятием 2 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 Россия Платные (руб)

Инструмент представляет собой обработку для проведения свёртки или обрезки баз данных. Работает на ЛЮБЫХ конфигурациях (УТ, БП, ERP, УНФ, КА и т.д.). Поддерживаются серверные и файловые базы, управляемые и обычные формы. Может выполнять свертку одновременно в несколько потоков. А так же автоматически, без непосредственного участия пользователя. Решение в Реестре отечественного ПО

14400 руб.

20.08.2024    48026    268    138    

243

Инструментарий разработчика Нейросети Платные (руб)

Первые попытки разработки на 1С с использованием больших языковых моделей (LLM) могут разочаровать. LLMки сильно галлюцинируют, потому что не знают устройства конфигураций 1С, не знают нюансов синтаксиса. Но если дать им подсказки с помощью MCP, то результат получается кардинально лучше. Далее в публикации: MCP для поиска по метаданым 1С, справке синтакс-помошника и проверки синтаксиса.

9900 руб.

25.08.2025    22122    56    9    

60

Пакетная печать Печатные формы Инструментарий разработчика Программист 1С v8.3 Запросы 1С:Зарплата и кадры бюджетного учреждения 1С:ERP Управление предприятием 2 1С:Управление торговлей 11 1С:Библиотека стандартных подсистем Платные (руб)

Расширение для создания и редактирования печатных форм в системе 1С:Предприятие 8.3. Благодаря конструктору можно значительно снизить затраты времени на разработку печатных форм, повысить качество и прозрачность разработки, а также навести порядок в многообразии корпоративных печатных форм.

22200 руб.

06.10.2023    29204    77    30    

104

Инструменты администратора БД Инструментарий разработчика Роли и права Программист 1С v8.3 1C:Бухгалтерия Россия Платные (руб)

Расширение позволяет без изменения кода конфигурации выполнять проверки при вводе данных, скрывать от пользователя недоступные ему данные, выполнять код в обработчиках. Не изменяет данные конфигурации, легко устанавливается практически на любую конфигурацию на управляемых формах.

16000 руб.

10.11.2023    20633    84    42    

95

Работа с интерфейсом Анализ учета Мониторинг 1С v8.3 8.3.14 1C:Бухгалтерия 1С:Бухгалтерия 3.0 1С:Библиотека стандартных подсистем 1С:ERP Управление предприятием 2 1С:Управление холдингом 1С:Зарплата и Управление Персоналом 3.x 1С:Комплексная автоматизация 2.х 1С:Управление нашей фирмой 3.0 1С:Управление торговлей 11 Платные (руб)

Создайте свой функциональный интерфейс в любой конфигурации 1С с помощью расширения Infostart Dashboard. Настраивайте панели виджетов с метриками, индикаторами и показателями на начальном экране. Узнайте возможность внедрения подсистемы у себя в конфигурации с помощью бесплатной обработки "Анализ внедрения подсистемы 1С Infostart Dashboard"!

28800 руб.

27.03.2025    52946    29    24    

41

Инструментарий разработчика Программист 1С v8.3 Платные (руб)

Инструмент для написания и отладки кода в режиме «1С:Предприятие». Представляет собой консоль кода с возможностью пошаговой отладки, просмотра значений переменных любых типов, использования процедур и функций, просмотра стека вызовов, вычисления произвольных выражений на встроенном языке в контексте точки останова, синтаксического контроля и остановки по ошибке. В консоли используется удобный редактор кода с подсветкой, контекстной подсказкой, возможностью вызова конструкторов запроса и форматной строки.

9500 руб.

17.05.2024    41215    151    57    

190
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. SerVer1C 993 14.11.25 15:16 Сейчас в теме
Вспомнил времена Turbo Pascal
2. Alxby 1142 14.11.25 16:30 Сейчас в теме
Ассоциации скорее не с Turbo Pascal, а с Turbo Vision ))
Для отправки сообщения требуется регистрация/авторизация