Программное создание элементов управляемых форм 1C

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

  1. более удобно находить изменения между конфигурациями
  2. Изменять форму "на лету" в процессе работы
  3. Минимизировать изменения типовой конфигурации (в некоторых конфигурациях для этого созданы Переопределяемые модули/процедуры)

 

Рассмотрим наиболее частые вопросы, все действия показаны здесь проводятся в форме в процедуре ПриСозданииНаСервере

 

Как программно добавить Группу на форму?

ГруппаТовары = Элементы.Добавить("ГруппаТовары", Тип("ГруппаФормы"),Элементы);	// Добавляет группу на форму
ГруппаТовары.Заголовок = "Товары на продажу";

Как программно добавить Поле ввода на форму?

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

Как программно добавить колонку в ТЧ?

ТаблицаТовары = Элементы.Товары;
НовыйРеквизит = Элементы.Добавить("Вес", Тип("ПолеФормы"), ТаблицаТовары);
НовыйРеквизит.Заголовок = "Вес";
НовыйРеквизит.Вид = ВидПоляФормы.ПолеВвода;
НовыйРеквизит.ПутьКДанным = "Объект.Товары.Вес";

Как программно вывести табличную часть документа на управляемую форму?

ГруппаТовары = Элементы.ГруппаТовары;
ТаблицаТовары = Элементы.Добавить("ТаблицаТовары", Тип("ТаблицаФормы"),ГруппаТовары;
ТаблицаТовары.ПутьКДанным = "Объект.Товары";
// для создания колонок в созданной таблице используется метод описанный выше "Как программно добавить колонку в ТЧ"

Как Добавить программно флажок на форму?

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

Как установить событие для программно созданного элемента?

НовыйРеквизит = ЭлементыФормы.Добавить("ЭтоИностранныйПоставщик", Тип("ПолеФормы"), ГруппаТовары); 
НовыйРеквизит.Заголовок = "Это иностранный поставщик"; 
НовыйРеквизит.Вид = ВидПоляФормы.ПолеФлажка; 
НовыйРеквизит.ПутьКДанным = "Объект.ЭтоИностранныйПоставщик"; НовыйРеквизит.УстановитьДействие("ПриИзменении", "ЭтоИностранныйПоставщикПриИзменении"); // ЭтоИностранныйПоставщикПриИзменении - это название процедуры которая находится в модуле формы