Содержание
1. Реквизит формы
- Создаем новый массив для реквизитов добавляемых на форму.
- Создаем новый массив для типов реквизита формы.
- Создаем новый реквизит формы.
- (обязательный). Тип: Строка. Имя реквизита.
- (обязательный). Тип: ОписаниеТипов. Тип реквизита.
- (необязательный). Тип: Строка. Путь к создаваемому реквизиту. Не включает имя реквизита. Значение по умолчанию: Пустая строка.
- (необязательный). Тип: Строка. Содержит отображаемый текст реквизита. Значение по умолчанию: Пустая строка.
- (необязательный). Тип: Булево. Реквизит содержит сохраняемые данные. Истина — сохраняемый реквизит формы.
Изменяем структуру реквизитов формы.
Процедура ИзменитьРеквизиты( , ) предназначена для удаления и добавления реквизитов формы.
Код для добавления реквизита формы целиком:
2. Элемент формы формы
-
Создаем элемент формы
- (обязательный). Тип: Строка. Уникальное имя добавляемого элемента.
- (обязательный). Тип: Тип. Тип добавляемого элемента.
- (необязательный). Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма. Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.
- Возвращаемое значение: Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы.
Guesto notes
При разработке решений возникает необходимость добавить реквизит формы, состав и типы которых зависят от данных. Например при построении динамических деревьев с периодами, или при выводе контактной информации и т.д.
Задача
Для наглядности разберем простой пример, в котором можно было обойтись только элементами формы, но мы создадим и реквизиты.
Есть некая в конфигурация, в форме элемента справочника «Номенклатура» необходимо программно создавать реквизиты формы и элементы к ним:
- ЯчейкаХранения, тип СправочникСсылка.ЯчейкиХранения;
- ТекущийОстаток, тип Число.
Элементы объединить в группу с горизонтальной группировкой. На текущий момент форма имеет следующий вид:
Решение
В обработчике формы ПриСозданииНаСервере() опишем код, который разбивается на 3 этапа:
- Описание и создание реквизитов формы;
- Создание элементов формы, объединение в группу без отображения;
- Заполнение данных.
Ниже приведен готовый код, код снабжен комментариями и разбит на области для лучшего понимания:
После выполнения приведенного кода форма будет выглядеть так:
Для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты().
Внимание. Удалять можно только реквизиты созданные программно.
Добавление реквизита табличной части
Добавление реквизита и элемента формы для табличной части почти ничем не отличается, необходимо только указать путь «Объект. ». Ниже пример добавления реквизита Ячейка в ТЧ Комплектация.
Добавление реквизита с типом Произвольный
В одной из задач стало необходимо добавить реквизит с типом Произвольный, но ни СП, ни интернеты ответа не дали. В итоге через несколько попыток было найдено решение
Внимание. Данные добавленного реквизита сохраняться в ИБ не будут.
UPD 2017-05-28 Статья переработана, добавлен вариант применения с примером кода.
UPD 2017-08-07 По просьбе из комментария, в статью добавлен пример программного добавления реквизита табличной части.
Комментарии 13
Автору для начала стоит разобраться что есть Форма, а что есть Объект, а затем лезть со своими статьями в интернет.
1. Ну очень конструктивная критика;
2. Читайте СП;
3. Не болейте)
P.S. Комментарии модерируются, ссылки не относящиеся к делу нещадно удаляются.
Внимание. Удалять можно только реквизиты созданные программно.
ППЦ, а на остальных табу наложено?
Иди читай книжки, грамотей!
Дык, читаю
Красиво оформленный код. И полезный.
Альберт, спасибо!
Пишу код по заветам Стива Макконелла:
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте
А как добавить реквизит к табличной части документа?
Дмитрий, в статью добавлен пример добавления реквизита табличной части.
Спасибо, очень помогло.
Подскажите а как программно добавить табличную часть на форму?
А пример удаления, собственно, где?
Роман, для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты(). Все аналогично добавлению, смысла описывать не вижу.
Автору большой респект! Статья написана на отлично! Все очень доступно и красиво — просто, бери и пользуйся.
По удалению реквизитов — неправильно, в массиве передается не «массив реквизитов», а «Массив, содержащий строки, описывающие пути к удаляемым реквизитам».
Сегодня поговорим о том, как программно создать кнопку и поле ввода в управляемой форме.
Программное создание кнопки
Для создания кнопки, нам потребуется добавить команду, саму кнопку и обработчик ее нажатия (это по желанию).
Все манипуляции нужно проводить на сервере.
Выглядит все это приблизительно так:
Программное создание поля ввода
Для создания поля ввода потребуется добавить форме реквизит и само поле ввода, как и в случае с кнопкой, все манипуляции нужно проводить на сервере.
Выглядит все это, приблизительно так:
Если создаваемый элемент нужно поместить в какую-либо группу, то это делается при создании этого элемента, указыванием нужного родителя:
В данном случае кнопка добавиться в элемент с названием «Группа1» и будет отображаться в соответствие со свойствами этого элемента.
Как видите, все очень просто, и если захотеть, то всю форму в управляемом приложении можно рисовать программно (другие элементы управления создаются аналогично).
На этом все, надеюсь данная статья Вам помогла.
Если Вы нашли ошибку или неточность, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.