как к строке дерева значений добавить все подчиненные ей

  • Автор темы Af1na
  • Дата начала
Статус
Закрыто для дальнейших ответов.
A

Af1na

#1
значит у меня отчет в котором должно выводиться дерево значений , по оборудованию и его размещению (размещение составной тип данных),из регистра сведений(в котором два поля размещение и оборудование). оборудование может размещаться как у физических лиц так и в самом оборудовании(речь идет о компьютерах и комплектующих). значит в первой процедуре я делаю запрос по размещению (по физическим лицам ) и делаю физических лиц Строкой верхнего уровня (в дереве одна колонка) а вторая процедура"ВывеслиУровень" добавляет все подчиненные строки к строке самого верхнего уровня - К строке "СтрокаДерева"
короче в первой процедуре
СтрокаВерхнегоУровня к ней надо добавить все строки которые ей подчинены, для этого использовать вторую процедуру должно получиться в отчете так
-ФизЛицо
-Системник
-Видеокарта ..

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

Запрос.Выполнить();
Выборка = Запрос.Выполнить().Выбрать();
НаборЗначений.Колонки.Очистить();
НаборЗначений.Колонки.Добавить("ИмяКолонки");
НаборЗначений.Колонки.Добавить("Описание");
Пока Выборка.Следующий() Цикл

СтрокаВерхнегоУровня = НаборЗначений.Строки.Добавить();
СтрокаВерхнегоУровня.ИмяКолонки = Выборка.Размещение;
??????????? что тут нужно написать чтоб к строке Верхнего уровня добавить все ей подчиненные используя
процедуру "ВывестиУровень" ??

КонецЦикла;

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

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


Добавлено: На этом форуме вообще есть кто-нить живой?!!
 
A

Af1na

#2
скажите хоть что не понятно , может кто помочь??? !! :D
 

SeverBap

Well-known member
18.09.2007
451
0
#3
Код:
Процедура КнопкаСформироватьНажатие(Кнопка)
Запрос = Новый Запрос;
Запрос.Текст="ВЫБРАТЬ
| КонтрольОборудованияСрезПоследних.Оборудование,
| КонтрольОборудованияСрезПоследних.Размещение
|ИЗ
| РегистрСведений.КонтрольОборудования.СрезПоследних КАК КонтрольОборудованияСрезПоследних
|ГДЕ
| КонтрольОборудованияСрезПоследних.Размещение ССЫЛКА Справочник.ФизическиеЛица";

Запрос.Выполнить();
Выборка = Запрос.Выполнить().Выбрать();
НаборЗначений.Колонки.Очистить(); 
НаборЗначений.Колонки.Добавить("ИмяКолонки"); 
НаборЗначений.Колонки.Добавить("Описание"); 
Пока Выборка.Следующий() Цикл

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

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