|
Помогите с запросом | ☑ | ||
---|---|---|---|---|
0
Futarkh
05.09.11
✎
15:44
|
Народ, всю голову сломал.
Есть какое то подразделение. Надо найти его головное подразделение. Глубина вложенности не известна. Столкните из ступора хоть чем нибудь |
|||
1
Futarkh
05.09.11
✎
15:44
|
+(0) Надо найти подразделение Уровня 0, в которое текущее подразделение вложено
|
|||
2
dumb851
05.09.11
✎
15:47
|
рекурсия ;)
|
|||
3
dumb851
05.09.11
✎
15:47
|
ой.. не внимательно прочитал про запрос..
|
|||
4
Jstunner
05.09.11
✎
15:53
|
(0) в запросе, для неограниченного уровня вложенности, сделать не получится
есть вариент: ВЫБОР КОГДА Родитель = ЗНАЧЕНИЕ(ПустаяСсылка) ТОГДА Ссылка КОГДА Родитель.Родитель = ЗНАЧЕНИЕ(ПустаяСсылка) Тогда Родитель, и так N раз. пока не устанешь копипастить. Но, чтобы работало гарантировано, нужно ограничивать уровень (2) зачем рекурсия? |
|||
5
Futarkh
05.09.11
✎
15:59
|
(4) не эффективно. есть другие предложения?
|
|||
6
Jstunner
05.09.11
✎
15:59
|
(5) не эффективно? неужели?
|
|||
7
hhhh
05.09.11
✎
16:01
|
(5) заведи реквизит ГоловноеПодразделение
|
|||
8
Futarkh
05.09.11
✎
16:02
|
(5) Должно быть красивое решение, через соединение или еще как
|
|||
9
Jstunner
05.09.11
✎
16:04
|
(8) да, конечно, должно..
|
|||
10
Futarkh
05.09.11
✎
16:04
|
(5) Я же пишу, что уровень вложенности не известен. Если уровней 1000? Или конфигурация изменится и урвней станет еще больше? Переписывать запрос все время?
|
|||
11
Jstunner
05.09.11
✎
16:06
|
(10) читай внимательно (4): "в запросе, для неограниченного уровня вложенности, сделать НЕ получится" и "чтобы работало гарантировано, НУЖНО ограничивать уровень"
|
|||
12
Futarkh
05.09.11
✎
16:12
|
(11) Это объективное мнение или личное?)))
|
|||
13
Aprobator
05.09.11
✎
16:18
|
Тупо и навскидку:
|
|||
14
Jstunner
05.09.11
✎
16:20
|
(13) не взлетит
|
|||
15
Жан Пердежон
05.09.11
✎
16:29
|
добавь реквизит/свойство/РС
и при записи его обновляй |
|||
16
Valery
05.09.11
✎
16:29
|
я заносил в ТЗ группы уровня 0 в одну колонку, в другую список значений с элементами входящими в группу 0.
а в запосе в цикле формировал строки Пока ВыбПодр.Следующий() Цикл Если ВыбПодр.Ссылка.Уровень()=0 Тогда Ур=ВыбПодр.Ссылка; СтрТЗ=ТЗ.Добавить(); СтрТЗ.Группы=Новый СписокЗначений; СтрТЗ.Уровень=ВыбПодр.Ссылка; СтрТЗ.Группы.Добавить(ВЫбПодр.Ссылка); иначеЕсли ВыбПодр.Ссылка.ПринадлежитЭлементу(Ур) Тогда СтрТЗ.Группы.Добавить(ВЫбПодр.Ссылка); КонецЕсли; КонецЦикла; ТекстЗапроса = "ВЫБРАТЬ ЕстьNULL( Выбор"; ДЛя каждого стрТЗ из ТЗ цикл Если СтрТЗ.Группы.Количество()>0 Тогда ТекстЗапроса=ТекстЗапроса+" | Когда ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации в (&Групп"+ТЗ.Индекс(СтрТЗ)+ ") | Тогда (&Уровень"+ТЗ.Индекс(СтрТЗ)+")"; ИНАче ТекстЗапроса=ТекстЗапроса+" | Когда ОсновныеНачисленияРаботниковОрганизаций.ПодразделениеОрганизации = (&Уровень"+ТЗ.Индекс(СтрТЗ)+ ") | Тогда (&Уровень"+ТЗ.Индекс(СтрТЗ)+")"; КонецЕсли; КонеццИкла; |
|||
17
Aprobator
05.09.11
✎
16:30
|
а вообще в типовых конфах все уже есть. Главное все правильно слизать.
|
|||
18
Futarkh
05.09.11
✎
16:50
|
Подсказали делать через ИТОГИ ПО .. ТОЛЬКО ИЕРАРХИЯ, Выборка с обходом по группировкам и выборка только первого уровня
|
|||
19
Aprobator
05.09.11
✎
16:51
|
хм условие в ИЕРАРХИИ не работает что ли (ему вроде пофиг на уровень вложенности)?
|
|||
20
Jstunner
05.09.11
✎
16:53
|
(19) в условии (ГДЕ) работает, а вот в соединении (ПО) - фиг
|
|||
21
Aprobator
05.09.11
✎
17:14
|
(20) да ради бога, тогда так:
может правда с выразить поиграться придется для параметра. |
|||
22
kuza2000
05.09.11
✎
17:21
|
(19), (20) Есть предположение, что В ИЕРАРХИИ работает по такому алгоритму:
1. Вычисляется список всех групп, включая подчиненные (до выполнения основного запроса!) 2. В ИЕРАРХИИ заменяется на ".Владелец В СПИСКЕ (<список>) Из этого алгоритма как раз и выводятся следствия, где и как можно использовать, а как нельзя. Это лишь предположение. Если есть факты, что это не так - в студию! |
|||
23
Шапокляк
05.09.11
✎
17:24
|
(0) Запросом выбрать все подразделения первого уровня и проверить для каждого из них, входит ли наше.
|
|||
24
kuza2000
05.09.11
✎
17:24
|
(21) Попробовал - не работает:
Неверные параметры "В ИЕРАРХИИ(<?>..." (22) Подтверждается :) |
|||
25
Jstunner
05.09.11
✎
17:27
|
(22) подумай над этим
ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ (ВЫБРАТЬ Справочник.Номенклатура.Ссылка ИЗ Справочник.Номенклатура ГДЕ Справочник.Номенклатура.Родитель = ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка)) |
|||
26
Aprobator
05.09.11
✎
17:27
|
ВЫРАЗИТЬ(&Подразделение КАК Справочник.ПодразделенияОрганизации) В ИЕРАРХИИ...
|
|||
27
kuza2000
05.09.11
✎
17:31
|
(25) Не понял, к чему это?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |