Декларативные формы для сценарного языка 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С v8.3 Управляемые формы 1C:Бухгалтерия Платные (руб)

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

5000 руб.

14.01.2016    55696    17    23    

43

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

Универсальный редактор картинок 1С предназначен для обработки изображений в режиме «Предприятие», с возможностью рисовать на них. Поддерживается работа как в обычных формах (толстый клиент) так и на управляемых формах (тонкий клиент). Обработка позволяет редактировать как картинки, хранимые в базе, так и графические файлы с диска на файловой системе. Помимо базовых функций (изменение размеров, преобразование формата, обрезание картинки, повороты и т.п.) – редактор имеет богатый набор инструментов для рисования. Доступна функция вставки изображения из буфера обмена. Объект может быть использован: на стороне клиента, на стороне сервера, из внешнего соединения. Обработка будет особенно полезна тем, кто вносит картинки в базу (изображения номенклатуры, фотографии физических лиц и т.п.). Функционал реализуется с использованием JavaScript и бесплатного ПО ImageMagick (без использования внешних компонент).

6000 руб.

16.01.2015    64086    45    60    

83

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

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

2400 руб.

29.06.2020    20021    28    6    

44

Работа с интерфейсом Программист Стажер Платформа 1С v8.3 Бесплатно (free)

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

20.08.2024    24032    mrXoxot    44    

130

Работа с интерфейсом Программист Платформа 1С v8.3 Бесплатно (free)

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

27.05.2024    12377    smielka    37    

105

Работа с интерфейсом Платформа 1С v8.3 1С:Бухгалтерия 3.0 1С:Управление торговлей 11 1С:Зарплата и Управление Персоналом 3.x 1С:Управление нашей фирмой 3.0 Бесплатно (free)

Добавьте новогоднего настроения! Расширение создает декорацию в виде гирлянды на некоторых формах объектов.

27.12.2023    18483    1230    elcoan    53    

127

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

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

3 стартмани

10.04.2023    12964    167    acces969    31    

126

Групповая разработка (Git, хранилище) OneScript DevOps и автоматизация разработки Системный администратор Программист Платформа 1С v8.3 Россия Бесплатно (free)

Избавляемся от версионной зависимости, проверяем комментарии, вызываем веб-хуки, делаем красивые пути. И все это на привычном IIS и понятном OneScript.

08.12.2022    11953    kamisov    57    

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

Вот здесь больше скриншотов
https://ahyahy.github.io/OneScriptDeclarativeForms/screenshot.html
Что то попрезентабельнее я не делал.
Кое что можно найти в справке в разделе-Дополнения
https://ahyahy.github.io/OneScriptDeclarativeForms/OSDFormsRu/index.html
Раздел -Дополнения-Примеры тестирования содержит код тестов на каждое свойство, метод, событие. Но
чтобы увидеть результат их нужно запускать.
Веб-технологии, Вы можете представить в программе всё, что хотите.
5. alex_bob 258 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 102 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 102 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 102 08.02.25 20:32 Сейчас в теме
(5) Проверил на ubuntu-mate-24.10
Действительно, на этой сборке не работает. Причину определил, ищу решение.
9. ahyahy 102 09.02.25 18:03 Сейчас в теме
(5) Решение в доустановке библиотек mono. Нужно установить пакет mono-complete.
Я установил mono-complete версию 6.12.0.199+dfsg-1 и всё заработало.
Прикрепленные файлы:
10. alex_bob 258 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 102 10.02.25 15:22 Сейчас в теме
(10)В консоль жалуется браузер Chrome, который формы в нашем окне формирует. У него своя внутренняя работа происходит. Это не ошибки форм. На это можно не обращать внимания. В разных средах набор этих сообщений от Chrome разный. Планирую в следующих релизах убрать сообщения от Chrome и тогда останутся сообщения только от сценариев.
12. alex_bob 258 11.02.25 08:48 Сейчас в теме
Хорошо, спасибо, изучаю. Жаль, не хватает по фронтенду знаний и опыта.
13. alex_bob 258 12.02.25 11:12 Сейчас в теме
При выполнении примера из документации по классу ОкноСообщений окно сообщений в таком виде:
Прикрепленные файлы:
14. alex_bob 258 12.02.25 11:13 Сейчас в теме
(13) Это и в Виндовс и в Линукс
15. ahyahy 102 12.02.25 16:22 Сейчас в теме
(13) Моя недоработка. Для создания окон сообщений и уведомлений библиотека использует файл-шаблон mes.html
Он должен создаваться автоматически при его отсутствии рядом со стартовым сценарием. Всё дело оказалось в том,
что он у меня всегда лежал в нужном месте и я не проверил случай с его отсутствием. В следующем релизе,
который через недельку будет, ошибку устраню. А пока по этой ссылке
https://github.com/ahyahy/OneScriptDeclarativeForms/tree/main/tests
лежит недостающий файл mes.html. Поместите его рядом со стартовым сценарием. Это исправит и работу класса Уведомления, который использует этот же шаблон.
Оставьте свое сообщение