Добавление кнопки на управляемую форму

25 января 2013

Предисловие

Изменение форм объектов конфигурации является очень распространенной задачей при доработке триповый конфигураций, создании отчетов и обработок и т.д. Да в абсолютном большинстве случаев разработчику приходится иметь дело с формами.

Исходная управляемая форма

Сегодня в статье рассмотрим сквозной пример добавления на управляемую форму кнопки.

Конструктор

Самый простой способ - это конечно же воспользоваться конструктором форм в конфигураторе. Тогда не нужно будет писать ни одной строчки кода. Все что нужно - это пара кликов:

Конструктор управляемой формы в конфигураторе

И кнопка уже добавлена!

Но не всегда такой вариант приемлем. Для некоторых задач нужно изменять форму программным образом, например, для формирования кнопок команд печати документов, где для каждой печатной формы создается собственная кнопка. Заранее знать состав всех печатных форм (включая внешние) мы не можем, поэтому добавление кнопок выполняется автоматически.

Программное добавление

И так, то что мы сделали в 2 клика сделаем с помощью нескольких строк кода. Перед тем как добавлять команду формы, нам нужно определить процедуру-обработчик этой команды. Добавим в модуль формы следующую процедуру:

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

comments powered by Disqus