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