Внешняя компонента позволяет создавать формы на языке 1script. API работы с формами максимально приближен к синтаксису 1С.
Основная задача компоненты - простая работа с формами. Позволяет создать большое количество разных элементов форм. Поддерижвается обработка событий элементов. Управление свойствами видимости, доступности и другими. Создан единый интерфейс для работы со значениями элементов (через свойство Значение).
Доступны основные элементы формы и события:
opm install gui
либо скачать с github https://github.com/ret-Phoenix/oscript-simple-gui
- ПолеВвода - Однострочное текстовое поле;
- ПолеИндикатора - Прогрессбар.
- ПолеКалендаря - Поле для ввода даты
- ПолеНадписи - Надпись (декорация в терминалогии 1С)
- ПолеФлажка - Флажок, имеет статусы: Включен/Выключен
- ПолеТекстовогоДокумента - Многострочный текст
- ПолеСоСписком - Поле со списком (ComboBox)
- ПолеСписка - Поле списка (ListBox)
- ОбычнаяГруппа - Контейнер для группы элементов
- Страница - Страницы
- Кнопка
- ТаблицаФормы - Компонент для отображения объекта ТаблицаЗначений
- ДеревоФормы - Компонент для отображения объекта ДеревоЗначений
- Форма: ПриОткрытии
- Кнопка: ПриНажатии
- ПолеФормы: ПриИзменении, ПриВыборе (нажат Enter), ПриНажатииНаКнопку (KeyDown)
- ПолеСписка: ПриДвойномКлике
#Использовать gui Перем Форма; Процедура ПриСозданииОбъекта() УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс(); Форма = УправляемыйИнтерфейс.СоздатьФорму(); //# Устанавливаем обработку события ПриОткрытии Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы"); Форма.Показать(); КонецПроцедуры //# Обработка события первого открытия формы Процедура ПриОткрытииФормы() Экспорт Декорация1 = Форма.Элементы.Добавить("Декорация1", "ПолеФормы", Неопределено); Декорация1.Вид = Форма.ВидПоляФормы.ПолеНадписи; Декорация1.Заголовок = "Это действительно работает!"; Форма.Высота = 100; КонецПроцедуры
#Использовать gui Перем Форма; Процедура ПриСозданииОбъекта() УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс(); Форма = УправляемыйИнтерфейс.СоздатьФорму(); //# Устанавливаем обработку события ПриОткрытии Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы"); Форма.Показать(); КонецПроцедуры //# Обработка события первого открытия формы Процедура ПриОткрытииФормы() Экспорт ПолеВвода1 = Форма.Элементы.Добавить("ПолеВвода1", "ПолеФормы", Неопределено); ПолеВвода1.Вид = Форма.ВидПоляФормы.ПолеВвода; ПолеВвода1.Заголовок = "Поле ввода"; ПолеВвода1.Значение = "Значение задано из скрипта"; Кнопка1 = Форма.Элементы.Добавить("Кнопка1", "КнопкаФормы", Неопределено); Кнопка1.Заголовок = "Нажми меня"; Кнопка1.УстановитьДействие(ЭтотОбъект, "Нажатие", "ПриНажатииНаКнопку1"); КонецПроцедуры Процедура ПриНажатииНаКнопку1() Экспорт Форма.Элементы.Найти("ПолеВвода1").Значение = "Значение после нажатия на кнопку"; КонецПроцедуры
#Использовать gui Перем Форма; Процедура ПриСозданииОбъекта() //# Загружаем внешнюю компоненту ПодключитьВнешнююКомпоненту(ОбъединитьПути(КаталогПрограммы(), "oscript-simple-gui.dll")); УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс(); Форма = УправляемыйИнтерфейс.СоздатьФорму(); //# Устанавливаем обработку события ПриОткрытии Форма.УстановитьДействие(ЭтотОбъект, "ПриОткрытии", "ПриОткрытииФормы"); Форма.Показать(); КонецПроцедуры //# Обработка события первого открытия формы Процедура ПриОткрытииФормы() Экспорт Данные = Новый Соответствие; Данные.Вставить("Один", "1"); Данные.Вставить("Два", "2"); Данные.Вставить("Три", "3"); ПолеСоСписком1 = Форма.Элементы.Добавить("ПолеСоСписком1", "ПолеФормы", Неопределено); ПолеСоСписком1.Заголовок = "Поле со списком"; ПолеСоСписком1.Вид = Форма.ВидПоляФормы.ПолеСоСписком; ПолеСоСписком1.СписокВыбора = Данные; ПолеСоСписком1.Значение = "3"; ПолеСоСписком1.УстановитьДействие(ЭтотОбъект, "ПриИзменении", "ПриИзменииЗначения"); Форма.Высота = 80; КонецПроцедуры Процедура ПриИзменииЗначения() Экспорт Сообщить("Новое значение: " + Форма.Элементы.Найти("ПолеСоСписком1").Значение); КонецПроцедуры
ПровайдерТЗ = Новый Провайдер;
ПровайдерТЗ.Источник = ПолучитьТЗ();
Поле1 = Форма.Элементы.Добавить("ТаблицаФормы1", "ТаблицаФормы", Неопределено);
Поле1.ПутьКДанным = ПровайдерТЗ;
Поле1.Заголовок = "Провайдер - ТЗ";
Поле1.ПоложениеЗаголовка = УправляемыйИнтерфейс.ПоложениеЗаголовка.Верх;
Поле1.Закрепление = 5;
ПровайдерТЗ = Новый Провайдер;
ПровайдерТЗ.ИсточникДерево = Данные;
Поле1 = Форма.Элементы.Добавить("ДеревоФормы1", "ДеревоФормы", Неопределено);
Поле1.ПутьКДанным = ПровайдерТЗ;
Поле1.Заголовок = "Провайдер - Дерево значений";
Поле1.ПоложениеЗаголовка = УправляемыйИнтерфейс.ПоложениеЗаголовка.Верх;
Поле1.Закрепление = 5;
Поле1.ТекущаяСтрока = 1;
Выводит на экран окно предупреждения.
Порядок вызова аналогичен реализованному в платформе 1С:Предприятие, но вызов осуществляется через промежуточный объект - СтандартныеДиалоги\StandardDialogs:
#Использовать gui УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс(); Диалоги = УправляемыйИнтерфейс.СтандартныеДиалоги; Диалоги.Предупреждение("ТекстПредупреждения", 5, "Заголовок");
Выводит на экран окно вопроса.
Порядок вызова аналогичен реализованному в платформе 1С:Предприятие, но вызов осуществляется через объект СтандартныеДиалоги\StandardDialogs:
#Использовать gui УправляемыйИнтерфейс = Новый УправляемыйИнтерфейс(); Диалоги = УправляемыйИнтерфейс.СтандартныеДиалоги; Ответ = Диалоги.Вопрос("Тест",РежимДиалогаВопрос.ДаНет, 1, КодВозвратаДиалога.Нет , "Заголовок", КодВозвратаДиалога.Нет);
Компонента реализует объект ДиалогВыбораФайла (FileDialog), предназначенный для работы с диалогом специального вида для открытия файла или нескольких файлов, сохранения файла или выбора каталога.
Порядок работы с объектом аналогичен реализованному в платформе 1С: Предприятие:
#Использовать gui Диалог = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.ВыборКаталога); Если Диалог.Выбрать() Тогда ИмяКаталога = Диалог.Каталог; КонецЕсли; Сообщить(ИмяКаталога);
В текущей версии не реализован метод Показать.