Что написать чтобы взлетело?

```1c
    Процедура ТыкНаСервере(ОбъектБД)
    МетаданныеОбъектБД = Метаданные.НайтиПоТипу(ТипЗнч(ОбъектБД));
    Для Каждого Реквизит Из МетаданныеОбъектБД.Реквизиты Цикл
    Сообщить(Реквизит + " = " + ОбъектБД[Реквизит.Имя]);
    КонецЦикла;

    КонецПроцедуры
```

Не работает конкретно ОбъектБД[Реквизит.Имя].
---
Следите за пальцами

Реквизит - тип ОбъектМетаданных
"" + Реквизит - тип Строка, т.к при сложении все преобразуется к типу первого слагаемого
Реквизит.Имя - тип Строка

А сложение Реквизит + " = " выдаст ошибку, т.к. к объекту метаданных ничего прибавить нельзя
---
Нет, к реквизиту можно обратиться или через точку, или через квадратные скобки. Так что вот такой код точно сработает для ссылочных типов:

```1c
    Для Каждого Реквизит Из ОбъектБД.Метаданные().Реквизиты Цикл
    Сообщить(Реквизит.Имя + " = " + ОбъектБД[Реквизит.Имя]);
    КонецЦикла;
```

Важно обращаться именно к свойству Имя
---
все просто.
Сообщить(Реквизит + " = " + ОбъектБД[Реквизит.Имя]);
Знак "+" может быть использован как в сложении, так и в конкатенации строк.
Реквизит это не строка. Платформа пытается привести к числу. Тоже не получается. Вот и ошибка: "Преобразование значения к типу Число не может быть выполнено"
Когда ставим "" + Реквизит, то уже объект Реквизит платформой неявно приводится к строке. Вот и отрабатывает.
Или сразу указываем "Реквизит.Имя". Это уже строка и конкатенация строк отрабатывает штатно.
---
А что есть ОбъектБД? Что значит, не работает, какую ошибку выдает?

Для ссылочных типов вместо НайтиПоТипу можно использовать ОбъектБД.Метаданные()
---
Либо Документ.Ссылка либо Справочник Ссылка (составной тип на форме).

{ВнешняяОбработка.ВнешняяОбработка2.Форма.Форма.Форма(6)}: Преобразование значения к типу Число не может быть выполнено
  Сообщить(Реквизит + " = " + ОбъектБД[Реквизит.Индекс]);
---
```1c
    Сообщить(" + Реквизит.Имя + " = " + ОбъектБД[Реквизит.Имя]);
```
---
Чет я запутался. Вы сообщение не правили? а то я увидел у вас ОбъектБД[Реквизит.Индекс] - Пишет. Поле объекта не обнаружено. И этот вариант не катит тоже.
Я так понимаю к реквизиту конкретного объекта можно обратиться только по индексу. Если вообще возможно. Просто к объекту метаданных можно так обращаться.
Пример из книги:

листинг 3.17. Использование итератора «Для Каждого»

Сообщение = Новый СообщениеПользователю;
Для Каждого Справочник из Метаданные.Справочники Цикл
        Сообщение.Текст = Символы.ПС + Справочник.ПолноеИмя();
        Сообщение.Сообщить();
        МенеджерСправочника = Справочники[Справочник.Имя];
        Выборка = МенеджерСправочника.Выбрать();
       Пока Выборка.Следующий() Цикл
             Сообщение.Текст = Выборка.Наименование;
             Сообщение.Сообщить();
       КонецЦикла;
КонецЦикла;
---
Нет, к реквизиту можно обратиться или через точку, или через квадратные скобки. Так что вот такой код точно сработает для ссылочных типов:

```1c
    Для Каждого Реквизит Из ОбъектБД.Метаданные().Реквизиты Цикл
    Сообщить(Реквизит.Имя + " = " + ОбъектБД[Реквизит.Имя]);
    КонецЦикла;
```

Важно обращаться именно к свойству Имя
---
Спасибо. Заработало. но не до конца одупляю почему ваш код отрабатывает а мой нет.
---
Потому что у вас переменная Реквизит. А это не строка, а ОбъектМетаданных. У меня Реквизит.Имя - а это уже строка
---
Вы уж простите, но все равно не доходит.
---
все просто.
Сообщить(Реквизит + " = " + ОбъектБД[Реквизит.Имя]);
Знак "+" может быть использован как в сложении, так и в конкатенации строк.
Реквизит это не строка. Платформа пытается привести к числу. Тоже не получается. Вот и ошибка: "Преобразование значения к типу Число не может быть выполнено"
Когда ставим "" + Реквизит, то уже объект Реквизит платформой неявно приводится к строке. Вот и отрабатывает.
Или сразу указываем "Реквизит.Имя". Это уже строка и конкатенация строк отрабатывает штатно.
---
Следите за пальцами

Реквизит - тип ОбъектМетаданных
"" + Реквизит - тип Строка, т.к при сложении все преобразуется к типу первого слагаемого
Реквизит.Имя - тип Строка

А сложение Реквизит + " = " выдаст ошибку, т.к. к объекту метаданных ничего прибавить нельзя
---
вообще-то этого достаточно:
Сообщить(""+Реквизит + " = " + ОбъектБД[Реквизит.Имя]);
---
Все дошло. Ругался он не на ОбъектБД[Реквизит.Имя] а на Реквизит + " = ". Огромное спасибо!!!
---
Кроме реквизитов есть еще коллекция "СтандартныеРеквизиты"
---
Не знал, что они отдельно. спасибо за заметку!
---
Еще есть общие реквизиты )))
---
много чего есть, только не доступные через метаданные объекта.
Реквизиты, ТабличныеЧасти и СтандартныеРеквизиты доступны. Общие резквизиты - нет.
---
"вончо" написал. даже работает)

```1c
    Процедура ТыкНаСервере(ОбъектБД)

    МетаданныеОбъектБД = Метаданные.НайтиПоТипу(ТипЗнч(ОбъектБД));
    Для Каждого Реквизит Из МетаданныеОбъектБД.Реквизиты Цикл
    Сообщить("+Реквизит + " = " + ОбъектБД[Реквизит.Имя]);
    КонецЦикла;

    Для Каждого ТЧ Из ОбъектБД.Метаданные().ТабличныеЧасти Цикл

    Сообщить("+ТЧ);
    НомерСтроки = 1;
    Для Каждого Строка Из ОбъектБД[ТЧ.Имя] Цикл

    Для Каждого Реквизит Из ТЧ.Реквизиты Цикл
    Сообщить("Строка номер " + НомерСтроки + " " + Реквизит + " = " + Строка[Реквизит.Имя]);
    КонецЦикла;
    НомерСтроки = НомерСтроки + 1;
    КонецЦикла;

    КонецЦикла;

    КонецПроцедуры
```