Приветствую, Форумчане!
ЕРП 2.5.6

Для большой задачи потребовалось получить в конкретном справочнике все его элементы, которые имеют ссылочный тип (СправочникСсылка.УпаковкиЕдиницыИзмерения и т.д.)

Тестирую на внешней обработке. Есть реквизит на форме, где выбираю конкретную номенклатуру: "СправочникРеквизиты" (тип ссылка на справочник Номенклатура)

Если взять при отладке

```1c
    Объект.СправочникРеквизиты
```

то вижу все реквизиты (свойство), все их значения и главное типы в последней колонке

```1c
    ПроизводительИмпортерКонтрагент Торговый дом "Комплексный" СправочникСсылка.Организации
```

Вот теперь нужно сделать обход по всем этим реквизитам и получить типы этих реквизитов, далее проверить условие, что тип есть справочник и насладиться этим.

Сейчас умудрился сделать только такой код:

```1c
    Для Каждого РеквизитОб Из Объект.СправочникРеквизиты.Метаданные().Реквизиты Цикл

    СпрДкм = Строка(ТипЗнч(Объект.СправочникРеквизиты));

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

Получаю тип реквизита в текстовом формате и могу получить нужные мне строки с ссылочными данными.

Но проблема возникает дальше. Мне помимо того, что нужно определить тип реквизиты, нужно получить еще и его значение. Но в моем изобретении я работаю только с метаданными, а не со значениями реквизитов.

Возможно я пошел очень другой дорогой. Подскажите пожалуйста, как можно обойти все реквизиты выбранного справочника и получить их тип со значениями?
---
См . в хелпе
СправочникиМенеджер (CatalogsManager)
ТипВсеСсылки (AllRefsType)
Синтаксис:
ТипВсеСсылки()
---
Немного не очень понял задачу, но может быть поможет:

```1c
    &НаСервере
    Процедура ПолучитьСсылочныеРеквизитыОбъекта()
    // Обходим циклом все реквизиты объекта (ОбъектСРеквизитами - ссылка! Если использовать "Объект" с формы, то писать Объект.Ссылка)
    Для Каждого Реквизит Из ОбъектСРеквизитами.Метаданные().Реквизиты Цикл
    ИмяРеквизита = Реквизит.Имя;
    ЗначениеРеквизита = ОбъектСРеквизитами[ИмяРеквизита];
    ТипЗначенияРеквизита = ТипЗнч(ЗначениеРеквизита);
    ЭтоСправочныйТип = Справочники.ТипВсеСсылки().СодержитТип(ТипЗначенияРеквизита);
    // Дальше по условию уже орудовать с имеющимися данными. Есть и тип реквизита, и его значение.
    // ...
    КонецЦикла;
    КонецПроцедуры
```
---
Посмотри методы модуля ОбщегоНазначения:
ОбщегоНазначения.ЗначенияРеквизитовОбъекта()
ОбщегоНазначения.ЗначениеСсылочногоТипа()
---
См . в хелпе
СправочникиМенеджер (CatalogsManager)
ТипВсеСсылки (AllRefsType)
Синтаксис:
ТипВсеСсылки()
---
Немного не очень понял задачу, но может быть поможет:

```1c
    &НаСервере
    Процедура ПолучитьСсылочныеРеквизитыОбъекта()
    // Обходим циклом все реквизиты объекта (ОбъектСРеквизитами - ссылка! Если использовать "Объект" с формы, то писать Объект.Ссылка)
    Для Каждого Реквизит Из ОбъектСРеквизитами.Метаданные().Реквизиты Цикл
    ИмяРеквизита = Реквизит.Имя;
    ЗначениеРеквизита = ОбъектСРеквизитами[ИмяРеквизита];
    ТипЗначенияРеквизита = ТипЗнч(ЗначениеРеквизита);
    ЭтоСправочныйТип = Справочники.ТипВсеСсылки().СодержитТип(ТипЗначенияРеквизита);
    // Дальше по условию уже орудовать с имеющимися данными. Есть и тип реквизита, и его значение.
    // ...
    КонецЦикла;
    КонецПроцедуры
```
---
Правильно поняли задачу :-)
Спасибо. Вроде получилось