Подскажите как очистить ТЗ програмно созданную на форме.

```1c
    ОчиститьСообщения();
    Если ТабФайла.Количество()>0 Тогда
    Если Вопрос("Перед загрузкой табличная часть будет очищена. Продолжить?", РежимДиалогаВопрос.ДаНет) = КодВозвратаДиалога.Нет Тогда
    Возврат;
    Иначе
    ЭтотОбъект.ЭтаФорма.ТабФайла.Очистить();
    //Табфайла.Очистить();
    КонецЕсли;
    КонецЕсли;
```

Очищает ТЗ но колонки остаются.
---
```1c
    РеквизитыТаблицы = ПолучитьРеквизиты("ИмяТаблицы");
    УдаляемыеРеквизиты = Новый Массив;
    Для Каждого Реквизит из РеквизитыТаблицы Цикл
    УдаляемыеРеквизиты.Добавить("ИмяТаблицы." + Реквизит.Имя);
    КонецЦикла;
    ИзменитьРеквизиты(, УдаляемыеРеквизиты);
```
---
Удалить созданные элементы формы и удалить созданные реквизиты - колонки таблицы.
---
ТабФайла создана на форме, добавлен реквизит Табфайла с типом ТЗ, как ее удалить.
А колонки создаются при чтении файла, у одного 5 у второго 3

```1c
    &НаСервере
    Процедура СоздатьТаблицуНаФормеНаСервере(ИмяВременногоФайла)

    // программно создаём таблицу значений ДанныеФайла
    Разделитель = ";";
    ДанныеФайла = новый ТаблицаЗначений;
    Шапка = ИмяВременногоФайла.ПолучитьСтроку(1);
    МассивКол = СтрРазделить(Шапка, Разделитель);
    ВсКолонокФакт = 0;
    Для Каждого ИмяСт Из МассивКол Цикл
    ОписаниеСтроки = Новый ОписаниеТипов("Строка");
    ОписаниеНоменклатуры = Новый ОписаниеТипов("СправочникСсылка.Номенклатура");
    ОписаниеЦена = Новый ОписаниеТипов("Число",Новый КвалификаторыЧисла(15, 2));
    ИмяБП = СтрЗаменить(ИмяСт," ",");
    Если ИмяБП = "Номенклатура" Тогда
    ВсКолонокФакт = ВсКолонокФакт+1;
    ДанныеФайла.Колонки.Добавить(ИмяБП,ОписаниеНоменклатуры, ИмяБП);
    Иначе
    ВсКолонокФакт = ВсКолонокФакт+1;
    НаименованиеКолонки = СтрЗаменить(ИмяБП, Символ(32), ");
    ДанныеФайла.Колонки.Добавить(НаименованиеКолонки,ОписаниеЦена, ИмяСт);
    КонецЕсли;
    КонецЦикла;
```
---
В данном коде вы ничего с Табфайла не делаете. Тут вы программно создаете ДанныеФайла – объект ТаблицаЗначений, который будет уничтожен сразу же после выхода из вашей процедуры.
---
```1c
    ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ДанныеФайла, "ТабФайла", "ТЗфайла");
```

и вот сама процедура на сервере

```1c
    &НаСервере
    Процедура ВывестиТаблицуЗначенияВКодеВТаблицуНаФорме(ТабВКоде, ТабРеквизит, ТабНаФорме)

    НовыеРеквизиты = Новый Массив;

    Для Каждого Колонка Из ТабВКоде.Колонки Цикл
    НовыеРеквизиты.Добавить(
    Новый РеквизитФормы(
    Колонка.Имя, Колонка.ТипЗначения,
    ТабРеквизит
    )
    );
    КонецЦикла;

    ИзменитьРеквизиты(НовыеРеквизиты);

    Для Каждого Колонка Из ТабВКоде.Колонки Цикл

    НовыйЭлемент = Элементы.Добавить(
    ТабРеквизит + "_" + Колонка.Имя, Тип("ПолеФормы"), Элементы[ТабНаФорме]
    );
    НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
    НовыйЭлемент.ПутьКДанным = ТабРеквизит + "." + Колонка.Имя;
    КонецЦикла;

    ЗначениеВРеквизитФормы(ТабВКоде, ТабРеквизит);

    КонецПроцедуры
```
---
Только переоткрывать форму?
---
```1c
    УдаляемыеРеквизиты = "ИмяТаблицы.ИмяРеквизита1, ИмяТаблицы.ИмяРеквизита2...";
    УдаляемыеРеквизиты = СтрРазделить(УдаляемыеРеквизиты, ",");
    ИзменитьРеквизиты(, УдаляемыеРеквизиты);
```
---
```1c
    РеквизитыТаблицы = ПолучитьРеквизиты("ИмяТаблицы");
    УдаляемыеРеквизиты = Новый Массив;
    Для Каждого Реквизит из РеквизитыТаблицы Цикл
    УдаляемыеРеквизиты.Добавить("ИмяТаблицы." + Реквизит.Имя);
    КонецЦикла;
    ИзменитьРеквизиты(, УдаляемыеРеквизиты);
```
---
не хватило удаления элементов ранее созданных!

```1c
    &НаСервере
    Процедура СоздатьКолонкиТаблицыНаФорме(МассивКолонок)

    РеквизитыТаблицы = ПолучитьРеквизиты("ТЗ");

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

    Для Каждого РеквизитТаблицы Из РеквизитыТаблицы Цикл

    УдаляемыеРеквизиты.Добавить("ТЗ." + РеквизитТаблицы.Имя);

    КонецЦикла;

    КвалификаторСтрока = Новый КвалификаторыСтроки(0);

    МассивТипов = Новый Массив;
    МассивТипов.Добавить(Тип("Строка"));

    ТипСтрока = Новый ОписаниеТипов(МассивТипов, , КвалификаторСтрока);

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

    Для Каждого СтрокаЭлемент Из МассивКолонок Цикл

    ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы(СтрокаЭлемент, ТипСтрока, "ТЗ"));

    КонецЦикла;

    ИзменитьРеквизиты(ДобавляемыеРеквизиты, УдаляемыеРеквизиты);

    // Удалим элементы ранее созданные
    МассивЭлементов = Новый Массив;

    Для Каждого ТекущийЭлементТаблицы Из Элементы.ТЗ.ПодчиненныеЭлементы Цикл

    МассивЭлементов.Добавить(ТекущийЭлементТаблицы);

    КонецЦикла;

    Для Каждого ЭлементУдаление Из МассивЭлементов Цикл

    Элементы.Удалить(ЭлементУдаление);

    КонецЦикла;

    Для Каждого СтрокаЭлемент Из МассивКолонок Цикл

    Элемент = Элементы.Добавить("Колонка" + СтрокаЭлемент, Тип("ПолеФормы"), Элементы.ТЗ);
    Элемент.Вид = ВидПоляФормы.ПолеНадписи;
    Элемент.ПутьКДанным = "ТЗ" + "." + СтрокаЭлемент;
    Элемент.Заголовок = СтрокаЭлемент;

    КонецЦикла;

    // заполним таблицу, у меня не было излишний код
    //ЗначениеВРеквизитФормы(Таблица, "ТаблицаНаФорме");

    КонецПроцедуры
```
---
Отличное решение. Все работает.