Как добавить или удалить колонки в табличной части


Часто бывает ситуация, когда необходимо программно управлять составом табличной части в управляемой форме.
В данном примере рассмотрим следующую ситуацию: есть управляемая форма, на управляемой форме есть таблица - связанная с реквизитом формы. Нам надо удалить одни колонки и добавить другие программным способом. Массив удаляемых и добавляемых колонок определен нами заранее.

Перед добавлением новых элементов на форму, необходимо добавить сами реквизиты формы:


МассивДобавляемыхРеквизитов = Новый Массив;

Для Каждого тЭлемент из МассивИмен Цикл //массив имен содержит названия колонок. для упрощения примера все колонки имеют строковый тип реквизита.
      МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(тЭлемент, //название реквизита
                                                               Новый ОписаниеТипов("Строка"), //тип реквизита
                                                               "Данные")); //родитель, в нашем случае название табличной части
КонецЦикла;


Теперь определим удаляемые реквизиты:

 МассивУдаляемыхРеквизитов = Новый Массив;

Для Каждого тЭлемент из МассивУдаляемыхИмен Цикл
      Если ЭтаФорма.Элементы.Найти("Данные"+тЭлемент) <> Неопределено Тогда
            МассивУдаляемыхРеквизитов.Добавить("Данные."+тЭлемент);
        КонецЕсли;
КонецЦикла;


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

 ЭтаФорма.ИзменитьРеквизиты(МассивДобавляемыхРеквизитов, МассивУдаляемыхРеквизитов); 


После редактирования реквизитов можно приступать к редактированию элементов формы:

Удаление колонок:

 Для Каждого тЭлемент из МассивУдаляемыхИмен Цикл
        нЭлемент = ЭтаФорма.Элементы.Найти("Данные"+тЭлемент);
        Если нЭлемент <> Неопределено Тогда
            Элементы.Удалить(нЭлемент);
        КонецЕсли;
  КонецЦикла;


Добавление новых колонок:

 Для Каждого тЭлемент из МассивИмен Цикл
        нЭлемент = ЭтаФорма.Элементы.Добавить("Данные"+тЭлемент, Тип("ПолеФормы"), ЭтаФорма.Элементы.Данные);
        нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        нЭлемент.ПутьКДанным = "Данные."+тЭлемент;
        нЭлемент.Видимость = Истина;
  КонецЦикла;

Ведущий программист 1С

Тельнова Яна



Если у вас возникли вопросы, вы можете обратиться к нашим специалистам