Имя: Пароль:
1C
1С v8
Дерево значений
0 IoannVic
 
17.09.13
11:10
Люди добрые, помогите. Есть Дерево значений. В него кладу данные из выборки, группируя их по одному реквизиту имеющему составной тип данных (оба - ДокументСсылка). Получаю от такое дерево:

Проект 0001
      Задача 0001
Задача 0001
      Задача 0002

А хочу (и должно быть):

Проект 0001
      Задача 0001
           Задача 0002

Как реализовать?
1 Rie
 
17.09.13
11:13
(0) Так и кладите, как хотите получить. Задачу 0002 - в строки Задачи 0001.
(Код показывайте! Или оплачивайте услуги телепатов!).
2 IoannVic
 
17.09.13
11:13
Процедура СформироватьСписокЗадач(ТекПроект)
    
    Запрос = Новый Запрос;
    Запрос.Текст = "ВЫБРАТЬ
                   |    Задача.Ссылка КАК Задача,
                   |    Задача.Наименование,
                   |    Задача.Дедлайн,
                   |    Задача.Родитель КАК Родитель,
                   |    Задача.Дата,
                   |    Задача.СтатусЗадачи,
                   |    Задача.Исполнитель
                   |ИЗ
                   |    Документ.Задача КАК Задача
                   |
                   |СГРУППИРОВАТЬ ПО
                   |    Задача.Ссылка,
                   |    Задача.Наименование,
                   |    Задача.Дедлайн,
                   |    Задача.Родитель,
                   |    Задача.Дата,
                   |    Задача.СтатусЗадачи,
                   |    Задача.Исполнитель
                   |
                   |УПОРЯДОЧИТЬ ПО
                   |    Родитель
                   |ИТОГИ ПО
                   |    Родитель";
                  
    //Запрос.УстановитьПараметр("ТекПроект", ТекПроект);              
                  
    ДеревоИзЗапроса = Запрос.Выполнить().Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкам);
    ЗначениеВРеквизитФормы(ДеревоИзЗапроса, "СписокЗадач");
    
КонецПроцедуры
3 IoannVic
 
17.09.13
11:13
Код обычный, просто не представляю, даже куда копать((
4 Rie
 
17.09.13
11:14
(2) А "СГРУППИРОВАТЬ ПО" - оно зачем?
5 IoannVic
 
17.09.13
11:19
(4) Ковырял до этого, не прибрал за собой, не уверен, конечно,  новлиять на результат выборки не должно
6 rikodroo
 
17.09.13
11:20
При построении дерева, можно добавлять объекты, которые будут дочерними:

СтрокаДерева = МоёДерево.Строки.Добавить();
7 IoannVic
 
17.09.13
11:23
(6) Это я уже вычитал). Вопрос именно в том, как это организовать программно. Это делать кучу обходов по циклу и проверок есть ли дочерние объекты??
8 rikodroo
 
17.09.13
11:27
(7) ну сначала выгрузи резуоттат например в таблицу значений,  или выполни пакет запросов и результаты выгрузи в массивы результатов.

Затем инициализируй дерево. Далее пробегай по нужным тебе таблицам, используя н-р оператор НайтиСтроки() получай нужные данные и добавляй их в дерево. Разумеется, нужно постараться минимизировать количество проходов по таблицам.
9 IoannVic
 
17.09.13
11:29
(8) Спасибо, направление теперь есть, возможно к вечеру еще вернусь к ветке
10 depthzer0
 
17.09.13
11:33
так а рекурсия?
11 IoannVic
 
17.09.13
11:42
(10) Читал только холивар на эту тему, если есть какие-то ссылки с более менее подробной информацией буду благодарен. Я к сожалению ничего не нашел