Имя: Пароль:
1C
 
Не могу получить родителя самого верхнего уровня
,
0 Shur1cIT
 
18.09.15
16:39
Условие не отрабатывает если родитель следующий  Элемент.Родитель

ВЫБОР
    КОГДА СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
        ТОГДА ВЫБОР
                КОГДА СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
                    ТОГДА ВЫБОР
                            КОГДА СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
                                ТОГДА ВЫБОР
                                        КОГДА СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель = ЗНАЧЕНИЕ(Справочник.Подразделения.ПустаяСсылка)
                                            ТОГДА СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение
                                        ИНАЧЕ СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель
                                    КОНЕЦ
                            ИНАЧЕ СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель
                        КОНЕЦ
                ИНАЧЕ СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель
            КОНЕЦ
    ИНАЧЕ СоответствиеПодразделенийИПодразделенийОрганизаций.Подразделение.Родитель.Родитель.Родитель.Родитель
КОНЕЦ
1 Shur1cIT
 
18.09.15
16:40
Вобщем такой вот изврат
3 Shur1cIT
 
18.09.15
16:41
(2) пытаюсь получить самого верхнего родителя:-)
4 Fragster
 
гуру
18.09.15
16:42
5 Живой Ископаемый
 
18.09.15
16:42
"чтож вы так убиватесь? вы ж так никогда не убьетесь!"
6 Chikko
 
18.09.15
16:43
а обязательно в запросе?
те надо элемент у которого родитель пустой, а сам он содержит нужного в иерархии (как это есть по-русски?).
7 Nuobu
 
18.09.15
16:43
(0) А что выдает?
8 ВедущийП
 
18.09.15
16:43
ВЫБРАТЬ
Номенклатура.Ссылка
ПОМЕСТИТЬ ГруппыВерхнегоУровня
ИЗ
Справочник.Номенклатура КАК Номенклатура
ГДЕ
Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)
И Номенклатура.ЭтоГруппа
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
ГруппыВерхнегоУровня.Ссылка
ИЗ
Справочник.Номенклатура КАК Номенклатура
ЛЕВОЕ СОЕДИНЕНИЕ ГруппыВерхнегоУровня КАК ГруппыВерхнегоУровня
ПО (Номенклатура.Ссылка В ИЕРАРХИИ
(ВЫБРАТЬ
ГруппыВерхнегоУровня.Ссылка
ИЗ
ГруппыВерхнегоУровня КАК ГруппыВерхнегоУровня))
ГДЕ
Номенклатура.Ссылка = &Ссылка
9 ВедущийП
 
18.09.15
16:43
из (4)
10 Fragster
 
гуру
18.09.15
16:44
еще можно сделать сохранить данные аля nested sets в РС и использовать его
11 Fragster
 
гуру
18.09.15
16:44
(9) ага, только оно там в комментах. и не работает.
12 aleks_default
 
18.09.15
16:44
(9) ему для таблицы
13 Ildarovich
 
18.09.15
16:47
Условие не отрабатывает потому, что:
http://catalog.mista.ru/public/392519/ .
А сама задача решается так, как в этом обсуждении:
Как получить родителя верхней группы спр.подразделенияорганизаций зуп 2.5
14 ВедущийП
 
18.09.15
16:48
(11) Логика красивая, в чем может не работать?
(12) судя по куску кода, для запроса.
(0) Смысл в том, что ты сохраняешь группы самого верхнего уровня, и потом запросом делаешь соединение исходной таблицы и таблицы групп верхнего уровня по условию Исходный элемент в ИЕРАРХИИ группы верхнего уровня.
15 aleks_default
 
18.09.15
16:49
(14) я про то что там не один исходный элемент, а список или даже таблица. Иначе для одного элемента запрос не нужен - достаточно простейшей рекурсивной функции в три строки.
16 Fragster
 
гуру
18.09.15
16:49
(14).1 там дальше в комментах написано
17 Shur1cIT
 
18.09.15
16:50
(13) Спасибо, то есть в моём случае не пустая ссылка а NULL
если я хочу оставить как есть должен ещё проверку на NULL провести..
18 Fragster
 
гуру
18.09.15
16:51
в общем случае это решается через создание дополнительной струкутры nested sets + уровень в иерархии. тогда запросом можно получить всех потомков, цепочку родителей, верхних родителей, родителей на определенное количество уровней вверх и т.п.
19 Fragster
 
гуру
18.09.15
16:51
почему 1с не добавило это в платформу - непонятно.
20 Ildarovich
 
18.09.15
17:02
(18) ...в общем случае это решается через создание дополнительной структуры... но не в реляционных СУБД. В них это типичная трудность. Иерархия плохо ложится на табличные представления. В большинстве СУБД изобретаются "костыли". Несколько ссылок на решения в других СУБД в обсуждении к статье http://catalog.mista.ru/public/158512/
21 Shur1cIT
 
18.09.15
17:06
(20) например в сетевой БД ещё одни связи создавать?
эх почему сетевая модель БД не прижилась...
22 Fragster
 
гуру
18.09.15
17:08
(20) почитай, что такое nested sets. там мы жертвуем скоростью обновления. Это при ORM подходе нужно множество запросов выполнять для обновления элементов при изменении родителя, при встройке в платформу можно сделать один апдейт на кучу элементов)