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

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 Сейчас в теме
Оказывается не надо было указывать группу в методе удалить, не так
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);

а так
Элементы.Удалить(ЭтаФорма.Элементы.ТЗН);
Оставьте свое сообщение
Вакансии
1С аналитик
Москва
зарплата от 210 000 руб.
Полный день

Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)