Имя: Пароль:
1C
1С v8
Как удалить программно добавленную таблицу значений с управляемой формы?
0 Мимохожий Однако
 
05.05.22
10:37
Следующим кодом отобразил таблицу значений на форме
МассивТипаВыбора = Новый Массив;
    МассивТипаВыбора.Добавить(Тип("ТаблицаЗначений"));
    ОписаниеТипаВыбора = Новый ОписаниеТипов(МассивТипаВыбора);    
    //Добавляем поля      
    МассивДобавляемыхРеквизитов = Новый Массив;
    //добавляем табличное поле
    МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы("ТабПрог", ОписаниеТипаВыбора));
    Если ТЗ.Колонки.Количество()=0  Тогда
        Возврат
    КонецЕсли;      
    //добавляем реквизиты полей табличного поля
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        МассивДобавляемыхРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Колонка.ТипЗначения,"ТабПрог",Колонка.Имя));
    КонецЦикла;
    ИзменитьРеквизиты(МассивДобавляемыхРеквизитов);
    //Загружаем ТЗ с полученными данными
    ЭтотОбъект.ТабПрог.Загрузить(ТЗ);
    //Выводим поле формы
    ТаблицаФормы = Элементы.Добавить("ТабПрог", Тип("ТаблицаФормы"));
    ТаблицаФормы.ПутьКДанным = "ТабПрог";
    ТаблицаФормы.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
    ТаблицаФормы.ФиксацияСлева = 3;
    //выводим колонки поля формы
    Для Каждого Колонка Из ТЗ.Колонки Цикл
        НоваяКолонка = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), Элементы.ТабПрог);
        НоваяКолонка.Заголовок = Колонка.Имя;
        НоваяКолонка.ПутьКДанным = "ТабПрог."+Колонка.Имя;
        НоваяКолонка.Вид = ВидПоляФормы.ПолеВвода;
        НоваяКолонка.РежимРедактирования = РежимРедактированияКолонки.ВходПриВводе;
    КонецЦикла;    
..
Теперь надо удалить эту таблицу с формы
Удаляю кодом.
НайдЭлемент=Элементы.Найти("ТабПрог");
Если НЕ НайдЭлемент=Неопределено Тогда
Элементы.Удалить(НайдЭлемент);
КонецЕсли;

Но при повторном формировании таблицы значений на форме выдаёт ошибку по причине:
Неуникальное имя реквизита. Имя: "ТабПрог"
Получается, что я не удалил этот реквизит?!
1 Fish
 
05.05.22
10:39
Реквизит формы и элемент формы - это не одно и то же.
2 vicof
 
05.05.22
10:40
(1) +1
3 Fish
 
05.05.22
10:41
+(1) Ты же сначала добавляешь реквизит, потом элементы формы для реквизита, а удаляешь только элемент.
4 Мимохожий Однако
 
05.05.22
11:02
(3) Я не спорю. Можно пример кода как удалить то, что добавил?
5 Галахад
 
гуру
05.05.22
11:09
Типа того:
    МассивУдалить = Новый Массив;
    МассивУдалить.Добавить("ТабПрог");
    ИзменитьРеквизиты(,МассивУдалить);
6 Мимохожий Однако
 
05.05.22
11:21
(5) Спасибо. То, что надо