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

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

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

Показать


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

Показать


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

{ВнешняяОбработка.ЗагрузкаВITIL.Форма.Форма.Форма(196)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты)
ИзменитьРеквизиты(Реквизиты);
по причине:
Неуникальное имя реквизита. Имя: "ТаблицаНаФорме"
По теме из базы знаний
Найденные решения
6. Boneman 302 07.09.18 09:07 Сейчас в теме
(4)
Разве это не оно?

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

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

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


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


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


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

6. Boneman 302 07.09.18 09:07 Сейчас в теме
(4)
Разве это не оно?

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

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

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


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


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


В итоге таблица на форме, у тебя остался.
А ты пытаешься по новой его создать..естественно ошибка
7. user645801_yyyuuu123q 07.09.18 09:34 Сейчас в теме
(6)
Извините пожалуйста немного не понял, ошибка при создании или при очистки?
3. Doreng 28 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 Сейчас в теме
    Рекв = Новый Массив;
    Рекв.Добавить("ТаблицаНаФорме");
    ИзменитьРеквизиты(,Рекв);

Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот