|
Как создать произвольную форму в редакторе VisualStudio и подключить ее в скрипте.
Помимо типовых форм, в SDK 5.7 появилась возможность создавать произвольные формы в редакторе Visual Studio и подключать их в свои скрипты.
В качестве примера, сделан порт обработки "Цветовые схемы для конфигуратора 1С" Дмитрия Чернова http://infostart.ru/public/202980/
Скрипт можно вызвать из ТурбоМеню или по Ctrl+8
Форма содержит несколько элементов управления и сделана в редакторе Visual Studio 2017. Практически вся логика скрипта перенесена без изменений и написана на языке 1С.
Так выглядит открытие формы и подключение обработчика в скрипте.
Процедура ПриОткрытии()
Форма = Новый ПроизвольнаяФорма();
Форма.Сгенерировать("settings\ThemeSwitcher\Forms\ThemeSwitcherForm", "ThemeSwitcher.ThemeSwitcherForm");
Форма.Заголовок = "Выберите тему";
Темы = Новый Соответствие;
Темы.Вставить("desertEx_Revised", "desertEx_Revised");
Темы.Вставить("Standard", "Standard");
Темы.Вставить("Monokai", "Monokai");
Темы.Вставить("Mustang", "Mustang");
Темы.Вставить("Nightfall", "Nightfall");
Темы.Вставить("Nina", "Nina");
Темы.Вставить("Ragnarok_Blue", "Ragnarok_Blue");
Темы.Вставить("Resharper_Son_of_obsidian", "Resharper_Son_of_obsidian");
Темы.Вставить("See_Sharp", "See_Sharp");
Темы.Вставить("Coding_Horror_2010", "Coding_Horror_2010");
Темы.Вставить("See_Sharp", "See_Sharp");
Темы.Вставить("Selenitic", "Selenitic");
Темы.Вставить("WekeRoad_Ink", "WekeRoad_Ink");
Темы.Вставить("Zenburn_2010", "Zenburn_2010");
//Устанавливаем даннные для элемента ListBox
Форма.УстановитьДанные("listBoxThemes", "Items", Темы);
//Подключаем обработчик для кнопки
Форма.УстановитьДействие(ЭтотОбъект, "buttonOK_Click");
Форма.Показать();
КонецПроцедуры
Процедура buttonOK_Click(Значение, Отказ) Экспорт
Если Не Отказ Тогда
Путь_к_Файлу = Получить_Путь_к_Файлу();
Путь_к_Файлу_8_3 = Получить_Путь_к_Файлу_8_3();
Запись_в_файл_настроек(Значение, Путь_к_Файлу);
Запись_в_файл_настроек(Значение, Путь_к_Файлу_8_3);
КонецЕсли;
КонецПроцедуры
Создание формы в редакторе Visual Studio 2017
Так выглядит код формы на языке C#
public partial class ThemeSwitcherForm : CustomForm
{
public ThemeSwitcherForm()
{
InitializeComponent();
}
private void button2_Click(object sender, EventArgs e)
{
Close();
}
private void listBoxThemes_SelectedValueChanged(object sender, EventArgs e)
{
if (listBoxThemes.SelectedItem != null)
{
var path = "settings/ThemeSwitcher/Themes/" + listBoxThemes.SelectedItem.ToString() + ".png";
if (!File.Exists(path))
{
pictureBoxPreview.Image = null;
return;
}
pictureBoxPreview.Image = new Bitmap(path);
}
}
private void ThemeSwitcherForm_Load(object sender, EventArgs e)
{
listBoxThemes.SelectedIndex = 0;
}
private void buttonOK_Click(object sender, EventArgs e)
{
Close();
InvokeScriptHandler("buttonOK_Click", listBoxThemes.SelectedItem);
}
}
Дополнительная информация по созданию Произвольных форм появится позже.
Функция экспериментальная, если Вы считаете, что она нужна - пишите комментарии :)