Имя: Пароль:
1C
 
Программный вывод ТЗ на форму обработки
0 Max57
 
15.04.24
17:44
Всем привет. Пишу обработку которая читает файл Exel и на основании прочитанных данных изменяет реквизиты номенклатуры. Мне нужно, чтобы после завершения её работы выводились внесенные изменения. Затем все изменения помещаются в ТЗ. При первой загрузке из Exel все отрабатывает корректно, но при следующих загрузках выходит такая ошибка. Подскажите, пожалуйста, как мне удалить реквизит с формы, чтобы исправить эту ошибку?
https://ibb.co/2Kqd0PP

Для Каждого Колонка Из ТаблицаИзменений.Колонки Цикл
        ТипыЗначений = Новый Массив;
        Для каждого тТип из Колонка.ТипЗначения.Типы() Цикл
            Если тТип <> Тип("Null") Тогда
                ТипыЗначений.Добавить(тТип);
            КонецЕсли;
        КонецЦикла;
        МассивРеквизитов.Добавить(Новый РеквизитФормы(Колонка.Имя, Новый ОписаниеТипов(ТипыЗначений), ИмяТЗ));
    КонецЦикла;
    //Если ЭтаФорма.Элементы.Количество()>3 Тогда
    //    УдаляемыеРеквизиты = Новый Массив;
    //    РеквизитыДляУдаления = ПолучитьРеквизиты(ИмяТЗ);
    //    //Для Каждого РеквизитУдаления Из РеквизитыДляУдаления Цикл
    //    //УдаляемыеРеквизиты.Добавить(ИмяТЗ+"."+РеквизитУдаления.Имя);
    //    // Удаляем элементы формы
    //    Элементы.Удалить(Элементы[ЗаголовокТЗ]);
    //    //КонецЦикла;
    //КонецЕсли;
    //Если Не ЭтаФорма.Элементы.Количество() > 80  Тогда
    //    ЭтаФорма.ИзменитьРеквизиты(,МассивРеквизитов);
    //    КонецЕсли;
    ЭтаФорма.ИзменитьРеквизиты(МассивРеквизитов);      
    эТаблица = Элементы.Добавить(ЗаголовокТЗ, Тип("ТаблицаФормы"),);
    эТаблица.ПутьКДанным = ИмяТЗ;
    эТаблица.Отображение = ОтображениеТаблицы.Список;
    эТаблица.ПоложениеКоманднойПанели = ПоложениеКоманднойПанелиЭлементаФормы.Нет;
    эТаблица.ИзменятьСоставСтрок = Ложь;    
    
    Для Каждого Колонка Из ТаблицаИзменений.Колонки Цикл
        НовыйЭлемент = Элементы.Добавить(Колонка.Имя, Тип("ПолеФормы"), эТаблица);
        НовыйЭлемент.ПутьКДанным = ИмяТЗ + "." + Колонка.Имя;
        НовыйЭлемент.Вид = ВидПоляФормы.ПолеВвода;
        НовыйЭлемент.КнопкаОчистки = Ложь;
        НовыйЭлемент.КнопкаВыбора = Ложь;
        НовыйЭлемент.РедактированиеТекста = Ложь;
        НовыйЭлемент.КнопкаОткрытия = Истина;
    КонецЦикла;
    //КонецЕсли;
    ЭтаФорма.ЗначениеВРеквизитФормы(ТаблицаИзменений, ИмяТЗ);
1 Мультук
 
15.04.24
17:54
2 mikecool
 
15.04.24
17:54
ты добавляешь снова реквизит, ваш кеп
он на форме уже есть