Декларативные формы для сценарного языка OneScript

23.01.25

Разработка - Работа с интерфейсом

Графический интерфейс с применением веб-технологий в коллекцию инструментария сценарного языка OneScript. Библиотека создает десктопное приложение имеющее декларативный пользовательский интерфейс (GUI), построенный веб-браузером. Возможности веб-технологий по представлению информации огромны. Эти возможности соответственно добавляются и к сценариям OneScript.

Цель разработки

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

 

Кратко о возможностях

  • Синтаксис совпадает с синтаксисом 1С. Программисту 1С всё будет знакомо и привычно.
  • Задействован язык гипертекстовой разметки HTML. Теги html представлены классами со свойствами, событиями и методами. Для установки значений возможно (но не обязательно) использование синтаксиса html.
  • Задействован язык иерархических правил CSS. CSS-свойства представлены как свойства элементов формы. Так же можно просто подключить в сценарий файл CSS-стилей.
  • Задействован язык сценариев веб-страниц JavaScript. Так же можно просто подключить в сценарий файл js скрипта.
  • Обработка событий формы.
  • Создание анимации объектов.
  • Есть класс Математика (Math) с набором основных функций.
  • Создание главного меню окна и контекстного меню для объектов.
  • Рисование на объекте Холст (Canvas).
  • Использование всей палитры цвета для элементов (по имени цвета или через задание rgb значений).
  • Создание таблиц.
  • Есть таймер для отсчета промежутков времени.
  • Создание значка в системном лотке.
  • Вывод сообщений для пользователя и всплывающих уведомлений.
  • И многое другое, что возможно представить на веб-странице веб-технологиями.

 

Немного кода

ПодключитьВнешнююКомпоненту("ВашКаталогНаДиске\DeclarativeForms.dll");
ДФ = Новый ДекларативныеФормы();
Форма1 = ДФ.Форма;
Форма1.НачальнаяШирина = 350;
Форма1.НачальнаяВысота = 100;
Форма1.Значок = "icon2.png";

РаскрываемыйБлок1 = Форма1.ДобавитьДочерний(ДФ.РаскрываемыйБлок());
РаскрываемыйБлок1.Стиль.ЦветФона = ДФ.Цвет.БледноБирюзовый;

ЗаголовокРаскрываемогоБлока1 = ДФ.ЗаголовокРаскрываемогоБлока();
РаскрываемыйБлок1.ДобавитьДочерний(ЗаголовокРаскрываемогоБлока1);
ЗаголовокРаскрываемогоБлока1.Текст = "Жители деревни Простоквашино";

НеупорядоченныйСписок1 = РаскрываемыйБлок1.ДобавитьДочерний(ДФ.НеупорядоченныйСписок());

ЭлементСписка1 = НеупорядоченныйСписок1.ДобавитьДочерний(ДФ.ЭлементСписка());
ЭлементСписка1.Текст = "Кот Матроскин";
ЭлементСписка2 = НеупорядоченныйСписок1.ДобавитьДочерний(ДФ.ЭлементСписка());
ЭлементСписка2.Текст = "Пёс Шарик";
ЭлементСписка3 = НеупорядоченныйСписок1.ДобавитьДочерний(ДФ.ЭлементСписка());
ЭлементСписка3.Текст = "Птица Галчонок";

РаскрываемыйБлок1.Открыт = Истина;

Форма1.Открыть();

Как видите всё просто. Результат можно увидеть на третьем рисунке вверху публикации.

 

Ссылки

Исходный код доступен на github (OneScriptDeclarativeForms). 

Документация находится здесь и она содержит подробные примеры и проверочные тесты.

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

OneScript GUI интерфейс форма

См. также

Работа с интерфейсом Анализ учета Мониторинг 1С:Предприятие 8 1С 8.3 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"!

29280 руб.

27.03.2025    68102    41    29    

54

Разработка Инструментарий разработчика Работа с интерфейсом Адаптация типовых решений Нейросети 1C:Бухгалтерия 1C:ERP 1С:ЗУП 1С:КА 1С:УНФ 1С:УТ 1С:Розница 1С:ДО 1С:ERP Управление предприятием 2 Платные (руб)

Разработка "Дизайнер форм 1С" реализована в виде расширения 1С и является универсальным инструментом для разработки прототипа форм с целью демонстраций, технических заданий и т.д. Без участия разработчика с возможностью экспорта в файл внешней обработки и генерации формы используя искусственный интеллект.

36600 руб.

28.08.2025    5317    2    2    

5

Консолидация данных Работа с интерфейсом Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Управление нашей фирмой 3.0 1С:Розница 3.0 1C:ERP Узбекистан Беларусь Кыргызстан Россия Казахстан Платные (руб)

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

6088 руб.

17.10.2025    1394    3    0    

2

Работа с интерфейсом Системный администратор Программист 1С:Предприятие 8 1C:Бухгалтерия Платные (руб)

Расширение «Динамическое управление доступом к элементам форм объектов 1С8» предназначен для обеспечения возможности оперативного управления видимостью и доступностью элементов форм документов и справочников продуктов фирмы «1С» «1С:Предприятие 8». Решение универсальное, встраивается в любую конфигурацию с минимальными доработками, что позволяет без проблем обновлять типовые решения.

6100 руб.

14.01.2016    59252    21    25    

46

Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия 1С:ERP Управление предприятием 2 Платные (руб)

Обработка предназначена для создания и управления дашбордами (виджетами) в 1С.

5246 руб.

29.06.2020    23551    33    6    

52

Работа с интерфейсом Программист Стажер 1С:Предприятие 8 Бесплатно (free)

Это инструкция по дизайну форм в среде 1С. Гайд охватывает рекомендации и стандарты для оптимизации пользовательского интерфейса. В гайде содержатся указания по использованию элементов интерфейса, включая как основные, так и продвинутые аспекты. Предоставляются также примеры и антипримеры для наглядного понимания принципов дизайна

20.08.2024    46239    mrXoxot    44    

138

Работа с интерфейсом Программист 1С:Предприятие 8 Бесплатно (free)

Пример простого и симпатичного прогресс-бара в динамическом списке, без картинок, используя редактирование запроса.

27.05.2024    25649    smielka    38    

113

Инструментарий разработчика Работа с интерфейсом Программист 1С:Предприятие 8 1C:Бухгалтерия Абонемент ($m)

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

3 стартмани

10.04.2023    16982    180    acces969    31    

132
Вознаграждение за ответ
Показать полностью
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. aximo 2573 23.01.25 13:07 Сейчас в теме
покажите больше примеров
4. sikuda 682 25.01.25 23:36 Сейчас в теме
(1) Когда сама 1С не желает использовать браузерные технологии возникают велосипеды
Кратко что может webgl:
https://madebyevan.com/webgl-water/
2. ahyahy 140 23.01.25 14:47 Сейчас в теме
(1)
покажите больше примеров

Вот здесь больше скриншотов
https://ahyahy.github.io/OneScriptDeclarativeForms/screenshot.html
Что то попрезентабельнее я не делал.
Кое что можно найти в справке в разделе-Дополнения
https://ahyahy.github.io/OneScriptDeclarativeForms/OSDFormsRu/index.html
Раздел -Дополнения-Примеры тестирования содержит код тестов на каждое свойство, метод, событие. Но
чтобы увидеть результат их нужно запускать.
Веб-технологии, Вы можете представить в программе всё, что хотите.
3. ahyahy 140 23.01.25 14:51 Сейчас в теме
5. alex_bob 259 07.02.25 12:17 Сейчас в теме
Под Ubuntu не запускается
{Модуль /home/admin_2/DeclForms/Стартовый.os / Ошибка в строке: 2 / Внешнее искл
 чение (System.TypeInitializationException): The type initializer for 'osdf.DeclarativeForms' threw an exception.}


Скрипт:
ПодключитьВнешнююКомпоненту("/home/admin_2/DeclForms/2_2_0_0/DeclarativeForms.dll");
ДФ = Новый ДекларативныеФормы();
// ДФ.nwПуть = "/home/admin_2/Загрузки/nwjs-v0.89.0-linux-x64/nw";

Форма1 = ДФ.Форма;
Форма1.Открыть();


Версия onescript 1.9.2.10
6. ahyahy 140 07.02.25 18:26 Сейчас в теме
(5) Перед публикацией тестирование проводил в ОС:
-Windows 10
-Linux Mint 20.3
-Альт Рабочая станция 10.4
-Astra Linux Common Edition Ядро: 5.15.0-70-generic
oscript - 1.8.4.5

Попробовал сделать запуск согласно Ваших условий.
Скачал nwjs-v0.89.0-linux-x64
Скачал с github из релиза DeclarativeForms.dll 2.2.0.0
Установил oscript - 1.9.2.10
Система Linux Mint 20.3
Работает.
Наверное понадобится дополнительная информация и оперативнее будет общаться в телеграмм: мои координаты в справке к формам.
Прикрепленные файлы:
7. ahyahy 140 07.02.25 19:45 Сейчас в теме
(5) Вы закомментировали строку
// ДФ.nwПуть = "/home/admin_2/Загрузки/nwjs-v0.89.0-linux-x64/nw";
В этом случае библиотека будет за файлом nw обращаться к каталогу
/nwjslin который должен лежать рядом со стартовым сценарием. Это задано по умолчанию.
Хотя в случае ошибки с расположением файла nw исключение возникло бы на строке
Форма1.Открыть();
Но судя по соообщению об ошибке, она возникает в статическом конструкторе.
Можно попробовать обернуть тело конструктора в блок Try-Catch и получить больше данных об ошибке.
В репозитории на github зайдите в подкаталог tests
Там я положил TryDeclarativeForms.dll. Может мы получим дополнительную информацию об ошибке.
8. ahyahy 140 08.02.25 20:32 Сейчас в теме
(5) Проверил на ubuntu-mate-24.10
Действительно, на этой сборке не работает. Причину определил, ищу решение.
9. ahyahy 140 09.02.25 18:03 Сейчас в теме
(5) Решение в доустановке библиотек mono. Нужно установить пакет mono-complete.
Я установил mono-complete версию 6.12.0.199+dfsg-1 и всё заработало.
Прикрепленные файлы:
10. alex_bob 259 10.02.25 08:49 Сейчас в теме
(9) Спасибо. У меня стоит Ubuntu 24.04. видимо поэтому установился пакет mono-complete 6.8.0.105+dfsg-3.2. Все примеры запускаются, но в консоли выскакивают ошибки:
0210/084438.663521:ERROR:elf_dynamic_array_reader.h(64)] tag not found
[1288612:1288612:0210/084438.830774:ERROR:object_proxy.cc(576)] Failed to call method: org.freedesktop.ScreenSaver.GetActive: object_path= /org/freedesktop/ScreenSaver: org.freedesktop.DBus.Error.NotSupported: This method is not implemented

Анимации огонь. Надо подумать где применить.
11. ahyahy 140 10.02.25 15:22 Сейчас в теме
(10)В консоль жалуется браузер Chrome, который формы в нашем окне формирует. У него своя внутренняя работа происходит. Это не ошибки форм. На это можно не обращать внимания. В разных средах набор этих сообщений от Chrome разный. Планирую в следующих релизах убрать сообщения от Chrome и тогда останутся сообщения только от сценариев.
12. alex_bob 259 11.02.25 08:48 Сейчас в теме
Хорошо, спасибо, изучаю. Жаль, не хватает по фронтенду знаний и опыта.
13. alex_bob 259 12.02.25 11:12 Сейчас в теме
При выполнении примера из документации по классу ОкноСообщений окно сообщений в таком виде:
Прикрепленные файлы:
14. alex_bob 259 12.02.25 11:13 Сейчас в теме
(13) Это и в Виндовс и в Линукс
15. ahyahy 140 12.02.25 16:22 Сейчас в теме
(13) Моя недоработка. Для создания окон сообщений и уведомлений библиотека использует файл-шаблон mes.html
Он должен создаваться автоматически при его отсутствии рядом со стартовым сценарием. Всё дело оказалось в том,
что он у меня всегда лежал в нужном месте и я не проверил случай с его отсутствием. В следующем релизе,
который через недельку будет, ошибку устраню. А пока по этой ссылке
https://github.com/ahyahy/OneScriptDeclarativeForms/tree/main/tests
лежит недостающий файл mes.html. Поместите его рядом со стартовым сценарием. Это исправит и работу класса Уведомления, который использует этот же шаблон.
Для отправки сообщения требуется регистрация/авторизация