Имя: Пароль:
1C
1С v8
Самый верхний родитель элемента справочника
,
0 doos1981
 
06.12.11
17:42
Кто-нибудь подскажите как в запросе получить самого верхнего родителя элемента справочника?
1 YF
 
06.12.11
17:44
Никак
2 MadHead
 
06.12.11
17:45
ВЫБРАТЬ
   Номенклатура.Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Родитель = Значение(Справочник.Номенклатура.ПустаяСсылка)

может так
3 ThreeTONE
 
06.12.11
17:45
проверяй в выбор когда тогда .Родителя до тех пор, пока родитель заполнен
4 YF
 
06.12.11
17:46
(2) Неа
5 YF
 
06.12.11
17:47
Мона перед этим сделать запрос, который посчитает самый максимальный уровень элемента, а потом динамически формировать текст запроса (оператор Выбор) ...
6 doos1981
 
06.12.11
17:48
(3,5)А если количество уровней иерархии неограниченно...
7 Живой Ископаемый
 
06.12.11
17:48
Можно через ВЫБОР, если мы предварительно заполним параметр самыми верхними родителями...
8 ThreeTONE
 
06.12.11
17:49
(6) как это решанию из (5) помешает?
9 MadHead
 
06.12.11
17:49
ВЫБРАТЬ
   Номенклатура.Ссылка КАК Ссылка
ИЗ
   Справочник.Номенклатура КАК Номенклатура
ГДЕ
   Номенклатура.Ссылка = &Ссылка
ИТОГИ ПО
   Ссылка ТОЛЬКО ИЕРАРХИЯ
10 YF
 
06.12.11
17:49
(6) Еще раз говорю сначала запрос к этому же справочнику, который даст реальный максимальный уровень ...
11 MadHead
 
06.12.11
17:51
(9) По идее если обойти по группировке первой то должно быть он
12 Живой Ископаемый
 
06.12.11
17:51
2(6) ну и что?
Например самыми верхними родителями есть группа Поставщики , Покупатели...
итого твой выбор будет из трех веток:

ВЫБОР КОГДА Контрагент.ССылка В ИЕРАРХИИ &Поставщики ТОГДА &Поставщики
ИНАЧЕЕСЛИ КОГДА Контрагент.ССылка В ИЕРАРХИИ &Покупатели ТОГДА &Покупатели
ИНАЧЕ ""
КАК РодительСамогоВерхнегоУровня
13 doos1981
 
06.12.11
17:52
(10) Нужен сам элемент и его "голова" и все
14 YF
 
06.12.11
17:53
(11) Это не поможет. Ему нужен не список всех верхних родителей, а верхний родитель каждого элемента
15 YF
 
06.12.11
17:53
(13) Не понял, что не нравится? Нет поля "Голова" в таблице справочника, поэтому не получишь простым запросом
16 Reset
 
06.12.11
17:55
(14) Чего ему нужно, это еще из него выпытать надо сначала
17 doos1981
 
06.12.11
17:57
В результате запроса мне нужна таблица:

Элемент(1) - Верхний родитель элемента(1)
...

Элемент(n) - Верхний родитель элемента(n)
18 Живой Ископаемый
 
06.12.11
17:59
2(17) точно верхнего? если верхнего - то см (12)
19 Живой Ископаемый
 
06.12.11
18:00
Ну и этих родителей гораздо меньше чем элементов - тоже понятно, да?
20 YF
 
06.12.11
18:01
(18) Кстати, изящненько
21 doos1981
 
06.12.11
18:03
(18) А если у меня таких верхних родителей 100
22 YF
 
06.12.11
18:05
(21) Сто групп в корне справочника? Странно, хотя пофиг, все равно отработает ...

Либо вложенный выбор мастрачь как я предложил в (5)
23 Живой Ископаемый
 
06.12.11
18:05
2(21) значит будет Оператор ВЫБОР из 101-й строки...
ваш кэп
24 Птица
 
06.12.11
18:08
(12)тогда может, проще присоединить верхних предков левым соединением к таблие справочника?
а их выбрать как имеющих пустого родителя
25 Живой Ископаемый
 
06.12.11
18:11
2(24) наверное... нужно пробовать
26 Живой Ископаемый
 
06.12.11
18:25
но в теории конечно это еще лучше и красивее
27 Ant1773
 
06.12.11
20:28
Решал как-то подобную задачу.
В лоб конечно и уровень важен, но если не стопицот уровней - можно так:

ВЫБОР
   КОГДА ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.Родитель.Родитель ЕСТЬ NULL
       ТОГДА ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации
   ИНАЧЕ ВЫБОР
           КОГДА ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.Родитель.Родитель.Родитель ЕСТЬ NULL
               ТОГДА ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.Родитель
           ИНАЧЕ ВЫБОР
                   КОГДА ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.Родитель.Родитель.Родитель.Родитель ЕСТЬ NULL
                       ТОГДА ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.Родитель.Родитель
                   ИНАЧЕ ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации.Родитель.Родитель.Родитель
               КОНЕЦ
       КОНЕЦ
КОНЕЦ
28 Живой Ископаемый
 
06.12.11
23:35
2(24) у мня не получается наложить условие связи В ИЕРАРХИИ:
ВЫБРАТЬ
   Контрагенты.Ссылка,
   ВерхниеРодители.Ссылка КАК ВерхнийРодитель
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Контрагенты.Ссылка КАК Ссылка
       ИЗ
           Справочник.Контрагенты КАК Контрагенты
       ГДЕ
           Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяССылка)
           И Контрагенты.ЭтоГруппа = ИСТИНА
       
       СГРУППИРОВАТЬ ПО
           Контрагенты.Ссылка) КАК ВерхниеРодители
       ПО Контрагенты.Ссылка В ИЕРАРХИИ  (ВерхниеРодители.Ссылка)


так, получается:

ВЫБРАТЬ
   Контрагенты.Ссылка,
   ВерхниеРодители.Ссылка КАК ВерхнийРодитель
ИЗ
   Справочник.Контрагенты КАК Контрагенты
       ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
           Контрагенты.Ссылка КАК Ссылка
       ИЗ
           Справочник.Контрагенты КАК Контрагенты
       ГДЕ
           Контрагенты.Родитель = ЗНАЧЕНИЕ(Справочник.Контрагенты.ПустаяССылка)
           И Контрагенты.ЭтоГруппа = ИСТИНА
       
       СГРУППИРОВАТЬ ПО
           Контрагенты.Ссылка) КАК ВерхниеРодители
       ПО Контрагенты.Родитель = ВерхниеРодители.Ссылка

Но это не то что нужно. :(
29 Птица
 
06.12.11
23:42
(28)хм, да. так не работает
30 Живой Ископаемый
 
06.12.11
23:44
да, жалко...
31 mikecool
 
06.12.11
23:45
я рисовал через 5 точек родителя
договорились, что хватит 6 уровней вложенности
и родитель.родитель... есть нул
32 H A D G E H O G s
 
06.12.11
23:47
Я бы сделал в цикле и не парился.
33 H A D G E H O G s
 
06.12.11
23:47
А это (31) - атский мистец.
34 mikecool
 
06.12.11
23:49
(33) и чо? отчет раз-два в неделю формируют, формируется за 2 минуты, на скд писань
чо плохого?
35 YF
 
07.12.11
00:13
А чем, всетаки вариант с двумя-то запросами не катит?