Имя: Пароль:
1C
 
удалить программно созданные элементы на форме.
,
0 Олеся999
 
08.02.17
11:37
Доброго времени суток.
Не могу удалить программно созданные элементы на форме.
Подскажите пожалуйста, как это можно сделать?)

Элементы создавала так:

&НаСервере
Процедура Команда1НаСервере()
    СчетчикНаим = СчетчикНаим + 1;

    ДобавляемыеРеквизиты = Новый Массив;
    цум =    СчетчикНаим ;
    ИмяСтраницы = Строка(цум);
    
    Реквизит11 = Новый РеквизитФормы("ф"+ ИмяСтраницы, Новый ОписаниеТипов("Строка"));  //Тут указываем тип

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

    Элемент33 = ИмяСтраницы;
    Элемент33 = ЭтаФорма.Элементы.Добавить("ОтборКомментарий"+ ИмяСтраницы, Тип("ПолеФормы"), ЭтаФорма.Элементы.Группа1);
    Элемент33.Вид = ВидПоляФормы.ПолеВвода;
    Элемент33.ПутьКДанным = "ф"+ ИмяСтраницы;
    ЭтотОбъект["Ф"+ ИмяСтраницы] = "текст произвольный";
    КонецПроцедуры

&НаКлиенте
    Процедура ПриОткрытии(Отказ)
    СчетчикНаим = 22;
    КонецПроцедуры

&НаКлиенте
    Процедура Команда1(Команда)

Команда1НаСервере();
    КонецПроцедуры
1 vicof
 
08.02.17
11:39
Вот зачем вам всем удалять реквизиты с формы?
Не проще ли их туда не добавлять?
2 butterbean
 
08.02.17
11:43
(0) нафига в УФ что-то удалять вообще? меняй видимость и все
3 Олеся999
 
08.02.17
11:44
(1) Еще предложите их не замечать, или стикером залепить на мониторе ))
4 vicof
 
08.02.17
11:45
(3) Предлагаю не добавлять
5 Олеся999
 
08.02.17
11:46
(4) Да просто нужно делать программно потому что не понятно сколько их вообще будет, зависит от условия.
6 vicof
 
08.02.17
11:58
7 FIXXXL
 
08.02.17
12:06
Процедура УдалитьПрограммноСозданныеРеквизитыИЭлементы()
    
    //удаление ранее созданных программно колонок
    
    //убираем элементы формы
    Для каждого ЭлементФ Из СписокУдаляемыхЭлементов Цикл
        НайденныйЭлементФормы = ЭтаФорма.Элементы.Найти(ЭлементФ.Значение);
        Если НайденныйЭлементФормы <> Неопределено  Тогда
            ЭтаФорма.Элементы.Удалить(НайденныйЭлементФормы);
        КонецЕсли;
    КонецЦикла;
    
    //убираем реквизиты формы
    УдаляемыеРеквизиты = Новый Массив;
    Для каждого ЭлементСписка Из СписокУдаляемыхРеквизитов Цикл
        УдаляемыеРеквизиты.Добавить(ЭлементСписка.Значение);
    КонецЦикла;    
    ИзменитьРеквизиты(,УдаляемыеРеквизиты);
    
    СписокУдаляемыхРеквизитов.Очистить();
    СписокУдаляемыхЭлементов.Очистить();
        
КонецПроцедуры


при создании реквизитов и элементов я их запоминаю в реквизиты формы с типом СписокЗначений
8 Олеся999
 
08.02.17
12:31
(6) Чем является СписокРеквизитов понять не могу.

    
    Если СписокРеквизитов.Количество() > 0 Тогда
        МассивУдаления = Новый Массив;
        МассивПоля = Новый Массив;
        Для Каждого УдаляемыйЭлемент Из Элементы.Группа1.ПодчиненныеЭлементы Цикл
            ЭлементУдаления = УдаляемыйЭлемент.ПутьКДанным;
            ПолеУдаляемогоЭлемента = Элементы.Группа1.ПодчиненныеЭлементы.Найти(УдаляемыйЭлемент.ПутьКДанным);
            МассивПоля.Добавить(ПолеУдаляемогоЭлемента);
            МассивУдаления.Добавить(ЭлементУдаления);
        КонецЦикла;
        Для Каждого Стр Из Массивполя Цикл
            Элементы.Удалить(Стр);
        КонецЦикла;
        ИзменитьРеквизиты(,МассивУдаления);
        МассивУдаления.Очистить();
        СписокРеквизитов.Очистить();
    КонецЕсли;
9 Олеся999
 
08.02.17
13:04
(7) СписокУдаляемыхЭлементов   тз или что ?
10 FIXXXL
 
08.02.17
14:18
(9) при создании реквизитов и элементов я их запоминаю в реквизиты формы с типом СписокЗначений
СписокУдаляемыхЭлементов - реквизит формы типа СписокЗначений, в нем текстовые представления того. что удаляем