При программном добавлении колонки в ТаблицуЗначений на форме требуется проверка на наличие уже существующих с данным именем,
иначе ловим исключение:

```1c
    Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    по причине:
    Неуникальное имя реквизита. Имя: "НачальныйЭтап"
```
---
если известна хоть одна из колонок, то можно выгрузкой в ТЗ.

```1c
    ТЗ = РеквизитТЗ.Выгрузить(Новый Структура("ИмяКолонки", Ложь),);
```

Главное знать имя одной из колонок и в отбор подставить ее с несуществующим значением, тогда получится незаполненная ТЗ но с колонками. А уже у ТЗ можно найти колонку по имени.

Если не известна ни одна из колонок, то просто выгрузкой, но тут будут выгружены все значения.
---
если известна хоть одна из колонок, то можно выгрузкой в ТЗ.

```1c
    ТЗ = РеквизитТЗ.Выгрузить(Новый Структура("ИмяКолонки", Ложь),);
```

Главное знать имя одной из колонок и в отбор подставить ее с несуществующим значением, тогда получится незаполненная ТЗ но с колонками. А уже у ТЗ можно найти колонку по имени.

Если не известна ни одна из колонок, то просто выгрузкой, но тут будут выгружены все значения.
---
Красавчик ))) Автор как раз и не знает - есть такая колонка или нет. А ты сразу предлагаешь её выгрузить. Аплодисменты!
---
мозги попробуй включить. Приведен скрин с уже существующей таблицей и несколькими колонками. Нужно к ней добавлять колонки программно. Но часть колонок существует изначально. Значит в отбор по строкам можем указать уже известную колонку. Она нужна только для отсева выгрузки всех строк.
Но не указывая какие колонки выгружать, будут выгружены все.
---
Сообщение было скрыто модератором.
---
Всм? Вопрос: какой метод позволяет проверить наличие колонки у реквизита формы по её имени.
---
Сообщение было скрыто модератором.
---
```1c
    (3) Никакой.
```

это я и хотел сказать

(4) Дело в именах.
В 2022 я бы решил, что этот ответ добавляет стартмани, но теперь без понятия, чем он полезен.
---
В 2022 я бы решил, что этот ответ добавляет стартмани, но теперь без понятия, чем он полезен.
Этот совет предлагает немного подумать =)
---
Проверить наличие можно. Для этого надо выгрузить в таблицу значений и искать колонку по имени.
Но совет вам правильный дают - при добавлении своих реквизитов в именах добавляйте им префиксы.
---
Для этого надо выгрузить в таблицу значений и искать колонку по имени.
несколько нестандартное, но ок

 при добавлении своих реквизитов в именах добавляйте им префиксы
если б это была типовая обработка/таблица, так бы и поступил, но нет, зачем отвлекать внимание разраба от логики?
---
Все зависит от того, что вы будете делать, если такой реквизит уже есть.
Если создавать такой реквизит не будете, тогда одно.
А если будете, но уже с префиксом, то возвращаемся к тому, что если сразу добавлять префикс, то и искать ничего не надо.
---
Поясню, как родилась необходимость проверки. В обработке на форме АРМ все реквизиты и элементы формы исторически создавались программно. И случилось так(ТМ), что их решили продублировать вручную, разместив на форме в режиме конфигуратора. Чтобы не ломался оригинальный код программного формирования, нужно перед созданием колонок проверить их отсутствие на форме. Префиксы лесом, задача иная.

Когда вся форма будет переведена на статические реквизиты, динамическое их формирование будет убрано.
---
Понял, тогда вопросов нет.
---
Сообщение было скрыто модератором.
---
Конфигурация не озвучена. Если типовая - может есть модуль ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта

```1c
    //реквизит может уже существовать, если например вызывается команда "Перечитать"
    Если НЕ ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(Форма, "НаОснованииОприходования") Тогда
    ДобавляемыеРеквизиты = Новый Массив;
    ТипРеквизита = Новый ОписаниеТипов("ДокументСсылка.ОприходованиеИзлишковТоваров");
    РеквизитФормы = Новый РеквизитФормы("НаОснованииОприходования", ТипРеквизита, ", "На основании оприходования");
    ДобавляемыеРеквизиты.Добавить(РеквизитФормы);
    Форма.ИзменитьРеквизиты(ДобавляемыеРеквизиты);
    КонецЕсли;
```
---
ЕстьРеквизитИлиСвойствоОбъекта
Не работает для подчиненных реквизитов, выгрузить массив выданный ф-ей ПолучитьРеквизиты() в структуру с именем реквизита в ключе и искать по Структуре помогает. Но это всё ещё костыль.
---
А по-другому никак. Это старая боль платформы - неумение искать по реквизитам формы, и даже неумение искать по массиву выгруженных этих реквизитов...
Приходится их получать в массив, а при необходимости - выгружать их имена во второй массив (чтобы использовать нормальные методы массива с примитивными типами).
С элементами формы есть метод Найти(), а с реквизитами - нет (потому что принцип уникальности имен разный).
---
А зачем в структуру выгружать одни ключи без значений? Можно же просто имена выгрузить и в массив, и в СЗ, и в строку с разделителями...
---
Бесспорно проще в массив, структура в мысленном эксперименте с данными вылезла из кеша первой, как самая ходовая коллекция ;). Вживую применять время ещё не пришло, разбираюсь с "обязательной" 10 сек. паузой при проведении поступлений для расчета взаиморасчетов онлайн: ещё одно передовое техническое решение, в купе с формой реестра документов блокирующее интерфейс ЕРП на 15+сек.
---
в купев плацкарте же, не?
---
Не, я старый уже, лет 8 как в плацкарте не езжу...
---
Сообщение было скрыто модератором.
---
какая то паленая ссылка на ТГ...

А решение вот!

```1c
    Если ТаблицаДанных.Количество() > 0 И ОбщегоНазначенияКлиентСервер.ЕстьРеквизитИлиСвойствоОбъекта(ТаблицаДанных[0], "СтавкаНДС") Тогда
```

ТаблицаДанных = ДанныеФормыКоллекция.