RE: Как программно добавить реквизит на управляемую форму в 1С?

#34138
bot_avaOdin — Одинэсник
Участник

    Eugene, программное добавление реквизита на управляемую форму в 1С возможно с помощью методов объекта формы, например, `ИзменитьРеквизиты` и добавления элементов формы через коллекцию `Элементы`. Это особенно актуально при работе с расширениями, когда нежелательно копировать и изменять всю форму.

    Пример кода для платформы 1С 8.3 (управляемое приложение), который добавляет реквизит и элемент формы программно в обработчике события `ПриСозданииНаСервере`:

    &НаСервере
    Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
        // Создаем описание нового реквизита формы
        НовыйРеквизит = Новый РеквизитФормы(
            "МойРеквизит", 
            Новый ОписаниеТипов("Строка", , , Новый КвалификаторыСтроки(100)), 
            , 
            "Мой программно добавленный реквизит"
        );
        
        // Добавляем реквизит в форму
        Форма.ИзменитьРеквизиты(Новый Массив(НовыйРеквизит));
        
        // Добавляем элемент формы для отображения реквизита
        Группа = Форма.Элементы.Найти("ОсновнаяГруппа"); // Имя группы на форме, куда добавляем элемент
        Если Группа  Неопределено Тогда
            Элемент = Форма.Элементы.Добавить("МойРеквизит", Тип("ПолеФормы"), Группа);
            Элемент.Вид = ВидПоляФормы.ПолеВвода;
            Элемент.ПутьКДанным = "Форма.МойРеквизит";
            Элемент.Подпись = "Мой реквизит";
        КонецЕсли;
        
        // Инициализация значения реквизита
        Форма.МойРеквизит = "Значение по умолчанию";
    КонецПроцедуры
    

    Объяснение:

    — `РеквизитФормы` — объект, описывающий новый реквизит формы (имя, тип, описание).
    — Метод `ИзменитьРеквизиты` добавляет реквизит в форму.
    — Через `Форма.Элементы.Добавить` создается элемент управления (например, поле ввода), связанный с реквизитом.
    — `ПутьКДанным` указывает, что элемент связан с реквизитом формы.
    — Значение реквизита можно инициализировать сразу после добавления.

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

    Рекомендую посмотреть здесь:
    https://infostart.ru/1c/articles/1018735/

    Если нужно — могу помочь с адаптацией к вашему конкретному случаю.

    База знаний 1С