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

1. Реквизит формы

  • Создаем новый массив для реквизитов добавляемых на форму.
  • Создаем новый массив для типов реквизита формы.
  • Создаем новый реквизит формы.
  • (обязательный). Тип: Строка. Имя реквизита.
  • (обязательный). Тип: ОписаниеТипов. Тип реквизита.
  • (необязательный). Тип: Строка. Путь к создаваемому реквизиту. Не включает имя реквизита. Значение по умолчанию: Пустая строка.
  • (необязательный). Тип: Строка. Содержит отображаемый текст реквизита. Значение по умолчанию: Пустая строка.
  • (необязательный). Тип: Булево. Реквизит содержит сохраняемые данные. Истина — сохраняемый реквизит формы.

Изменяем структуру реквизитов формы.

Процедура ИзменитьРеквизиты( , ) предназначена для удаления и добавления реквизитов формы.

Код для добавления реквизита формы целиком:

2. Элемент формы формы

    Создаем элемент формы

  • (обязательный). Тип: Строка. Уникальное имя добавляемого элемента.
  • (обязательный). Тип: Тип. Тип добавляемого элемента.
  • (необязательный). Тип: ГруппаФормы; ТаблицаФормы; УправляемаяФорма. Родитель для добавляемого элемента. Если не указан, то добавляется на верхний уровень.
  • Возвращаемое значение: Тип: ДекорацияФормы; ГруппаФормы; КнопкаФормы; ТаблицаФормы; ПолеФормы.
  • Настраиваем элемент формы
  • Guesto notes

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

    Задача

    Для наглядности разберем простой пример, в котором можно было обойтись только элементами формы, но мы создадим и реквизиты.

    Есть некая в конфигурация, в форме элемента справочника «Номенклатура» необходимо программно создавать реквизиты формы и элементы к ним:

    • ЯчейкаХранения, тип СправочникСсылка.ЯчейкиХранения;
    • ТекущийОстаток, тип Число.
    Читайте также  При скачивании пишет недостаточно памяти

    Элементы объединить в группу с горизонтальной группировкой. На текущий момент форма имеет следующий вид:

    Решение

    В обработчике формы ПриСозданииНаСервере() опишем код, который разбивается на 3 этапа:

    1. Описание и создание реквизитов формы;
    2. Создание элементов формы, объединение в группу без отображения;
    3. Заполнение данных.

    Ниже приведен готовый код, код снабжен комментариями и разбит на области для лучшего понимания:

    После выполнения приведенного кода форма будет выглядеть так:

    Для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты().

    Внимание. Удалять можно только реквизиты созданные программно.

    Добавление реквизита табличной части

    Добавление реквизита и элемента формы для табличной части почти ничем не отличается, необходимо только указать путь «Объект. ». Ниже пример добавления реквизита Ячейка в ТЧ Комплектация.

    Добавление реквизита с типом Произвольный

    В одной из задач стало необходимо добавить реквизит с типом Произвольный, но ни СП, ни интернеты ответа не дали. В итоге через несколько попыток было найдено решение

    Внимание. Данные добавленного реквизита сохраняться в ИБ не будут.

    UPD 2017-05-28 Статья переработана, добавлен вариант применения с примером кода.
    UPD 2017-08-07 По просьбе из комментария, в статью добавлен пример программного добавления реквизита табличной части.

    Комментарии 13

    Автору для начала стоит разобраться что есть Форма, а что есть Объект, а затем лезть со своими статьями в интернет.

    1. Ну очень конструктивная критика;
    2. Читайте СП;
    3. Не болейте)

    P.S. Комментарии модерируются, ссылки не относящиеся к делу нещадно удаляются.

    Внимание. Удалять можно только реквизиты созданные программно.

    ППЦ, а на остальных табу наложено?

    Иди читай книжки, грамотей!

    Дык, читаю

    Красиво оформленный код. И полезный.

    Альберт, спасибо!
    Пишу код по заветам Стива Макконелла:

    Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живёте

    А как добавить реквизит к табличной части документа?

    Читайте также  Розыск разобрать по составу

    Дмитрий, в статью добавлен пример добавления реквизита табличной части.

    Спасибо, очень помогло.
    Подскажите а как программно добавить табличную часть на форму?

    А пример удаления, собственно, где?

    Роман, для удаления необходимо передать массив реквизитов на удаление в качестве второго параметра метода формы ИзменитьРеквизиты(). Все аналогично добавлению, смысла описывать не вижу.

    Автору большой респект! Статья написана на отлично! Все очень доступно и красиво — просто, бери и пользуйся.

    По удалению реквизитов — неправильно, в массиве передается не «массив реквизитов», а «Массив, содержащий строки, описывающие пути к удаляемым реквизитам».

    Программирование системы 26.04.2018 11:57 3240

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

    Добавление поля ввода управляемой формы

    В данном примере, реализован механизм программного добавления поля ввода управляемой формы. Перед добавление элемента формы необходимо создать реквизит формы для хранения данных. Если реквизит уже существует, то его ненужно создавать программно.

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

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

    Добавление надписи (декорации) управляемой формы

    Для того чтобы добавить сообщение, необходимо Войти или Зарегистрироваться

    Ссылка на основную публикацию
    Adblock
    detector