Создаём форму списка для справочника (или общую форму), удаляем от туда Реквизит Список и добавляем Реквизит Дерево - с типом ДеревоЗначений. Добавляем необходимые колонки внутри реквизиты (в моём случае Ссылка и Цена) [для ссылки Заголовок указал - Товар].
Далее при создании на сервере описываем событие формы "ПриСозданииНаСервере"
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТолькоПросмотр = Истина;
ВидЦен = ПолучитьВидЦен();
НачалоДня = НачалоДня(ТекущаяДата());
ОбновитьСписок();
КонецПроцедуры
Ну и сопутствующие функции в этот же модуль формы:
&НаСервере
Процедура ПриСозданииНаСервере(Отказ, СтандартнаяОбработка)
ТолькоПросмотр = Истина;
ВидЦен = ПолучитьВидЦен();
НачалоДня = НачалоДня(ТекущаяДата());
ОбновитьСписок();
КонецПроцедуры
&НаСервере
Процедура ОбновитьСписок()
ТоварыВыборка = Справочники.Товары.ВыбратьИерархически(,,,"Наименование");
Корень = Дерево.ПолучитьЭлементы();
Корень.Очистить();
ЦеныТоваров = РегистрыСведений.ЦеныТоваров;
ЦеныТоваровОтбор = Новый Структура("Товар, ВидЦен");
ЗаполнитьЗначенияСвойств(ЦеныТоваровОтбор, ЭтаФорма);
//ЦеныТоваровОтбор.ВидЦен = ВидЦен;
Пока ТоварыВыборка.Следующий() Цикл
//выходИзИерархии:
текЭлемент = Корень.Добавить();
ЗаполнитьЗначенияСвойств(текЭлемент, ТоварыВыборка);
Если ТоварыВыборка.ЭтоГруппа Тогда
Если ЗаполняемВеткуДерева(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров) Тогда
Перейти ~выходИзИерархии;
КонецЕсли;
Возврат;
Иначе
ПодгружаемДополнительныеДанные(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров);
КонецЕсли;
КонецЦикла;
КонецПроцедуры
&НаСервере
Функция ЗаполняемВеткуДерева(текКорень, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров)
Корень = текКорень.ПолучитьЭлементы();
текСсылка = ТоварыВыборка.Ссылка;
Пока ТоварыВыборка.Следующий() Цикл
//выходИзИерархии:
Если ТоварыВыборка.Родитель <> текСсылка Тогда Возврат Истина; КонецЕсли;
текЭлемент = Корень.Добавить();
ЗаполнитьЗначенияСвойств(текЭлемент, ТоварыВыборка);
Если ТоварыВыборка.ЭтоГруппа Тогда
Если ЗаполняемВеткуДерева(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров) Тогда
Перейти ~выходИзИерархии;
КонецЕсли;
Возврат Ложь;
Иначе
ПодгружаемДополнительныеДанные(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров);
КонецЕсли;
КонецЦикла;
Возврат Ложь;
КонецФункции
&НаСервере
Процедура ПодгружаемДополнительныеДанные(текЭлемент, ТоварыВыборка, ЦеныТоваровОтбор, ЦеныТоваров)
ЦеныТоваровОтбор.Товар = ТоварыВыборка.Ссылка;
СрезТоваров = ЦеныТоваров.СрезПоследних(НачалоДня, ЦеныТоваровОтбор);
Если СрезТоваров.Количество() > 0 Тогда
ЗаполнитьЗначенияСвойств(текЭлемент, СрезТоваров[0]);
КонецЕсли;
КонецПроцедуры
&НаСервере
Функция ПолучитьВидЦен()
выборкаВидыЦен = Справочники.ВидыЦен.Выбрать();
выборкаВидыЦен.Следующий();
Возврат выборкаВидыЦен.Ссылка;
КонецФункции
PS в тестовом примере я работал с некоторой своей конфигурацией. ВидыЦен на этом этапе справочник, используется в измерении регистра сведений ЦеныТоваров, там всего одно значение, оно же прописано в записях самого регистра в реальных данных. ВидЦен и НачалоДня (Дата) - реквизиты формы в моём случае.