```1c
    Для Каждого ПолеСправочника Из ??? Цикл
    // Код, Наименование, ДругиеРеквезиты ...
    КонецЦикла
```

Что вставить вместо ???, чтобы обходить поля справочника, но чтобы обходить только те поля, которые видны пользователю (Код, Наименование, ПервыйРеквезит, ВторойРеквезит)? То есть мне не нужно обходить такие поля, как ВерсияДанных, ПометкаУдаления, Предопределенный.

Мне нужно узнать, как перебирать эти поля с целью выгрузки данных по этим полям. Без запросов. Есть ли способ через Метаданные.???.???
---
Без запросов В чем смысл такого условия?
Источники полей не ограничиваются Реквизитами и Стандартными реквизитами, там может быть много чего еще. Самый надёжный способ – обойти колонки результата запроса:
```1c
    Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 0 * ИЗ " + ПолноеИмяМетаданных);
```
Это работает для любых объектов метаданных, хранящихся в ИБ.
---
в чем смысл этого цикла? Можно же просто если есть Ссылка на справочник обратиться по ссылке к любому реквизиту

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

```1c
    Если Свойство.Имя = "ИмяПредопределенных" Тогда
    Продолжить;
    КонецЕсли;
```

Или наоборот только их и смотри

```1c
    Если Свойство.Имя = "Код" ИЛИ Свойство.Имя = "Наименование" Тогда

    КонецЕсли;
```
---
Спасибо за предложенный вариант. В таком случае нужны два цикла для обхода Реквизиты и СтандартныеРеквизиты. Когда пользователь заходит в форму Справочника через режим предприятия, то ему отображаются только конкретные поля, так ведь? Существует ли другой способ обхода только тех полей, которые отображаются в форме справочника в режиме предприятия?
---
так ведь?
Нет не так, может отображаться вообще всё, что угодно, даже картинка из регистра сведений, которой в справочнике нет, не было и не будет никогда.
А может отображаться адрес, который хранится в табличной части.
Поэтому в универсальных обработках выгружают данные объекта, а не то, что на форме показывается.
---
На фото, для наглядности, я привел регистр остатков, но считайте, что это справочник. Сейчас пользователю отображаются: Период, Регистратор, НомерСтроки, Товар, ЕдиницаИзмерения, Количество. Никакие другие поля. Как я могу одним циклом обходить эти поля?

Моя догадка была такая что нужно как-то достучаться до этой формы с помощью объекта Метаданные, но я не понимаю как именно.
---
Моя догадка была такая что нужно как-то достучаться
Не угадал, попробуй что-то другое, а то придет userXXXXXXX и скажет, что в резюме врать нельзя.
регистр остатков, но считайте, что это справочник.
И будет прав.
---
а то придет userXXXXXXX и скажет, что в резюме врать нельзя. А я его поддержу. Как обычно.
---
нужно как-то достучаться до этой формы с помощью объекта Метаданные, но я не понимаю как именно. Какое отношение форма имеет к метаданным??? Ты можешь по портрету человека на доске почета определить дату рождения, количество зубов, длину члена, состав семьи? Про внутренние органы молчу.
---
(11) Я попробовал через Справочники.Контрагенты.ПолучитьФормуСписка().ЭлементыФормы, но пишет "Поле объекта не обнаружено (ЭлементыФормы)". Также попробовал через Справочники.Контрагенты.ПолучитьФормуСписка().ПодчиненныеЭлементы.Список.ПодчиненныеЭлементы, но пишет "Поле объекта не обнаружено (Список)". Что самое интересное, посмотрел через отладчик и эти поля на самом деле существуют, а пишет наоборот. Выполняю &НаСервере.
---
```1c
    МД = Метаданные["Справочники"]["Контрагенты"];

    Для Каждого СтандартныйРеквизит из МД.СтандартныеРеквизиты Цикл
    // Код, Наименование, ...
    КонецЦикла;

    Для Каждого Реквизит из МД.Реквизиты Цикл
    // ПервыйРеквезит, ВторойРеквезит, ...
    КонецЦикла;

    Для Каждого ТабличнаяЧасть из МД.ТабличныеЧасти Цикл

    Для Каждого РеквизитТЧ из ТабличнаяЧасть.Реквизиты Цикл

    КонецЦикла;

    КонецЦикла;
```
---
так это надо сначала разобраться, чем форма от объекта метаданных отличается. Еще длинный путь впереди, это прекрасно
---
сть ли способ через Метаданные.???.???Пожалста, ктож мешает, но:
1. Метаданные.Справочники.ИмяСправоника.Реквизиты.
2. Метаданные.Справочники.ИмяСправоника.СандартныеРеквизиты.
3. Метаданные.Справочники.ИмяСправоника.ТабличныеЧасти.
4. Метаданные.Справочники.ИмяСправоника.Харатеристики.
5 .......
---
Забудь про формы при выгрузке данных.
Если всё равно хочешь смотреть реквизиты формы, то тогда снова - забудь про формы при выгрузке данных.
---
Без запросов В чем смысл такого условия?
Источники полей не ограничиваются Реквизитами и Стандартными реквизитами, там может быть много чего еще. Самый надёжный способ – обойти колонки результата запроса:
```1c
    Запрос = Новый Запрос("ВЫБРАТЬ ПЕРВЫЕ 0 * ИЗ " + ПолноеИмяМетаданных);
```
Это работает для любых объектов метаданных, хранящихся в ИБ.
---
Вы правы, есть ещё и Измерения. После стольких обсуждений, похоже ваш способ, всё таки, единственный оптимальный вариант, несмотря на то, что это выдаёт лишние поля, которые пользователь не видит. Я думал, что на уровне метаданных будет такая функция, с помощью которой можно будет получать поля, которые видны пользователю в форме списка.
---
Элементы или ЭлементыФормы
все это от форм очень сильно зависит, "управляемые" или "неуправляемые"
---
Я пробовал получить ЭлементыФормы но этот свойство либо пустое, либо её не существует.
---
ЭлементыФормыВ УФ просто "Элементы", но для вопроса оно не оно.