1с программно создать реквизит формы

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

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

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

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

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

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

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

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

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

    Задача

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

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

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

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

    Решение

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    Дык, читаю

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

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

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

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

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

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

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

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

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

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

    Сейчас форма имеет следующий вид:

    После добавления новых элементов она будет иметь вид:

    Итак, добавляем реквизиты:

    • ЕдиницаИзмерения , тип СправочникСсылка.ЕдиницыИзмерения ;
    • ТекущийОстаток , тип Число .

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

    Теперь посмотрим, как можно изменить основной реквизит формы. Изменим табличную часть Состав документа РасходнаяНакладная :

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

    Понравилась статья? Поделиться с друзьями:
    Vkontakte.INFO
    Добавить комментарий

    ;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: