Ошибка при повторном добавлении элемента формы
Элементы формы добавляются при изменении реквизита формы командой
Ранее эти элементы удаляются в попытке командой
При первом изменениии реквизита все срабатывает, при повторном нет, выдает ошибку неверности параметра при добавлении элемента. Я так понимаю он не удаляется. Что не так?
ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);
Ранее эти элементы удаляются в попытке командой
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);
При первом изменениии реквизита все срабатывает, при повторном нет, выдает ошибку неверности параметра при добавлении элемента. Я так понимаю он не удаляется. Что не так?
По теме из базы знаний
- Загрузка данных из табличного документа в справочники, документы, планы видов характеристик, планы видов расчетов, планы счетов, бизнес-процессы, задачи, в движения документов, поточная загрузка документов (EXCEL, управляемые формы, универсальная)
- Алкогольные Декларации по Форме 7 и 8 по данным ЕГАИС из 1С Розница 3.0 и 2.3 (УТ 11.5.х) (Комплексная Автоматизация)
- Многофункциональная компонента для мобильной платформы: широковещательные сообщения (broadcasts), буфер обмена (clipboard), Bluetooth
- Пометка тестовой копии рабочей базы через механизм оповещений и раскрашивание форм (Управляемое приложение)
- Чек-листы для проведения Code Review
Найденные решения
Остальные ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
"Я так понимаю он не удаляется" посмотри отладкой. + лучше выкладывать ошибку "как есть" а не интерпретировать ее своими словами. + посмотри и сравни, что лежит в параметрах при первом и повторном добавлении реквизитов.
(16) это же колонка таблицы, как я понял?
вот пример добавления колонки, попробуйте как в нем добавлять.
&НаСервере
Процедура ДобавитьКолонкуНаСервере()
нРеквизиты = Новый Массив;
нРеквизиты.Добавить(Новый РеквизитФормы("Тест3", Новый ОписаниеТипов("Строка"), "Объект.Тест", "Тест3", Истина));
ИзменитьРеквизиты(нРеквизиты);
нЭлемент = Элементы.Добавить("Тест3", Тип("ПолеФормы"), Элементы.Тест);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = "Объект.Тест.Тест3";
КонецПроцедуры
Показатьвот пример добавления колонки, попробуйте как в нем добавлять.
(17)Плохой вариант, у меня при смене вида отчетности, меняются все колонки, мне надо какие то удалить, какие то добавить, страсть как сложно так делать.
Я вот что подумал, может фокус в том что удаляю на сервере? при этом на клиент может все не передается, и при повторном добавлении сбоит
Я вот что подумал, может фокус в том что удаляю на сервере? при этом на клиент может все не передается, и при повторном добавлении сбоит
(18)чем плох? Создайте процедуру для добавления и вызывайте ее
И вызывайте ее, когда надо
&НаСервере
Процедура ДобавитьКолонкуТаблицаПоказателей(ИмяКолонки,ИмяРеквизита)
нЭлемент = Элементы.Добавить(ИмяКолонки, Тип("ПолеФормы"), Элементы.ТаблицаПоказателей);
нЭлемент.Вид = ВидПоляФормы.ПолеВвода;
нЭлемент.ПутьКДанным = "Объект.ТаблицаПоказателей." + ИмяРеквизита;
КонецПроцедуры
И вызывайте ее, когда надо
ДобавитьКолонкуТаблицаПоказателей("ТЗН", "ТЗН");
(23) Мой совет, лучше переписать, особенно, если у вас много повторений одного и того же кода, типа такого "ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);"
Мало того что значительно повысится читаемость, дак в дальнейшем, особенно через промежуток времени, будет легче модифицировать и дорабатывать форму.
Мало того что значительно повысится читаемость, дак в дальнейшем, особенно через промежуток времени, будет легче модифицировать и дорабатывать форму.
Для справки: если планируете удалять программно созданные элементы, то перед удалением ищите их методом Элементы.Найти(<Имя_элементы>), далее если у вас элемент найден, то удаляйте.
Потому как в УФ можно таскать элементы куда угодно на форме в пользовательском режиме, а у вас идет явное указание где этот элемент располагается.
Потому как в УФ можно таскать элементы куда угодно на форме в пользовательском режиме, а у вас идет явное указание где этот элемент располагается.
(3)У меня попытка на удаление, это с примера взято который тут нарыл
вот ошибка сама
{Документ.АИС_АПК_ОтчетностьСХТП.Форма.ФормаДокумента.Форма(445)}: Ошибка при вызове метода контекста (Добавить)
ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);
по причине:
Недопустимое значение параметров
вот ошибка сама
{Документ.АИС_АПК_ОтчетностьСХТП.Форма.ФормаДокумента.Форма(445)}: Ошибка при вызове метода контекста (Добавить)
ТаблицаПолейВыбора = Элементы.Добавить("ТЗН", Тип("ТаблицаФормы"),Элементы.ТаблицаПоказателей);
по причине:
Недопустимое значение параметров
(7)Я ж и начал с того что написал что похоже ТЗН не удаляется, и привел код как добавления так и удаления, причем тот же код в другом месте срабатывает, Еще на форме появляется новая таблица значений, новая, с другим видом колонк, но строи у нее пустые, тут что то тоньше
Я что то не понял, добавил
&НаКлиенте
Процедура УдалитьТЗН ()
Попытка
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);
Исключение
Сообщить ("Не удалилось");
КонецПопытки
КонецПроцедуры
У меня всегда неудалось получается
&НаКлиенте
Процедура УдалитьТЗН ()
Попытка
Элементы.Удалить(ЭтаФорма.Элементы.ТаблицаПоказателей.ТЗН);
Исключение
Сообщить ("Не удалилось");
КонецПопытки
КонецПроцедуры
У меня всегда неудалось получается
Ну почему один и тот же код в разных процедурах работает, а если команды удаления и добавления в одной - нет?
Внимание! Тема сдана в архив
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот