Имя: Пароль:
1C
 
Запрос иерархия
0 _Demos_
 
17.06.11
16:33
Здравствуйте! нужна помощь.
Имеется иерархический справочник. Количество уровней неизвестно.
Есть две таблицы. Первая с элементами верхнего уровня, вторая - со всеми только не верхнего.
Можно ли соединить эти две таблицы без Родитель.Родитель."и еще ф&г знает сколько раз". Чтобы для каждой строки второй таблицы установился элемент из первой т.е. родитель из первого уровня?
1 _Demos_
 
17.06.11
16:41
up
2 Конфигуратор1с
 
17.06.11
16:48
(2) А что мешает во второй вывести элемент самого верхнего уровня?
3 _Demos_
 
17.06.11
16:49
(2) Первая таблица получается из другого источника
4 _Demos_
 
17.06.11
16:57
кхм
5 Абыр
 
17.06.11
17:01
соединить таблицы по В ИЕРАРХИИ
6 _Demos_
 
17.06.11
17:05
(5) аха, щас
7 _Demos_
 
17.06.11
17:06
+ (6) незя так
8 sanja26
 
17.06.11
17:07
выбрать все поля из первой
9 sanja26
 
17.06.11
17:09
выбрать из второй
на закладке связи - левое соединение первой со второй, в левой родитель, в правой ссылка
10 _Demos_
 
17.06.11
17:12
(9) количество уровней иерархии НЕОГРАНИЧЕНО
11 le_
 
17.06.11
17:12
Думаю, не получится их в запросе соединить. Ищи другое решение.
12 _Demos_
 
17.06.11
17:12
(9) не покатит так
13 SUA
 
17.06.11
17:13
(12)групп много?
и групп 1го уровня в том числе?
14 SUA
 
17.06.11
17:14
этап1: для каждой группы 1го уровня получить все вложенные,
этап2: сравнивать уже со списками, условие В
15 _Demos_
 
17.06.11
17:18
(14) >> этап1: для каждой группы 1го уровня получить все вложенные

а можно пример
16 SUA
 
17.06.11
17:22
(15)ВЫБРАТЬ Ссылка ИЗ Справочник.Номенклатура ГДЕ ЭтоГруппа И Ссылка В ИЕРАРХИИ(&Элемент)
ессно не один запрос тогда будет, а пачка мелких предварительно
17 _Demos_
 
17.06.11
17:24
(16) как его соединить со вторым, если (&Элемент) это список или массив
18 SUA
 
17.06.11
17:28
(17)этот никак - для каждой группы 1го уровня вызвать отдельно.
а итоговый запрос-объединение можно строить динамически по типу
выбор когда элементсписка2.Ссылка в (&НаборУзлов1)тогда &родитель1
19 Poky
 
17.06.11
17:36
Если это две коллекции значений (например ТЗ), то можно циклом обойти вторую (со всеми элементами) и рекурсивной функцией найти соответствующего родителя из первой.
20 rs_trade
 
17.06.11
17:41
Не так?

ВЫБРАТЬ
   ВерхнийУровень.Наименование,
   Номенклатура.Наименование КАК Наименование1,
   Номенклатура1.Наименование КАК Наименование2
ИЗ
   Справочник.ВерхнийУровень КАК ВерхнийУровень
       ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура
           ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Номенклатура КАК Номенклатура1
           ПО Номенклатура.Ссылка = Номенклатура1.Родитель
       ПО ВерхнийУровень.Ссылка = Номенклатура._Родитель
21 SUA
 
17.06.11
17:43
(20)количество уровней вложенности произвольно
22 _Demos_
 
17.06.11
17:44
(19) да это как вариант, но пока ищу вариант в виде запроса
(20) -> (10)
23 Конфигуратор1с
 
17.06.11
18:09
ну может конечно бред. но как вариант -
Сч = 0;
Для Каждого стр из тз цикл
Сч = Сч + 1;
Запрос.УстановитьПараметр("Группа"+Сч,Стр.Группа)
Текст = Текст + "Выбрать Справчоник.ССылка из Справочника  где Справчоник.ССылка в Иерархии (Группа"+ Сч+") объединить
Выбрать Ссылка из ВтПервогоУровня  где ВтПервогоУровня.ССылка в Иерархии (Группа"+ Сч+") объединить";  
КонецЦикла;
24 Конфигуратор1с
 
17.06.11
18:11
то есть в цикле сформировать текст запроса с параметрами и выбрать в иерархии все элементы для каждого элемента первого уровня?
25 Конфигуратор1с
 
17.06.11
18:12
ох и бред мне в пятницу вечером в голову лезет)))
26 Tapo4ek
 
17.06.11
18:57
Цитирую на всякий случай:

Здравствуйте! нужна помощь.
Имеется иерархический справочник. Количество уровней неизвестно.
Есть две таблицы. Первая с элементами верхнего уровня, вторая - со всеми только не верхнего.
Можно ли соединить эти две таблицы без Родитель.Родитель."и еще ф&г знает сколько раз". Чтобы для каждой строки второй таблицы установился элемент из первой т.е. родитель из первого уровня?
27 Tapo4ek
 
17.06.11
18:58
Понять не могу зачем "левая" таблица, если можно выдрать "старших" родителей из "правой" таблицы. Не совсем понятна задача...