1с дерево значений нет иерархии

ДеревоЗначений нет иерархии, подскажите как сделать

. .
.
|УПОРЯДОЧИТЬ ПО
|ТЗКонечная.Номенклатура ИЕРАРХИЯ»;
Результат = Запрос.Выполнить();
ЭлементыФормы.ДеревоЗначений.Значение = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
ЭлементыФормы.ДеревоЗначений.СоздатьКолонки();
https://ibb.co/ktuj3R

(6)
ЭлементыФормы.ДеревоЗначений.СоздатьКолонки();
ЭлементыФормы.ДеревоЗначений.Колонки.Номенклатура.ОтображатьИерархию = Истина;

|ВЫБРАТЬ
| ПродажиОбороты.Подразделение КАК Подразделение,
| ПродажиОбороты.Номенклатура КАК Номенклатура,
| NULL КАК КоличествоВыпуск,
| NULL КАК ПланКоличествоВыпуск,
| NULL КАК ПланКоличествоПродаж,
| NULL КАК ПланСтоимостьПродаж,
| СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоПродаж,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьПродаж,
| NULL КАК КоличествоПродажПП,
| NULL КАК СтоимостьПродажПП
|ПОМЕСТИТЬ Продажи

|ВЫБРАТЬ
| ПродажиОбороты.Подразделение КАК Подразделение,
| ПродажиОбороты.Номенклатура КАК Номенклатура,
| NULL КАК КоличествоВыпуск,
| NULL КАК ПланКоличествоВыпуск,
| NULL КАК ПланКоличествоПродаж,
| NULL КАК ПланСтоимостьПродаж,
| СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоПродаж,
| СУММА(ПродажиОбороты.СтоимостьОборот) КАК СтоимостьПродаж,
| NULL КАК КоличествоПродажПП,
| NULL КАК СтоимостьПродажПП
|ПОМЕСТИТЬ Продажи
|ИЗ
| РегистрНакопления.Продажи.Обороты(
| &ДатаНачала,
| &ДатаКонца,
| Регистратор,
| Номенклатура.Наименование <> «»(10) Сырье и материалы»»
| И Номенклатура.ЦеноваяГруппа.Наименование = «»Сырая продукция»»
| ИЛИ Номенклатура.ЦеноваяГруппа.Наименование = «»Готовая продукция»») КАК ПродажиОбороты
|
|СГРУППИРОВАТЬ ПО
| ПродажиОбороты.Подразделение,
| ПродажиОбороты.Номенклатура
|
|ОБЪЕДИНИТЬ ВСЕ

но с ПОМЕСТИТЬ это не работает

Источник

Не отображается иерархия в дереве значений

Обычные формы. Никак не могу отобразить иерархию в дереве значений на форме. У табличного поля стоит галочка «Дерево». У колонки склад стоит галочка «Отображать иерархию», но все равно отображается линейный список (см. скрин). В чем тут еще может быть дело?
Дерево формирую следующим образом:

Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ТЗОстатки.ГруппаСклада, | ТЗОстатки.Склад, | ТЗОстатки.КоличествоОстаток |ПОМЕСТИТЬ ВТ_Остатки |ИЗ | &ТЗОстатки КАК ТЗОстатки |ГДЕ | ТЗОстатки.Товар = &Товар |; | |////////////////////////////////////////////////////////////­//////////////////// |ВЫБРАТЬ | ВТ_Остатки.ГруппаСклада КАК ГруппаСклада, | ВТ_Остатки.Склад КАК Склад, | ВТ_Остатки.КоличествоОстаток КАК Остаток |ИЗ | ВТ_Остатки КАК ВТ_Остатки |ИТОГИ | СУММА(Остаток) |ПО | ГруппаСклада"; Запрос.УстановитьПараметр("ТЗОстатки", ВирТаблОстатков); Запрос.УстановитьПараметр("Товар", ТекущаяНоменклатура); РезультатЗапроса = Запрос.Выполнить(); ВыборкаГруппаСклада = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаГруппаСклада.Следующий() Цикл Если ВыборкаГруппаСклада.ГруппаСклада = null Тогда Продолжить; КонецЕсли; СтрокаГруппаСкладов = мДеревоОстатков.Строки.Добавить(); СтрокаГруппаСкладов.Склад = ВыборкаГруппаСклада.ГруппаСклада; СтрокаГруппаСкладов.Остаток = ВыборкаГруппаСклада.Остаток; ВыборкаДетальныеЗаписи = ВыборкаГруппаСклада.Выбрать(); Пока ВыборкаДетальныеЗаписи.Следующий() Цикл СтрокаСклад = мДеревоОстатков.Строки.Добавить(); ЗаполнитьЗначенияСвойств(СтрокаСклад,ВыборкаДетальныеЗаписи); КонецЦикла; КонецЦикла;

Источник

Читайте также:  Молодое дерево черешни обрезка

Дерево значений

Создал дерево значений, мне необходимо добавить Иерархический вид, например по Номенклатуре. В моем случае идет создание строк по типо родитель-поле-поле-поле, а нужно в виде родитель-поле, родитель-поле. Как можно правильно настроить дерево и где, чтобы можно было строить дерево в таком виде? Т.е. нужна группировка по определенному полю, в этой группе может быть несколько строк, но при этом можно создавать несколько групп различных

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

Делайте программно. Это позволит избежать ограничений и условностей автоматически созданных деревьев, созданных, к примеру, из результата запроса.
— У дерева значений должна быть колонка с уникальными идентификаторами строк. Без него никак.
— Так же желательно иметь еще одну колонку, с глубиной уровня строки. Пригодится во многом, например — сл. пункт
— На различных уровнях вложенности часто нужно скрыть колонки. Тут хорошо работает условное оформление УФ. По значению в строке скрываете видимость колонки — в итоге у родителя видно наименование, а у подчиненных строк вместо наименования, в этой же колонке, можно показывать описание или дополнительную информацию

А в целом работа с ДЗ — тот еще гемор, поэтому в сложных коллекциях в для хранения значений используется обычная таблица значений, данные которой «красиво» отображаются на форме в отдельном объекте — дереве значений.

&НаСервере Процедура ПолучитьДеревоНаСервере() Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | Номенклатура.Родитель КАК Родитель, | Номенклатура.Ссылка КАК Номенклатура |ИЗ | Справочник.Номенклатура КАК Номенклатура |ИТОГИ ПО | Родитель"; ДеревоЗнач = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией); ЗначениеВРеквизитФормы(ДеревоЗнач, "ДЗ"); КонецПроцедуры &НаКлиенте Процедура ПолучитьДерево(Команда) ПолучитьДеревоНаСервере(); КонецПроцедуры
&НаКлиенте Процедура СформироватьДерево(Команда) СформироватьДеревоНаСервере(); КонецПроцедуры &НаСервере Процедура СформироватьДеревоНаСервере() Запрос = Новый Запрос( "ВЫБРАТЬ | Т.Ссылка КАК Ссылка, | Т.Родитель КАК Родитель |ИЗ | Справочник.Номенклатура КАК Т"); ТЗ = Запрос.Выполнить().Выгрузить(); ТЗ.Индексы.Добавить("Родитель"); ДобавитьСтрокиДереваРекурсивно(ТЗ, Дерево, Справочники.Номенклатура.ПустаяСсылка()); КонецПроцедуры &НаСервере Процедура ДобавитьСтрокиДереваРекурсивно(ТЗ, СтрокаДерева, Родитель) МассивСтрок = ТЗ.НайтиСтроки(Новый Структура("Родитель", Родитель)); Строки = СтрокаДерева.ПолучитьЭлементы(); Для Каждого Стр Из МассивСтрок Цикл НоваяСтрока = Строки.Добавить(); ЗаполнитьЗначенияСвойств(НоваяСтрока, Стр); ДобавитьСтрокиДереваРекурсивно(ТЗ, НоваяСтрока, Стр.Ссылка) КонецЦикла; КонецПроцедуры

Источник

Читайте также:  Муравьи на хвойных деревьях
Оцените статью