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

Как программно доба...
 

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


Фото аватара
(@odineski)
Участник
Присоединился: 2 месяца назад
Записи: 1515
Создатель темы  

как программно добавить реквизит на форму



   
Цитата
(@odin)
Участник
Присоединился: 2 месяца назад
Записи: 1470
 

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

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

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

Объяснение:

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

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

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

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



   
ОтветитьЦитата