Как удалить реквизиты, которые были созданы программно?
---
```1c
    РеквизитыФормы = ЭтаФорма.ПолучитьРеквизиты(); //Точки в шапке цикла – не круто
    МассивУдаляемых = Новый Массив; //Не надо делать в цикле то, что можно сделать один раз
    Для Каждого РеквизитФормы Из РеквизитыФормы Цикл
    ИмяРеквизита = РеквизитФормы.Имя; //Не надо каждый раз обращаться к нему через точку
    Если СтрНайти(ИмяРеквизита, "Смета") И Не СтрНайти(ИмяРеквизита, "ТекущаяСмета") Тогда //Двойное условие выглядит круче, чем условие в условии; Сравнение с нулём можно заменить на неявное сравнение с типом булево
    МассивУдаляемых.Добавить(ИмяРеквизита);
    КонецЕсли;
    КонецЦикла;
    ИзменитьРеквизиты( , МассивУдаляемых); //Не надо делать в цикле то, что можно сделать один раз
```
---
ФормаКлиентскогоПриложения (ClientApplicationForm)
ИзменитьРеквизиты (ChangeAttributes)
Синтаксис:
ИзменитьРеквизиты(<ДобавляемыеРеквизиты>, <УдаляемыеРеквизиты>)
Параметры:
<ДобавляемыеРеквизиты> (необязательный)
Тип: Массив.
Массив, содержащий объекты типа РеквизитФормы.
Добавлять можно реквизиты верхнего уровня и вложенные реквизиты, являющиеся колонками.
К добавленным реквизитам верхнего уровня из модуля можно обращаться только с помощью конструкции ЭтотОбъект.<Имя реквизита>.
<УдаляемыеРеквизиты> (необязательный)
Тип: Массив.
Массив, содержащий строки, описывающие пути к удаляемым реквизитам.
Удалять можно только ранее программно добавленные реквизиты.
Описание:
Изменяет структуру реквизитов формы.
Сначала выполняется удаление реквизитов. Таким образом массивы добавляемых и удаляемых реквизитов могут содержать реквизиты с одинаковым путём.
Внимание! Действия добавления и удаления выполняются за один вызов. Следует учитывать, что операция изменения состава реквизитов является ресурсоемкой, поэтому операции изменения состава реквизитов формы выполняются пакетным образом.
Доступность:
Сервер, мобильное приложение (сервер), мобильный автономный сервер.
Использование в версии:
Доступен, начиная с версии 8.2.
Описание изменено в версии 8.3.16.
---
Про это знаю. Как получить сами реквизиты, чтобы их удалить потом используя этот способ.

Нашла способ
```1c
    ЭтаФорма.ПолучитьРеквизиты()
```

Пробую
---
Если вдруг кому-нибудь понадобится

```1c
    Для каждого Рек Из ЭтаФорма.ПолучитьРеквизиты() Цикл

    Если СтрНайти(Рек.Имя, "Смета") <> 0 Тогда

    Если СтрНайти(Рек.Имя, "ТекущаяСмета") <> 0 Тогда
    Продолжить;
    КонецЕсли;

    Массив = Новый Массив;
    Массив.Добавить(Рек.Имя);
    ИзменитьРеквизиты(,Массив);

    КонецЕсли;

    КонецЦикла;
```
---
Кошмар.
---
в цикле собирайте реквизиты в массив, а после обхода, если массив не пустой, выполняйте ИзменитьРеквизиты
ну и условия можно объединить, что более красивее выглядило;))
---
наверно подразумевается, что в условие попадёт только единожды поэтому процедура в цикле
---
вот почему нельзя проверить просто на ="Смета", я не понял
---
Потому что "ТекущаяСмета" это реквизит формы, который не создан программно и мне он нужен всегда.
---
это я понял, но ведь рек.Имя<>"Смета" в таком случае
---
Потому что это часть названия реквизита, Полное имя реквизитов "Смета1", "Смета2" и т.д.
---
я вас понял спасибо
---
```1c
    РеквизитыФормы = ЭтаФорма.ПолучитьРеквизиты(); //Точки в шапке цикла – не круто
    МассивУдаляемых = Новый Массив; //Не надо делать в цикле то, что можно сделать один раз
    Для Каждого РеквизитФормы Из РеквизитыФормы Цикл
    ИмяРеквизита = РеквизитФормы.Имя; //Не надо каждый раз обращаться к нему через точку
    Если СтрНайти(ИмяРеквизита, "Смета") И Не СтрНайти(ИмяРеквизита, "ТекущаяСмета") Тогда //Двойное условие выглядит круче, чем условие в условии; Сравнение с нулём можно заменить на неявное сравнение с типом булево
    МассивУдаляемых.Добавить(ИмяРеквизита);
    КонецЕсли;
    КонецЦикла;
    ИзменитьРеквизиты( , МассивУдаляемых); //Не надо делать в цикле то, что можно сделать один раз
```
---
а почему нельзя обращаться к свойству реквизита через точку в цикле, можете объяснить?
---
Можно. Но только один раз. А если надо несколько раз - правильно вывести его в отдельную переменную. Потому что обращение через точку - это по сути своей поиск по имени свойства в коллекции свойств. Зачем каждый раз запускать поиск?
---
Я не писал, что этого нельзя делать. Можно, просто оптимальнее будет зафиксировать значение в отдельной переменной и в следующие разы обращаться напрямую к нему.
---
и насчёт оптимальности, неужели необходимо использовать стрнайти, почему просто сравнением не сделать?
---
Я без понятия как там называются реквизиты и сколько их. Если нам нужна максимальная эффективность, а там только один реквизит, можно захардкодить его имя, заодно избавившись от цикла. Представленное решение является универсальным.
---
Спасибо! Только учусь. Учла ваши комментарии
---
Сравнение с нулём можно заменить на неявное сравнение с типом булево

А вот про это не знал, потестим.
Если действительно так, то Спасибо.
---
На форме есть несколько групп с наименованием "Группа1,Группа2,..ГруппаN" которые программно заполняются гиперссылками различных документов.Требуется очистка перед повторным заполнением.Решил так: