Имя: Пароль:
1C
1С v8
Иерархия по двум справочникам.
0 kumena
 
15.11.14
10:12
Мини конфигурация с примером, 2 справочника подразделения с иерархией элементов и сотрудники, сотрудники имеют реквизит подразделение.
Необходимо выстроить иерархию в дереве по подразделениям и сотрудникам.

Пока получилось выстроить деревом только подразделения, с таким кодом.

&НаКлиенте
Процедура Заполнить(Команда)
    // Вставить содержимое обработчика.
    ЗаполнитьДеревоНаСервере();
КонецПроцедуры


Процедура ЗаполнитьДеревоНаСервере()
    
    Запрос = Новый Запрос;
    Запрос.Текст =
    "Выбрать
    |
    |    Ссылка КАК ПодразделениеСотрудник
    |
    |Из Справочник.ПодразделенияОрганизаций
    |
    |Упорядочить по ПодразделениеСотрудник Иерархия
    |
    |";
    
    Результат = Запрос.Выполнить();
    Если Результат.Пустой() Тогда
        Возврат;
    КонецЕсли;
    
    ДеревоИерархии = РеквизитФормыВЗначение("Дерево");
    
    //Вариант 1.
    //ДеревоИерархии = Результат.Выгрузить(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    //Вариант 1=======.
    
    
    //Вариант 2.
    Выборка = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
    Если Выборка.Количество() > 0 Тогда
        ДобавитьСтрокиВДерево(Выборка, Неопределено, ДеревоИерархии);
    КонецЕсли;
    //Вариант 2=======.
    
    ЗначениеВДанныеФормы(ДеревоИерархии, Дерево);
    
КонецПроцедуры    




Процедура ДобавитьСтрокиВДерево(Выборка, СтрокаРодитель, ДеревоИерархии)
    
    Пока Выборка.Следующий() Цикл
        
        Если СтрокаРодитель = Неопределено Тогда
            НоваяСтрока = ДеревоИерархии.Строки.Добавить();
        Иначе
            НоваяСтрока = СтрокаРодитель.Строки.Добавить();
        КонецЕсли;    
        
        НоваяСтрока.ПодразделениеСотрудник = Выборка.ПодразделениеСотрудник;
        ПодчиненнаяВыборка = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкамСИерархией);
        Если ПодчиненнаяВыборка.Количество() > 0 Тогда
            ДобавитьСтрокиВДерево(ПодчиненнаяВыборка, НоваяСтрока, ДеревоИерархии);
        КонецЕсли;
        
    КонецЦикла;

КонецПроцедуры
    

т.е. получается так https://cloud.mail.ru/public/ee2b939657d1/2333.png
а нужно так https://cloud.mail.ru/public/eee1cf42ccbe/2334.png
задача - нужно дописать выборку сотрудников. кому интересно - вот тут демоконфигурация примера на 8.2
https://cloud.mail.ru/public/bcb8e21b47fe/demo2.dt
1 kumena
 
15.11.14
10:18
ссылки на скриншоты кривовато вонзились, еще раз.

https://cloud.mail.ru/public/ee2b939657d1/2333.png
https://cloud.mail.ru/public/eee1cf42ccbe/2334.png
2 kumena
 
15.11.14
12:25
всем спасибо за понимание, все получилось!