Очистка Динамически созданной ТЗ

1. user645801_yyyuuu123q 06.09.18 10:51 Сейчас в теме
Здравствуйте. На таблице динамически создаю ТЗ

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


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


Визуально все очищенно. Но при загрузки нового файла выдает ошибку

{ВнешняяОбработка.ЗагрузкаВITIL.Форма.Форма.Форма(196)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(Реквизиты);
по причине:
Неуникальное имя реквизита. Имя: "ТаблицаНаФорме"
По теме из базы знаний
Ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. Boneman 297 06.09.18 11:32 Сейчас в теме
(1) ты удаляешь только реквизиты колонок таблицы на форме, но сама таблица на форме остается.
Ее тоже надо удалить.
4. user645801_yyyuuu123q 07.09.18 02:05 Сейчас в теме
(2) Разве это не оно?
Если ЭлементТаблица <> Неопределено Тогда
		//
		Элементы.Удалить(ЭлементТаблица);
		//
	КонецЕсли;
6. Boneman 297 07.09.18 09:07 Сейчас в теме
(4)
Разве это не оно?

Реквизиты формы и элементы формы - это немного разные вещи.

Ты удалил элемент но не удалил реквизит.

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


далее ты создаешь элементы формы, и связываешь их с созданными реквизитами.


потом удаление
    Реквизиты = Новый Массив;
    Для Каждого Колонка ИЗ Таблица.Колонки Цикл
        //
        Реквизиты.Добавить("ТаблицаНаФорме." + Колонка.Имя); //Добавляешь реквизиты, колонки
        //
    КонецЦикла;
    // 
.....ИВСЕ ! А где реквизит ТаблицаНаФорме ?
    ИзменитьРеквизиты( ,Реквизиты);
Показать


В итоге таблица на форме, у тебя остался.
А ты пытаешься по новой его создать..естественно ошибка
7. user645801_yyyuuu123q 07.09.18 09:34 Сейчас в теме
(6)
Извините пожалуйста немного не понял, ошибка при создании или при очистки?
3. Doreng 22 06.09.18 11:44 Сейчас в теме
(1)
Если ЭлементТаблица <> "ТаблицаНаФорме" Тогда
//
Элементы.Удалить(ЭлементТаблица);
//
КонецЕсли;


Если ЭлементТаблица <> Неопределено Тогда
        //
        Элементы.Удалить(ЭлементТаблица);
        //
    КонецЕсли;

Может так?
user645801_yyyuuu123q; +1 Ответить
5. user645801_yyyuuu123q 07.09.18 05:14 Сейчас в теме
После очистки выглядит так, но ошибка все ровно
{ВнешняяОбработка.ЗагрузкаВITIL.Форма.Форма.Форма(196)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(Реквизиты);
по причине:
Неуникальное имя реквизита. Имя: "ТаблицаНаФорме"
Прикрепленные файлы:
8. user645801_yyyuuu123q 07.09.18 09:48 Сейчас в теме
	Рекв = Новый Массив;
	Рекв.Добавить("ТаблицаНаФорме");
	ИзменитьРеквизиты(,Рекв);
Оставьте свое сообщение
Вакансии
Разработчик 1С
Ростов-на-Дону
зарплата от 230 000 руб. до 260 000 руб.
Полный день

Консультант 1С ERP
Москва
зарплата от 200 000 руб. до 250 000 руб.
Полный день

Аналитик 1C
Самара
зарплата от 160 000 руб. до 180 000 руб.
Полный день

Старший программист 1С
Москва
зарплата от 120 000 руб. до 250 000 руб.
Полный день

Аналитик 1С
Казань
зарплата от 200 000 руб. до 250 000 руб.
Полный день