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

Тема в разделе "1C и всё что с ней связано", создана пользователем Af1na, 7 дек 2009.

Статус темы:
Закрыта.
  1. Af1na

    Af1na Гость

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

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

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

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

    КонецЦикла;

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

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


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

    Af1na Гость

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

    SeverBap Well-Known Member

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

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

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

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

Поделиться этой страницей