Имя: Пароль:
1C
 
Правильное удаление элемента с формы
0 NIGHTHUNTER
 
23.04.21
06:40
Делаю процедуру, которая по установленной галке создает список значения программно на форме.
Если галка снимается, список удаляется. Но вот когда ставишь его повторно идет ошибка,  -
Как правильно удалить, что бы потом создавать снова, при повторных установках галки ?

   Неуникальное имя реквизита. Имя: "СписокДляXLS"
   {ВнешняяОбработка.ПанельЗаготовок_0_20_22.Форма.Форма.Форма(1609)}:        ИзменитьРеквизиты(ДобавляемыеРеквизиты);
   {ВнешняяОбработка.ПанельЗаготовок_0_20_22.Форма.Форма.Форма(1636)}:        СоздатьСписокДляXLS();

   по причине:
   Неуникальное имя реквизита. Имя: "СписокДляXLS"


    СпXLS = Элементы.Найти("СписокДляXLS");
    Если СпXLS = Неопределено Тогда
        ДобавляемыеРеквизиты = Новый Массив;
        ДобавляемыеРеквизиты.Добавить(Новый РеквизитФормы("СписокДляXLS", Новый ОписаниеТипов("Строка")));
        ИзменитьРеквизиты(ДобавляемыеРеквизиты);
        //
        СписокДляXLS                                              = Элементы.Добавить("СписокДляXLS",  Тип("ПолеФормы"), Элементы.ГруппаОпцииГоризонтальные_2);
        СписокДляXLS.Вид                                           = ВидПоляФормы.ПолеВвода;
        СписокДляXLS.ПутьКДанным                                   = "СписокДляXLS";
        СписокДляXLS.ПоложениеЗаголовка                            = ПоложениеЗаголовкаЭлементаФормы.Нет;
        //
        ЭтаФорма.Элементы.СписокДляXLS.КнопкаОчистки            = Истина;
        ЭтаФорма.Элементы.СписокДляXLS.КнопкаВыпадающегоСписка  = Истина;    
        //
        ЭтаФорма.Элементы.СписокДляXLS.СписокВыбора.Добавить("COMОбъект",         "COMОбъект");    
        ЭтаФорма.Элементы.СписокДляXLS.СписокВыбора.Добавить("ТабличныйДокумент", "ТабличныйДокумент");  
    Иначе
        Элементы.Удалить(СпXLS);
    КонецЕсли;
КонецПроцедуры
//
1 ДенисЧ
 
23.04.21
06:41
А азчем удалять-добавлять? Просто видимостью поиграться - не вариант?
2 NIGHTHUNTER
 
23.04.21
10:13
(1) Ну так хочу подкопаться. Можно и видимостью. Я рассматриваю все возможные варианты.

Так вот сработало, -

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