Имя: Пароль:
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
Понять не могу зачем "левая" таблица, если можно выдрать "старших" родителей из "правой" таблицы. Не совсем понятна задача...
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший