Когда есть Объект, но неизвестно заранее, какой у него тип (например получен из реквизита типа ЛюбаяСсылка) приходится обращаться к Метаданным, но прямого способа получить класс (например, для использования при составлении текста запроса) 1С не даёт.
Проверил в подготовке новой версии "Браузера Хранилища" что будет быстрее - громоздкая конструкция
ТипЗначения = ТипЗнч(Объект);
ОбъектМетаданных = Метаданные.НайтиПоТипу(ТипЗначения);
Если Метаданные.Справочники.Содержит(ОбъектМетаданных) Тогда
Класс = "Справочник"
ИначеЕсли Метаданные.Документы.Содержит(ОбъектМетаданных) Тогда
Класс = "Документ"
ИначеЕсли Метаданные.ПланыВидовХарактеристик.Содержит(ОбъектМетаданных) Тогда
Класс = "ПланВидовХарактеристик"
ИначеЕсли Метаданные.БизнесПроцессы.Содержит(ОбъектМетаданных) Тогда
Класс = "БизнесПроцесс"
ИначеЕсли Метаданные.Задачи.Содержит(ОбъектМетаданных) Тогда
Класс = "Задача"
Иначе
Класс = ""
КонецЕсли;
или изящная
Класс = Объект.Метаданные().ПолноеИмя();
Класс = Лев(Класс, Найти(Класс, ".")-1);
при замере были прогнаны циклы около 27000 итераций и оказалось:
вариант 1: 27345 0,767779 4,49
вариант 2: 27345 0,811876 7,84
Пример для замера прилагается (цикл через перебор справочника ХранилищеДополнительнойИнформации, присутствующего в большинстве типовых конфигураций)