|
Программное создание и удаление реквизита формы в 1с 8.3 УФ | ☑ | ||
---|---|---|---|---|
0
yaobez
26.07.17
✎
12:32
|
Всем добрый день.
Туплю, не могу понять как удалить ранее программно созданный реквизит формы Создаю так: ДобавляемыеРеквизиты = Новый Массив; РеквизитПредставительПартнера = Новый РеквизитФормы("РФПредставительПартнера_"+СозданоЗаписей, Новый ОписаниеТипов("СправочникСсылка.СДОПредставителиПартнера")); ДобавляемыеРеквизиты.Добавить(РеквизитПредставительПартнера); ЭтаФорма.ИзменитьРеквизиты(ДобавляемыеРеквизиты); Удалить пытаюсь так: МассивРекДляУдаления = Новый Массив; ВсеРеквизиты = ЭтаФорма.ПолучитьРеквизиты(); Для Каждого Элемент из ВсеРеквизиты цикл Если Найти(Элемент.Имя, "2") тогда МассивРекДляУдаления.Добавить(Элемент); КонецЕсли; КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(, МассивРекДляУдаления); При выполнение выскакивает ошибка: {Обработка.СДОЗаписьПартнеровНаКурсы.Форма.Форма.Форма(138)}: Ошибка при вызове метода контекста (ИзменитьРеквизиты) ЭтаФорма.ИзменитьРеквизиты(, МассивРекДляУдаления); по причине: Недопустимый путь к реквизиту. Путь: "РеквизитФормы" При создании Реквизита формы действительно не заполняю параметр "Путь" , не понимаю, какой путь требуется указать. из СП: "РеквизитФормы (FormAttribute) Путь (Path) Использование: Чтение и запись. Описание: Тип: Строка. Содержит путь к реквизиту. Не включает имя реквизита. Доступность: Сервер, мобильное приложение(сервер)." Буду благодарен Вам за помощь. |
|||
1
Redkiy
26.07.17
✎
12:51
|
МассивРеквизитовУдаления = Новый Массив;
МассивРеквизитовДобавления = Новый Массив; ПоляДляУдаления = Новый Массив; Для каждого Стр из Элементы.ГруппаНоменклатуры.ПодчиненныеЭлементы цикл МассивРеквизитовУдаления.Добавить(Стр.ПутьКДанным); ПоляДляУдаления.Добавить(Стр); КонецЦикла; ИзменитьРеквизиты(МассивРеквизитовДобавления, МассивРеквизитовУдаления ); Для каждого Стр Из ПоляДляУдаления цикл Элементы.Удалить(Стр); КонецЦикла; |
|||
2
Мыш
26.07.17
✎
12:57
|
(0) Путь примерно такой: "Объект.ИмяРеквизитаОбъектаВМетаданных"
|
|||
3
yaobez
26.07.17
✎
13:40
|
Забыл написать, что работаю с формой Обработки, если это конечно важно.
|
|||
4
Fedor-1971
26.07.17
✎
14:26
|
(0)вот этим:
ты что хотел сказать? 1.Найти возвращает число (позицию символа) 2.А если найдёшь реквизит формы, созданный в конфигурации, с 2 внутри? удалять можно только созданные программно реквизиты 3.И отладчиком проверь тип "Элемент" (так на всякий случай) По уму - пери добавлении реквизита, запомни его в ТЗ (или список, или массив) когда будешь чистить, точно не схватишь лишние реквизиты |
|||
5
yaobez
26.07.17
✎
14:39
|
(4)
1. Возвращает число, если число больше нуля то условие выполняется. 2. Реквизитов с "2" в имени в конструкторе не создавал, их там быть не может. 3.Элемент - тип РеквизитФормы, в котором свойство "Имя" искомое мной имя, а свойство "Путь" = "". Через отладчик проверял. |
|||
6
yaobez
26.07.17
✎
14:40
|
(1) Такая штука работает, сейчас постараюсь разобраться.
|
|||
7
yaobez
26.07.17
✎
15:51
|
Ну вроде заработало благодаря примеру Redkiy. В массив для удаления нужно добавлять имена реквизитов. Тогда работает.
МассивРекДляУдаления = Новый Массив; ВсеРеквизиты = ЭтаФорма.ПолучитьРеквизиты(); Для Каждого Элемент из ВсеРеквизиты цикл Если Найти(Элемент.Имя, "2") тогда МассивРекДляУдаления.Добавить(Элемент.Имя); КонецЕсли; КонецЦикла; ЭтаФорма.ИзменитьРеквизиты(, МассивРекДляУдаления); Всем большое спасибо! |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |