Как-то задался целью получить первый уровень иерархии справочника (департамента/верхней группы) одним запросом, без обхода в цикле и без получения родителя, пока не получим пустую ссылку.
В результате написал эту обработку. Со временем она обросла "плюшками" и стала годной для публикации ) .
Возможна работа под произвольной конфигурацией (типы элементов формы: строка и произвольная ссылка).
Сообщение о верхнем элементе содержит ссылку объекта. (Клик-клик для открытия)
Обработка опирается только на метаданные. При открытии получает список справочников.
&НаСервере
Функция ПолучитьСписокСправочников()
МассивВозврата = Новый Массив;
Для Каждого МетаданныеСправочник Из Метаданные.Справочники Цикл
МассивВозврата.Добавить(МетаданныеСправочник.Имя);
КонецЦикла;
Возврат МассивВозврата;
КонецФункции
При выборе справочника - предлагает выбрать значение для обработки.
&НаКлиенте
Процедура ИмяСправочникаПриИзменении(Элемент)
Если ИмяСправочника <> "" Тогда
ОписаниеТипа = Новый ОписаниеТипов("СправочникСсылка."+ИмяСправочника);
Элементы.ПроверяемоеЗначение.ОграничениеТипа = ОписаниеТипа;
ПроверяемоеЗначение = ОписаниеТипа.ПривестиЗначение();
Иначе
ПроверяемоеЗначение = Неопределено;
КонецЕсли;
КонецПроцедуры
Результат - получение врхней иерархии и сообщение с ссылкой на группу.
&НаСервере
Функция ВернутьВерхнийУровеньИерархииНаСервере()
ЗапросПоИерархии = Новый Запрос;
ЗапросПоИерархии.Текст = "ВЫБРАТЬ
| Справочник.Ссылка КАК Ссылка
|ИЗ
| Справочник."+ИмяСправочника+" КАК Справочник
|ГДЕ
| Справочник.Ссылка В ИЕРАРХИИ(&ПроверяемоеЗначение)
|ИТОГИ ПО
| Ссылка ТОЛЬКО ИЕРАРХИЯ";
ЗапросПоИерархии.УстановитьПараметр("ПроверяемоеЗначение",ПроверяемоеЗначение);
Выборка = ЗапросПоИерархии.Выполнить().Выбрать();
Если Выборка.Следующий() Тогда
Возврат Выборка.Ссылка;
Иначе
Возврат Справочники[ИмяСправочника].ПустаяСсылка();
КонецЕсли;
КонецФункции
Обработка переделана под платформу 8.3.7.1759. Но сам код работает и на платформе 8.2