Одной из самых частых задач для 1С Программиста является модификация формы в стандартных конфигурациях, которые находятся на поддержке. И в этом случае элементы формы необходимо создавать только программным способом.
Любое изменение форм в конфигурации, находящейся на поддержке, делается только в расширении конфигурации, что бы оставалась возможность автоматического обновления конфигурации.
Вручную в конструкторе форм этого делать нельзя, так как при обновлении конфигурации все наработки могут слететь и по этой причине все новые элементы формы добавляются программным способом.
Для добавления элемента на форму необходимо программным способом повторить процедуру добавления элемента в конструкторе формы. Т.е. если для поля ввода сначала необходимо создать реквизит формы, а потом добавить элемент формы, то и с помощью программного кода сначала необходимо создать реквизит формы, а уже потом добавлять элемент формы.
Пример создания элементов формы, не требующих реквизитов или команд, и это группы и декорации формы:
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
//Добавление группы формы ОбычнаяГруппа = ЭтаФорма.Элементы.Добавить("ОбычнаяГруппа", Тип("ГруппаФормы")); ОбычнаяГруппа.Вид = ВидГруппыФормы.ОбычнаяГруппа; ОбычнаяГруппа.Группировка = ГруппировкаПодчиненныхЭлементовФормы.Вертикальная; ОбычнаяГруппа.Заголовок= "Обычная группа"; ОбычнаяГруппа.Поведение = ПоведениеОбычнойГруппы.Свертываемая; ОбычнаяГруппа.ЗаголовокСвернутогоОтображения = "Обычная группа свернута"; //Добавление декорации формы. ДекорацияФормы = ЭтаФорма.Элементы.Добавить("ДекорацияФормы", Тип("ДекорацияФормы"), ОбычнаяГруппа); ДекорацияФормы.Вид = ВидДекорацииФормы.Надпись; ДекорацияФормы.Заголовок = "Декорация формы для отображения Группы"; //Добавление группы формы - Страницы ГруппаСтраницы = ЭтаФорма.Элементы.Добавить("Страницы", Тип("ГруппаФормы"), ОбычнаяГруппа); ГруппаСтраницы.Вид = ВидГруппыФормы.Страницы; ГруппаСтраницы.Заголовок= "Группа страницы"; //Добавление группы формы - Страница ГруппаСтраница = ЭтаФорма.Элементы.Добавить("Страница", Тип("ГруппаФормы"), ГруппаСтраницы); ГруппаСтраница.Вид = ВидГруппыФормы.Страница; ГруппаСтраница.Заголовок= "Страница 1"; //Добавление декорации формы. ДекорацияФормы = ЭтаФорма.Элементы.Добавить("ДекорацияФормы_2", Тип("ДекорацияФормы"), ГруппаСтраница); ДекорацияФормы.Вид = ВидДекорацииФормы.Надпись; ДекорацияФормы.Заголовок = "Декорация формы для отображения Страницы 1"; //Добавление группы формы - Страница ГруппаСтраница_2 = ЭтаФорма.Элементы.Добавить("Страница_2", Тип("ГруппаФормы"), ГруппаСтраницы); ГруппаСтраница_2.Вид = ВидГруппыФормы.Страница; ГруппаСтраница_2.Заголовок= "Страница 2"; //Добавление декорации формы. ДекорацияФормы = ЭтаФорма.Элементы.Добавить("ДекорацияФормы_3", Тип("ДекорацияФормы"), ГруппаСтраница_2); ДекорацияФормы.Вид = ВидДекорацииФормы.Надпись; ДекорацияФормы.Заголовок = "Декорация формы для отображения Страницы 2"; |
Пример создание полей ввода с реквизитами
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
//Добавление реквизитов формы ДобавляемыеРеквизиты = Новый Массив; //ТипСтрока ТипРеквизитаСтрока = Новый ОписаниеТипов("Строка"); РеквизитФормыСтрока = Новый РеквизитФормы("РеквизитСтрока", ТипРеквизитаСтрока); ДобавляемыеРеквизиты.Добавить(РеквизитФормыСтрока); //ТипЧисло ТипРеквизитаЧисло = Новый ОписаниеТипов("Число"); РеквизитФормыЧисло = Новый РеквизитФормы("РеквизитЧисло", ТипРеквизитаЧисло); ДобавляемыеРеквизиты.Добавить(РеквизитФормыЧисло); //ТипБулево ТипРеквизитаБулево = Новый ОписаниеТипов("Булево"); РеквизитФормыБулево = Новый РеквизитФормы("РеквизитБулево", ТипРеквизитаБулево); ДобавляемыеРеквизиты.Добавить(РеквизитФормыБулево); //ТипСсылка ТипРеквизитаСсылка = Новый ОписаниеТипов("СправочникСсылка.Номенклатура"); РеквизитФормыСсылка = Новый РеквизитФормы("РеквизитСсылка", ТипРеквизитаСсылка); ДобавляемыеРеквизиты.Добавить(РеквизитФормыСсылка); ИзменитьРеквизиты(ДобавляемыеРеквизиты); //Добавление элементов формы - Поле ввода Тип Строка ПолеВводаСтрока = ЭтаФорма.Элементы.Добавить("ПолеВводаСтрока", Тип("ПолеФормы"), ОбычнаяГруппа); ПолеВводаСтрока.Вид = ВидПоляФормы.ПолеВвода; ПолеВводаСтрока.Заголовок= "Поле ввода строка"; ПолеВводаСтрока.ПутьКДанным = "РеквизитСтрока"; //Добавление элементов формы - Поле ввода Тип Число ПолеВводаЧисло = ЭтаФорма.Элементы.Добавить("ПолеВводаЧисло", Тип("ПолеФормы"), ОбычнаяГруппа); ПолеВводаЧисло.Вид = ВидПоляФормы.ПолеВвода; ПолеВводаЧисло.Заголовок= "Поле ввода число"; ПолеВводаЧисло.ПутьКДанным = "РеквизитЧисло"; ПолеВводаЧисло.КнопкаРегулирования = Истина; ПолеВводаЧисло.КнопкаВыбора = Истина; //Добавление элементов формы - Поле ввода Тип Булево ПолеВводаБулево = ЭтаФорма.Элементы.Добавить("ПолеВводаБулево", Тип("ПолеФормы"), ОбычнаяГруппа); ПолеВводаБулево.Вид = ВидПоляФормы.ПолеФлажка; ПолеВводаБулево.Заголовок= "Поле ввода Булево"; ПолеВводаБулево.ПутьКДанным = "РеквизитБулево"; //Добавление элементов формы - Поле ввода Тип Ссылка ПолеВводаСсылка = ЭтаФорма.Элементы.Добавить("ПолеВводаСсылка", Тип("ПолеФормы"), ОбычнаяГруппа); ПолеВводаСсылка.Вид = ВидПоляФормы.ПолеВвода; ПолеВводаСсылка.Заголовок= "Поле ввода Ссылка"; ПолеВводаСсылка.ПутьКДанным = "РеквизитСсылка"; |
Пример добавления кнопки на форму
|
1 2 3 4 5 6 7 8 9 10 |
//Добавление команды КомандаФормы = Команды.Добавить("КомандаФормы"); КомандаФормы.Действие = "ОбработчикКомандыФормы"; //Добавление кнопки на форму КнопкаФормы = ЭтаФорма.Элементы.Добавить("КонопкаФормы", Тип("КнопкаФормы"), ОбычнаяГруппа); КнопкаФормы.Заголовок = "Кнопка формы"; КнопкаФормы.КнопкаПоУмолчанию = Истина; КнопкаФормы.ИмяКоманды = "КомандаФормы"; |
В данной публикации рассмотрены только простые элементы формы, которые можно добавить программно. В следующих публикациях будут рассмотрены варианты добавления на форму более сложных типов, таких как Таблица значений, Динамический список и другие элементы.
Главное, при добавлении помнить, что все названия свойств элементов можно брать из палитры свойств элементов формы и в некоторых случаях этих свойств не будет в контекстной подсказки модуля формы (недоработка разработчиков конфигуратора).

Скачать обработку с текущими примерами создания элементов формы можно по адресу: https://disk.yandex.ru/d/_LRi9rZsCMdsIw
