Заранее извиняюсь, если вопрос некорректен, я пока только изучаю 1с.

Есть ДокументСсылка. В Документе есть ТабличнаяЧасть. У ТабличнойЧасти есть Реквизит. У Реквизита тип: ДокументСсылка.<Имя документа 1>, ДокументСсылка.<Имя документа 2>, ДокументСсылка.<Имя документа 3>.

Мне нужна функция, которая возвращала бы тип реквизита, в зависимости от того на какой документ ссылается реквизит.

```1c
    Функция ПолучитьТипРеквизита(ДокументСсылка)

    //Волшебный код, который делает что мне надо.

    Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ.<Имя документа Х>" или "ДокументСсылка.<Имя документа Х>"

    КонецФункции
```
---
В общем сам нашёл решение, оставляю здесь.

```1c
    БазовыеТипы = "ЧислоБулевоДатаСтрокаХранилищеЗначения";

    Для каждого ТабличнаяЧасть из ДокументСсылка.Метаданные().ТабличныеЧасти цикл
    Таблица = ДокументСсылка[ТабличнаяЧасть.Имя];
    Для каждого Строка из Таблица Цикл
    Для каждого Реквизит из ТабличнаяЧасть.Реквизиты Цикл
    Если Найти(БазовыеТипы, Реквизит.Тип) = 0 <> Неопределено Тогда
    РеквизитТип = Метаданные.НайтиПоТипу(ТипЗнч(Строка[Реквизит.Имя])).ПолноеИмя(); //Здесь я получаю, что мне надо
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
```
---
```1c
    Возврат "ДокументСсылка."+ДокументСсылка.Метаданные().Имя;
```
---
ТипРеквизита = ТипЗнч(ДокументСсылка)
---
ТипЗнч(ДокументСсылка)
Таким образом я возвращаю строку ДокументСсылка.Метаданные().Синоним.
---
ТипРеквизита = Тип("ДокументСсылка.РеализацияТоваров")
---
Тип("ДокументСсылка.РеализацияТоваров")

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

Взять тот тип документа, которому принадлежит, значение Реквизита ТабличнойЧасти.
Получить массив или первый документ в нужном мне формате, я знаю как, но мне нужен "тот самый документ".
---
```1c
    Функция ПолучитьТипРеквизита(ДокументСсылка)
    ТипРеквизита = Новый Массив;
    Для каждого Строка из ДокументСсылка.ТабличнаяЧасть Цикл
    ТипРеквизита.Добавить(ТипЗнч(Строка.Документ));
    КонецЦикла;

    Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ.<Имя документа Х>" или "ДокументСсылка.<Имя документа Х>"

    КонецФункции
```
---
Функция ПолучитьТипРеквизита(ДокументСсылка)
ТипРеквизита = Новый Массив;
Для каждого Строка из ДокументСсылка.ТабличнаяЧасть Цикл
ТипРеквизита.Добавить(ТипЗнч(Строка.Документ));
КонецЦикла;

Возврат ТипРеквизита; //Возвращается строка следующего вида: "Документ." или "ДокументСсылка."

КонецФункции
сделай
```1c
    Возврат ТипЗнч(ТипРеквизита)
```
, и сравни с
```1c
    Возврат ТипЗнч("ДокументСсылка.")
```
---
Таким образом я возвращаю строку ДокументСсылка.Метаданные().Синоним.
ТипЗнч(ДокументСсылка) возвращает не строку, а тип значения.
---
"Мне нужна функция, которая возвращала бы тип реквизита"
А вам то что надо?
---
В общем сам нашёл решение, оставляю здесь.

```1c
    БазовыеТипы = "ЧислоБулевоДатаСтрокаХранилищеЗначения";

    Для каждого ТабличнаяЧасть из ДокументСсылка.Метаданные().ТабличныеЧасти цикл
    Таблица = ДокументСсылка[ТабличнаяЧасть.Имя];
    Для каждого Строка из Таблица Цикл
    Для каждого Реквизит из ТабличнаяЧасть.Реквизиты Цикл
    Если Найти(БазовыеТипы, Реквизит.Тип) = 0 <> Неопределено Тогда
    РеквизитТип = Метаданные.НайтиПоТипу(ТипЗнч(Строка[Реквизит.Имя])).ПолноеИмя(); //Здесь я получаю, что мне надо
    КонецЕсли;
    КонецЦикла;
    КонецЦикла;
    КонецЦикла;
```