Ошибка при повторном добавлении элемента формы

1. antipod13 13.01.20 12:16 Сейчас в теме
Элементы формы добавляются при изменении реквизита формы командой
ТаблицаПолейВыбора   = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);


Ранее эти элементы удаляются в попытке командой
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);


При первом изменениии реквизита все срабатывает, при повторном нет, выдает ошибку неверности параметра при добавлении элемента. Я так понимаю он не удаляется. Что не так?
По теме из базы знаний
Найденные решения
27. antipod13 15.01.20 07:38 Сейчас в теме
Оказывается не надо было указывать группу в методе удалить, не так
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);

а так
Элементы.Удалить(ЭтаФорма.Элементы.ТЗН);
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. mrChOP93 96 13.01.20 12:20 Сейчас в теме
"Я так понимаю он не удаляется" посмотри отладкой. + лучше выкладывать ошибку "как есть" а не интерпретировать ее своими словами. + посмотри и сравни, что лежит в параметрах при первом и повторном добавлении реквизитов.
alex-l19041; +1 Ответить
4. antipod13 13.01.20 15:08 Сейчас в теме
(2)а как в отладчике смотреть наличае элементов формы
6. mrChOP93 96 13.01.20 15:12 Сейчас в теме
(4)
 ЭтаФорма.Элементы 


Вроде так.
8. antipod13 13.01.20 15:19 Сейчас в теме
(6)Я локальных переменных ЭтаФорма не нашожу, и добавить ее не знаю как
10. mrChOP93 96 13.01.20 15:22 Сейчас в теме
11. antipod13 13.01.20 15:23 Сейчас в теме
12. mrChOP93 96 13.01.20 15:27 Сейчас в теме
(11)Тогда &НаКлиенте , или &НаСервере ставьте точку останова, напишите "ЭтаФорма.Элементы" , выделите это и нажмите шифт+F9
13. antipod13 13.01.20 15:41 Сейчас в теме
ТЗН удаляется, ЭтаФорма.Элементы.ТаблицаПоказателей ТЗН перед добавлением нет
15. mrChOP93 96 13.01.20 15:55 Сейчас в теме
(13) А зачем вы их вообще удаляете и добавляете по несколько раз? Не проще видимостью управлять?
16. antipod13 13.01.20 15:57 Сейчас в теме
(15)ТЗН полностью программно создается, колонки у разных отчетов разные, в принципе все сделано как в одном из местных примеров
17. mrChOP93 96 13.01.20 16:04 Сейчас в теме
(16) это же колонка таблицы, как я понял?

&НаСервере
Процедура ДобавитьКолонкуНаСервере()
   нРеквизиты = Новый Массив;
   нРеквизиты.Добавить(Новый РеквизитФормы("Тест3", Новый ОписаниеТипов("Строка"), "Объект.Тест", "Тест3", Истина));
   ИзменитьРеквизиты(нРеквизиты);
 
   нЭлемент = Элементы.Добавить("Тест3", Тип("ПолеФормы"), Элементы.Тест); 
   нЭлемент.Вид = ВидПоляФормы.ПолеВвода; 
   нЭлемент.ПутьКДанным = "Объект.Тест.Тест3"; 
КонецПроцедуры
Показать


вот пример добавления колонки, попробуйте как в нем добавлять.
18. antipod13 13.01.20 16:08 Сейчас в теме
(17)Плохой вариант, у меня при смене вида отчетности, меняются все колонки, мне надо какие то удалить, какие то добавить, страсть как сложно так делать.
Я вот что подумал, может фокус в том что удаляю на сервере? при этом на клиент может все не передается, и при повторном добавлении сбоит
19. mrChOP93 96 13.01.20 16:18 Сейчас в теме
(18)чем плох? Создайте процедуру для добавления и вызывайте ее

&НаСервере
Процедура ДобавитьКолонкуТаблицаПоказателей(ИмяКолонки,ИмяРеквизита)

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

КонецПроцедуры


И вызывайте ее, когда надо

ДобавитьКолонкуТаблицаПоказателей("ТЗН", "ТЗН");
20. antipod13 13.01.20 16:19 Сейчас в теме
22. mrChOP93 96 13.01.20 16:21 Сейчас в теме
(20) Создайте процедуру для удаления)
23. antipod13 13.01.20 16:22 Сейчас в теме
(22)Почему мой код то работает то нет, переписывать заколебусь, нужно просто понять почему
24. mrChOP93 96 13.01.20 16:25 Сейчас в теме
(23) Мой совет, лучше переписать, особенно, если у вас много повторений одного и того же кода, типа такого "ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);"

Мало того что значительно повысится читаемость, дак в дальнейшем, особенно через промежуток времени, будет легче модифицировать и дорабатывать форму.
3. Sergitax 13.01.20 12:30 Сейчас в теме
Для справки: если планируете удалять программно созданные элементы, то перед удалением ищите их методом Элементы.Найти(<Имя_элементы>), далее если у вас элемент найден, то удаляйте.
Потому как в УФ можно таскать элементы куда угодно на форме в пользовательском режиме, а у вас идет явное указание где этот элемент располагается.
Stref75; alex-l19041; +2 Ответить
5. antipod13 13.01.20 15:09 Сейчас в теме
(3)У меня попытка на удаление, это с примера взято который тут нарыл
вот ошибка сама
{Документ.АИС_АПК_ОтчетностьСХТП.Форма.ФормаДокумента.Форма(445)}: Ошибка при вызове метода контекста (Добавить)
ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);
по причине:
Недопустимое значение параметров
7. Sergitax 13.01.20 15:18 Сейчас в теме
(5) Либо элемент "ТаблицаПоказателей" не существует, либо в предыдущий раз элемент не был удален. Очень похоже, что элемент с именем "ТЗН" уже есть на форме.
9. antipod13 13.01.20 15:22 Сейчас в теме
(7)Я ж и начал с того что написал что похоже ТЗН не удаляется, и привел код как добавления так и удаления, причем тот же код в другом месте срабатывает, Еще на форме появляется новая таблица значений, новая, с другим видом колонк, но строи у нее пустые, тут что то тоньше
14. antipod13 13.01.20 15:51 Сейчас в теме
Какая то особенность именно метода добавить
21. antipod13 13.01.20 16:21 Сейчас в теме
Я что то не понял, добавил
&НаКлиенте
Процедура УдалитьТЗН ()
Попытка
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);
Исключение
Сообщить ("Не удалилось");
КонецПопытки
КонецПроцедуры

У меня всегда неудалось получается
25. Sergitax 13.01.20 17:02 Сейчас в теме
(21) Метод "Удалить()" доступен только в серверном контексте.
26. antipod13 14.01.20 08:07 Сейчас в теме
Ну почему один и тот же код в разных процедурах работает, а если команды удаления и добавления в одной - нет?
27. antipod13 15.01.20 07:38 Сейчас в теме
Оказывается не надо было указывать группу в методе удалить, не так
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);

а так
Элементы.Удалить(ЭтаФорма.Элементы.ТЗН);
Оставьте свое сообщение

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