Статьи 1С программиста

заметки и другая полезная информация по 1С

Программное создание группировок на форме

918
30 октября 2024

В этой статье рассмотрим программное создание формы с группировками элементов разных видов и общим обработчиком команд для всех кнопок.

При разработке форм часто требуется программно создавать группы элементов с разными вариантами расположения. Рассмотрим пример, где мы создадим форму с двумя группами, в каждой из которых кнопки будут располагаться по-разному: в первой - горизонтально (в ряд), во второй - вертикально (друг под другом).

Для начала установим вертикальную группировку для всей формы:

// Устанавливаем вертикальную группировку для всей формы
ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;

Создаем первую группу с горизонтальной группировкой элементов:

ПерваяГруппа = Элементы.Добавить("ГруппаПоГоризонтали", Тип("ГруппаФормы"));
ПерваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ПерваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
ПерваяГруппа.Заголовок = "Группировка по горизонтали";
ПерваяГруппа.ОтображатьЗаголовок = Истина;

Обратите внимание: для первой группы мы устанавливаем горизонтальную группировку, что позволяет размещать кнопки в один ряд.

Создаем вторую группу с вертикальной группировкой элементов:

ВтораяГруппа = Элементы.Добавить("ГруппаПоВертикали", Тип("ГруппаФормы"));
ВтораяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ВтораяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
ВтораяГруппа.Заголовок = "Группировка по вертикали";
ВтораяГруппа.ОтображатьЗаголовок = Истина;

Важно: для второй группы используется вертикальная группировка, что размещает кнопки друг под другом.

Для оптимизации кода создадим одну общую команду для всех кнопок:

// Добавляем общую команду для всех кнопок
КомандаОбщая = Команды.Добавить("КомандаОбщая");
КомандаОбщая.Действие = "ОбщаяКомандаНажатие";

Добавляем кнопки в первую группу (горизонтальное расположение):

// Добавляем кнопки в первую группу
Кнопка1 = Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ПерваяГруппа);
Кнопка1.ИмяКоманды = "КомандаОбщая";
Кнопка1.Заголовок = "Первая кнопка";

Кнопка2 = Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ПерваяГруппа);
Кнопка2.ИмяКоманды = "КомандаОбщая";
Кнопка2.Заголовок = "Вторая кнопка";

Добавляем кнопки во вторую группу (вертикальное расположение):

// Добавляем кнопки во вторую группу
Кнопка3 = Элементы.Добавить("Кнопка3", Тип("КнопкаФормы"), ВтораяГруппа);
Кнопка3.ИмяКоманды = "КомандаОбщая";
Кнопка3.Заголовок = "Третья кнопка";

Кнопка4 = Элементы.Добавить("Кнопка4", Тип("КнопкаФормы"), ВтораяГруппа);
Кнопка4.ИмяКоманды = "КомандаОбщая";
Кнопка4.Заголовок = "Четвертая кнопка";

Обработчик общей команды на клиенте:

&НаКлиенте
Процедура ОбщаяКомандаНажатие(Команда)
    Сообщить("Нажата общая команда");
КонецПроцедуры

Полный код решения:

&НаСервере
Процедура ПриСозданииНаСервере(Отказ)

    // Устанавливаем вертикальную группировку для всей формы
    ЭтаФорма.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;

    // Создаем первую группу (горизонтальная группировка)
    ПерваяГруппа = Элементы.Добавить("ГруппаПоГоризонтали", Тип("ГруппаФормы"));
    ПерваяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    ПерваяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Горизонтальная;
    ПерваяГруппа.Заголовок = "Группировка по горизонтали";
    ПерваяГруппа.ОтображатьЗаголовок = Истина;

    // Создаем вторую группу (вертикальная группировка)
    ВтораяГруппа = Элементы.Добавить("ГруппаПоВертикали", Тип("ГруппаФормы"));
    ВтораяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа;
    ВтораяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная;
    ВтораяГруппа.Заголовок = "Группировка по вертикали";
    ВтораяГруппа.ОтображатьЗаголовок = Истина;

    // Добавляем общую команду для всех кнопок
    КомандаОбщая = Команды.Добавить("КомандаОбщая");
    КомандаОбщая.Действие = "ОбщаяКомандаНажатие";

    // Добавляем кнопки в первую группу с собственными заголовками
    Кнопка1 = Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ПерваяГруппа);
    Кнопка1.ИмяКоманды = "КомандаОбщая";
    Кнопка1.Заголовок = "Первая кнопка";

    Кнопка2 = Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ПерваяГруппа);
    Кнопка2.ИмяКоманды = "КомандаОбщая";
    Кнопка2.Заголовок = "Вторая кнопка";

    // Добавляем кнопки во вторую группу с собственными заголовками
    Кнопка3 = Элементы.Добавить("Кнопка3", Тип("КнопкаФормы"), ВтораяГруппа);
    Кнопка3.ИмяКоманды = "КомандаОбщая";
    Кнопка3.Заголовок = "Третья кнопка";

    Кнопка4 = Элементы.Добавить("Кнопка4", Тип("КнопкаФормы"), ВтораяГруппа);
    Кнопка4.ИмяКоманды = "КомандаОбщая";
    Кнопка4.Заголовок = "Четвертая кнопка";

КонецПроцедуры

&НаКлиенте
Процедура ОбщаяКомандаНажатие(Команда)
    Сообщить("Нажата общая команда");
КонецПроцедуры

918
30 октября 2024