Полное руководство по свойствам элемента формы "КнопкаФормы" в 1С. Часть 2
Свойство "Заголовок" кнопки
Описание свойства:
Свойство Заголовок
кнопки отвечает за текст, который отображается на кнопке. Оно является ключевым для понимания назначения кнопки пользователем, делая интерфейс интуитивно понятным.
Основные характеристики:
- Тип: Строка. Текст может быть любой длины, но следует учитывать ограничение высоты кнопки.
- Доступность: Свойство доступно для чтения и записи, его можно изменить как на этапе проектирования, так и во время выполнения программы.
- Использование: Позволяет динамически менять текст кнопки в зависимости от действий пользователя или состояния программы.
Где применяется:
Свойство Заголовок
используется для отображения текстового описания на кнопке, например:
- Для стандартных кнопок ("Сохранить", "Удалить", "Закрыть").
- Для информативных кнопок с поясняющим текстом ("Подробнее", "Показать настройки").
- Для кнопок, текст которых может изменяться в зависимости от контекста (например, "Включить" или "Отключить").

Пример использования:
На форме создаются две кнопки с разными заголовками:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
// Создаем одну команду для кнопок.
КомандаКнопок = ЭтаФорма.Команды.Добавить("КомандаКнопок");
// Добавляем первую кнопку с заголовком "Кнопка 1".
Кнопка1 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"), ЭтаФорма);
Кнопка1.ИмяКоманды = "КомандаКнопок";
Кнопка1.Заголовок = "Кнопка 1";
// Добавляем вторую кнопку с заголовком "Кнопка 2".
Кнопка2 = ЭтаФорма.Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"), ЭтаФорма);
Кнопка2.ИмяКоманды = "КомандаКнопок";
Кнопка2.Заголовок = "Кнопка 2";
КонецПроцедуры
Результат:
На форме появятся две кнопки:
- Кнопка 1: с текстом "Кнопка 1".
- Кнопка 2: с текстом "Кнопка 2".
Свойство "ИмяКоманды" кнопки
Описание свойства:
Свойство ИмяКоманды
кнопки позволяет привязать элемент формы к определённой команде. Это связывание определяет поведение кнопки при нажатии, вызывая соответствующий обработчик команды. С помощью ИмяКоманды
можно гибко управлять логикой взаимодействия, изменяя её в зависимости от действий пользователя или текущего состояния программы.
Основные характеристики:
- Тип: Строка — название команды, связанной с кнопкой.
- Доступность: Свойство доступно для чтения и записи. Его можно изменять в процессе работы программы.
- Использование: Позволяет одной кнопке вызывать разные команды, меняя её поведение динамически.
Как это работает:
При нажатии на кнопку с указанным ИмяКоманды
, система автоматически вызывает обработчик, связанный с этой командой. Это упрощает логику программы и делает интерфейс более адаптивным.

Пример использования:
В нашем примере мы создаём две кнопки:
- Первая кнопка: отвечает за смену команды второй кнопки. Её заголовок динамически меняется, указывая, какая команда будет активирована у второй кнопки.
- Вторая кнопка: её
ИмяКоманды
переключается между двумя командами:Команда1
иКоманда2
. При нажатии она выполняет активированную команду, выводя соответствующее сообщение.
Код примера:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
// Создаем команду для первой кнопки.
КомандаИзменить = ЭтаФорма.Команды.Добавить("КомандаИзменить");
КомандаИзменить.Действие = "ИзменитьКоманду";
// Создаем команду 1.
Команда1 = ЭтаФорма.Команды.Добавить("Команда1");
Команда1.Действие = "ДействиеКоманда1";
// Создаем команду 2.
Команда2 = ЭтаФорма.Команды.Добавить("Команда2");
Команда2.Действие = "ДействиеКоманда2";
// Добавляем первую кнопку для изменения команды второй кнопки.
КнопкаИзменитьКоманду = ЭтаФорма.Элементы.Добавить("КнопкаИзменитьКоманду", Тип("КнопкаФормы"), ЭтаФорма);
КнопкаИзменитьКоманду.ИмяКоманды = "КомандаИзменить";
КнопкаИзменитьКоманду.Заголовок = "Изменить Команду на 2";
// Добавляем вторую кнопку, связав её с командой 1.
КнопкаСменная = ЭтаФорма.Элементы.Добавить("КнопкаСменная", Тип("КнопкаФормы"), ЭтаФорма);
КнопкаСменная.ИмяКоманды = "Команда1";
КнопкаСменная.Заголовок = "Активирована команда 1";
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьКоманду(Команда)
// Переход на сервер для изменения команды второй кнопки.
ИзменитьКомандуНаСервере();
КонецПроцедуры
&НаСервере
Процедура ИзменитьКомандуНаСервере()
// Получаем ссылки на кнопки.
КнопкаСменная = ЭтаФорма.Элементы.КнопкаСменная;
КнопкаИзменитьКоманду = ЭтаФорма.Элементы.КнопкаИзменитьКоманду;
// Меняем ИмяКоманды у второй кнопки и заголовки на первой кнопке.
Если КнопкаСменная.ИмяКоманды = "Команда1" Тогда
КнопкаСменная.ИмяКоманды = "Команда2"; // Меняем команду на "Команда2".
КнопкаСменная.Заголовок = "Активирована команда 2";
КнопкаИзменитьКоманду.Заголовок = "Изменить Команду на 1";
Иначе
КнопкаСменная.ИмяКоманды = "Команда1"; // Меняем команду на "Команда1".
КнопкаСменная.Заголовок = "Активирована команда 1";
КнопкаИзменитьКоманду.Заголовок = "Изменить Команду на 2";
КонецЕсли;
КонецПроцедуры
&НаКлиенте
Процедура ДействиеКоманда1(Команда)
Сообщить("Команда 1");
КонецПроцедуры
&НаКлиенте
Процедура ДействиеКоманда2(Команда)
Сообщить("Команда 2");
КонецПроцедуры
Как работает этот код:
- Первая кнопка вызывает серверную процедуру, которая меняет
ИмяКоманды
второй кнопки. - На основе текущего значения
ИмяКоманды
у второй кнопки её поведение меняется — вызывается соответствующий обработчик команды. - Заголовок первой кнопки динамически обновляется, чтобы пользователь понимал, какая команда будет активирована.
Результат:
- При нажатии на первую кнопку вторая кнопка переключается между командами
Команда1
иКоманда2
. - Заголовок первой кнопки меняется, указывая текущее состояние второй кнопки.
Применение:
Свойство ИмяКоманды
особенно полезно для создания адаптивных интерфейсов, где элементы формы динамически меняют своё поведение в зависимости от действий пользователя или состояния программы. Это позволяет экономить место на форме и повышать удобство использования интерфейса.
Свойства "Картинка" и "ПоложениеКартинки" для кнопок в 1С
Зачем нужны свойства "Картинка" и "ПоложениеКартинки"?
Свойства Картинка
и ПоложениеКартинки
используются для улучшения визуального представления кнопок в форме 1С.
Свойство Картинка
позволяет назначить изображение, которое будет отображаться на кнопке. Это изображение может быть выбрано из библиотеки картинок.
Свойство ПоложениеКартинки
управляет расположением картинки относительно текста на кнопке:
слева, справа или по умолчанию.
Использование свойства "Картинка"
Свойство Картинка
принимает изображение из библиотеки или заданное программно. Пример:
Кнопка.Картинка = БиблиотекаКартинок.БизнесПроцесс; // Установка картинки из библиотеки
Использование свойства "ПоложениеКартинки"
Это свойство определяет, где на кнопке будет находиться картинка: слева или справа от текста.
Кнопка.ПоложениеКартинки = ПоложениеКартинкиКнопкиФормы.Лево; // Картинка слева
Кнопка.ПоложениеКартинки = ПоложениеКартинкиКнопкиФормы.Право; // Картинка справа

Полный пример кода
Ниже приведен код создания кнопок с использованием обоих свойств.
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
// Создаем команду без заголовка
НоваяКоманда = ЭтаФорма.Команды.Добавить("Команда1");
// Добавляем первую кнопку с отображением только картинки из библиотеки
Кнопка1 = ЭтаФорма.Элементы.Добавить("Кнопка1", Тип("КнопкаФормы"));
Кнопка1.ИмяКоманды = "Команда1";
Кнопка1.Картинка = БиблиотекаКартинок.БизнесПроцесс;
Кнопка1.Отображение = ОтображениеКнопки.Картинка;
// Добавляем вторую кнопку с отображением текста
Кнопка2 = ЭтаФорма.Элементы.Добавить("Кнопка2", Тип("КнопкаФормы"));
Кнопка2.ИмяКоманды = "Команда1";
Кнопка2.Заголовок = "Только текст";
Кнопка2.Отображение = ОтображениеКнопки.Текст;
// Добавляем третью кнопку с отображением текста и картинки
Кнопка3 = ЭтаФорма.Элементы.Добавить("Кнопка3", Тип("КнопкаФормы"));
Кнопка3.ИмяКоманды = "Команда1";
Кнопка3.Картинка = БиблиотекаКартинок.БизнесПроцесс;
Кнопка3.Заголовок = "Текст и картинка";
Кнопка3.Отображение = ОтображениеКнопки.КартинкаИТекст;
Кнопка3.ПоложениеКартинки = ПоложениеКартинкиКнопкиФормы.Лево;
// Добавляем четвёртую кнопку с отображением текста и картинки
Кнопка4 = ЭтаФорма.Элементы.Добавить("Кнопка4", Тип("КнопкаФормы"));
Кнопка4.ИмяКоманды = "Команда1";
Кнопка4.Картинка = БиблиотекаКартинок.БизнесПроцесс;
Кнопка4.Заголовок = "Текст и картинка";
Кнопка4.Отображение = ОтображениеКнопки.КартинкаИТекст;
Кнопка4.ПоложениеКартинки = ПоложениеКартинкиКнопкиФормы.Право;
КонецПроцедуры
Свойство "Родитель"
Что такое свойство Родитель и его назначение
Свойство Родитель
является одним из ключевых механизмов управления иерархией элементов формы. Оно определяет принадлежность элемента к определенному контейнеру (группе) и позволяет программно определять и изменять расположение элементов в интерфейсе. Свойство доступно только для чтения и возвращает объект типа ГруппаФормы
или ФормаКлиентскогоПриложения
.
Базовые примеры использования
Получение текущего родителя элемента:
ТекущийРодитель = ЭлементФормы.Родитель;
Проверка принадлежности элемента к определенной группе:
Если ЭлементФормы.Родитель.Имя = "ИмяГруппы" Тогда ...
Создание элемента с указанием родителя:
НовыйЭлемент = Элементы.Добавить("ИмяЭлемента", Тип("КнопкаФормы"), ГруппаРодитель);
НовыйЭлемент.Заголовок = "Новая кнопка";
Практическое применение
Основные сценарии использования свойства включают:
- Определение текущего расположения элемента
- Программное перемещение элементов между группами
- Создание динамических интерфейсов с изменяемой структурой
- Организация условного отображения элементов в разных группах

Пример реализации перемещения элементов
Для демонстрации возможностей свойства рассмотрим практический пример динамического перемещения кнопки между двумя группами. В примере реализовано:
- Создание двух визуально различимых групп
- Размещение кнопки с возможностью перемещения
- Механизм программного перемещения между группами
Исходный код решения
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
// 1. Создаем команду "Изменить родителя"
КомандаИзменитьРодителя = Команды.Добавить("КомандаИзменитьРодителя");
КомандаИзменитьРодителя.Действие = "ИзменитьРодителяКнопки";
КомандаИзменитьРодителя.Заголовок = "Изменить родителя";
// Создаем кнопку для команды "Изменить родителя"
КнопкаИзменить = Элементы.Добавить("КнопкаИзменитьРодителя", Тип("КнопкаФормы"));
КнопкаИзменить.ИмяКоманды = "КомандаИзменитьРодителя";
// 2. Создаем команду "Для видимости" без действия
КомандаДляВидимости = Команды.Добавить("КомандаДляВидимости");
КомандаДляВидимости.Заголовок = "Для видимости";
// 3. Создаем две группы разного цвета
// Группа 1
Группа1 = Элементы.Добавить("Группа1", Тип("ГруппаФормы"));
Группа1.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа1.Заголовок = "Группа 1";
Группа1.ЦветФона = Новый Цвет(255, 200, 200); // Светло-красный
Группа1.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение;
// Кнопка "Для видимости" в группе 1
КнопкаВидимости1 = Элементы.Добавить("КнопкаВидимости1", Тип("КнопкаФормы"), Группа1);
КнопкаВидимости1.ИмяКоманды = "КомандаДляВидимости";
// Группа 2
Группа2 = Элементы.Добавить("Группа2", Тип("ГруппаФормы"));
Группа2.Вид = ВидГруппыФормы.ОбычнаяГруппа;
Группа2.Заголовок = "Группа 2";
Группа2.ЦветФона = Новый Цвет(200, 255, 200); // Светло-зеленый
Группа2.Отображение = ОтображениеОбычнойГруппы.СлабоеВыделение;
// Кнопка "Для видимости" в группе 2
КнопкаВидимости2 = Элементы.Добавить("КнопкаВидимости2", Тип("КнопкаФормы"), Группа2);
КнопкаВидимости2.ИмяКоманды = "КомандаДляВидимости";
// 4. Создаем кнопку "Родитель - Группа 1" в первой группе
КнопкаПеремещаемая = Элементы.Добавить("КнопкаПеремещаемая", Тип("КнопкаФормы"), Группа1);
КнопкаПеремещаемая.ИмяКоманды = "КомандаДляВидимости";
КнопкаПеремещаемая.Заголовок = "Родитель - Группа 1";
КонецПроцедуры
&НаКлиенте
Процедура ИзменитьРодителяКнопки(Команда)
ИзменитьРодителяКнопкиНаСервере();
КонецПроцедуры
&НаСервере
Процедура ИзменитьРодителяКнопкиНаСервере()
// Находим текущую кнопку
ТекущаяКнопка = Элементы.Найти("КнопкаПеремещаемая");
Если ТекущаяКнопка <> Неопределено Тогда
// Определяем текущего родителя
ТекущийРодитель = ТекущаяКнопка.Родитель;
НовыйРодитель = Неопределено;
НовыйЗаголовок = "";
// Определяем нового родителя и заголовок
Если ТекущийРодитель.Имя = "Группа1" Тогда
НовыйРодитель = Элементы.Найти("Группа2");
НовыйЗаголовок = "Родитель - Группа 2";
Иначе
НовыйРодитель = Элементы.Найти("Группа1");
НовыйЗаголовок = "Родитель - Группа 1";
КонецЕсли;
// Удаляем текущую кнопку
Элементы.Удалить(ТекущаяКнопка);
// Создаем новую кнопку в новой группе
НоваяКнопка = Элементы.Добавить("КнопкаПеремещаемая", Тип("КнопкаФормы"), НовыйРодитель);
НоваяКнопка.ИмяКоманды = "КомандаДляВидимости";
НоваяКнопка.Заголовок = НовыйЗаголовок;
КонецЕсли;
КонецПроцедуры
Особенности и рекомендации
- Свойство
Родитель
доступно только для чтения, прямое изменение невозможно - Для изменения родителя необходимо использовать методы
Удалить()
иДобавить()
- При программном перемещении элементов важно сохранять их функциональные свойства
- Рекомендуется проверять существование элементов перед операциями с ними
Заключение
Свойство Родитель
является мощным инструментом для создания динамических пользовательских интерфейсов. Его использование позволяет реализовывать сложные сценарии управления отображением и поведением элементов формы, обеспечивая гибкость и адаптивность интерфейса под различные задачи.
Стилизация кнопок. Свойства "Фигура", "ЦветРамки", "ЦветТекста", "ЦветФона", "Шрифт"
Описание свойств
Рассмотрим основные свойства, отвечающие за визуальное оформление кнопок, их значения и особенности применения. Данные свойства доступны для изменения как на сервере, так и на клиенте.
Свойство "Фигура"
Определяет геометрическую форму кнопки. Принимает значения из перечисления ФигураКнопки
:
Обычная
- стандартная прямоугольная формаОвал
- закругленная формаАвто
- автоматический выбор фигуры
Базовый пример установки фигуры:
КнопкаФормы.Фигура = ФигураКнопки.Овал;
Свойства цветового оформления
Три свойства отвечают за цветовое оформление кнопки. Все они принимают значение типа Цвет
:
ЦветРамки
- устанавливает цвет обводки кнопкиЦветТекста
- определяет цвет текста заголовкаЦветФона
- задает цвет заливки кнопки
Пример установки цветов:
КнопкаФормы.ЦветРамки = Новый Цвет(255, 0, 0); // Красный
КнопкаФормы.ЦветТекста = Новый Цвет(255, 255, 255); // Белый
КнопкаФормы.ЦветФона = Новый Цвет(0, 0, 255); // Синий
Свойство "Шрифт"
Управляет параметрами отображения текста на кнопке. Принимает значение типа Шрифт
со следующими параметрами:
- Имя шрифта (например, "Arial")
- Размер в пунктах
- Жирное начертание (Истина/Ложь)
- Курсивное начертание (Истина/Ложь)
Пример настройки шрифта:
КнопкаФормы.Шрифт = Новый Шрифт("Arial", 12, Истина, Ложь);

Практический пример
Рассмотрим полный пример создания кнопок с различным оформлением:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ)
// Создаем общую команду для всех кнопок
КомандаКнопок = Команды.Добавить("КомандаКнопок");
КомандаКнопок.Действие = "ДействиеКнопки";
КомандаКнопок.Заголовок = "Тестовая команда";
// 1. Создаем группу для кнопок с разными фигурами
ГруппаФигур = Элементы.Добавить("ГруппаФигур", Тип("ГруппаФормы"));
ГруппаФигур.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаФигур.Заголовок = "Кнопки разных фигур";
// Создаем кнопку с обычной фигурой
КнопкаОбычная = Элементы.Добавить("КнопкаОбычная", Тип("КнопкаФормы"), ГруппаФигур);
КнопкаОбычная.ИмяКоманды = "КомандаКнопок";
КнопкаОбычная.Заголовок = "Обычная фигура";
КнопкаОбычная.Фигура = ФигураКнопки.Обычная;
// Создаем кнопку с овальной фигурой
КнопкаОвал = Элементы.Добавить("КнопкаОвал", Тип("КнопкаФормы"), ГруппаФигур);
КнопкаОвал.ИмяКоманды = "КомандаКнопок";
КнопкаОвал.Заголовок = "Овальная фигура";
КнопкаОвал.Фигура = ФигураКнопки.Овал;
// 2. Создаем группу для кнопок с разными цветами
ГруппаЦветов = Элементы.Добавить("ГруппаЦветов", Тип("ГруппаФормы"));
ГруппаЦветов.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаЦветов.Заголовок = "Кнопки с разными цветами";
// Создаем кнопку с настроенными цветами
КнопкаЦветная = Элементы.Добавить("КнопкаЦветная", Тип("КнопкаФормы"), ГруппаЦветов);
КнопкаЦветная.ИмяКоманды = "КомандаКнопок";
КнопкаЦветная.Заголовок = "Цветная кнопка";
// Красная рамка
КнопкаЦветная.ЦветРамки = Новый Цвет(255, 0, 0);
// Белый текст
КнопкаЦветная.ЦветТекста = Новый Цвет(255, 255, 255);
// Синий фон
КнопкаЦветная.ЦветФона = Новый Цвет(0, 0, 255);
// 3. Создаем группу для кнопки с особым шрифтом
ГруппаШрифта = Элементы.Добавить("ГруппаШрифта", Тип("ГруппаФормы"));
ГруппаШрифта.Вид = ВидГруппыФормы.ОбычнаяГруппа;
ГруппаШрифта.Заголовок = "Кнопка с особым шрифтом";
// Создаем кнопку с настроенным шрифтом
КнопкаШрифт = Элементы.Добавить("КнопкаШрифт", Тип("КнопкаФормы"), ГруппаШрифта);
КнопкаШрифт.ИмяКоманды = "КомандаКнопок";
КнопкаШрифт.Заголовок = "Кнопка с новым шрифтом";
// Устанавливаем шрифт Arial, 12, жирный, курсив
КнопкаШрифт.Шрифт = Новый Шрифт("Arial", 12, Истина, Истина);
КонецПроцедуры
Особенности использования
- Изменение свойств на клиенте доступно без обращения к серверу
- Для создания единого стиля интерфейса рекомендуется использовать одинаковое оформление для однотипных кнопок
- При выборе цветов следует учитывать контрастность для обеспечения читаемости текста
- В разных клиентских приложениях фигуры кнопок могут отображаться по-разному
Заключение
Грамотное применение свойств стилизации позволяет создавать интуитивно понятный интерфейс и акцентировать внимание пользователя на важных элементах управления. При этом важно соблюдать общий стиль приложения и не перегружать интерфейс излишним оформлением.