![]() |
![]() |
![]() |
|
Получить 3 группу сверху для семиуровневого справочника номеклатуры | ☑ | ||
---|---|---|---|---|
0
GunKata
06.12.13
✎
15:52
|
Может кому поможет или есть решение красивее.
Задача. Получить список номенклатуры и значение 3 группу сверху. Номенклатура может лежать в любом уровне. Решил таким запросом ВЫБРАТЬ Номенклатура.Ссылка КАК Номенклатура, Номенклатура.НаименованиеПолное, Номенклатура.Идентификатор, ВЫБОР КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &Вверх ТОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель.Родитель = &Вверх ТОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель = &Вверх ТОГДА Номенклатура.Родитель.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель.Родитель = &Вверх ТОГДА Номенклатура.Родитель.Родитель КОГДА Номенклатура.Родитель.Родитель.Родитель = &Вверх ТОГДА Номенклатура.Родитель ИНАЧЕ "--" КОНЕЦ КАК Родитель3 ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа = ЛОЖЬ И Номенклатура.Родитель В ИЕРАРХИИ(&Родитель) |
|||
1
France
06.12.13
✎
15:54
|
и нах она нужна?? 3 группа сверху??
|
|||
2
1Сергей
06.12.13
✎
15:57
|
Чито такое &Вверх?
|
|||
3
bolobol
06.12.13
✎
15:58
|
(2) Мульт такой, где на шарах домик летал
|
|||
4
1Сергей
06.12.13
✎
16:01
|
(3) Ты что, мультики смотришь?
|
|||
5
GunKata
06.12.13
✎
16:01
|
Ну просто, такая ситуация, когда понадобилась именно 3 группа в иерархии, не первая и не последняя :)
|
|||
6
France
06.12.13
✎
16:04
|
(5) надо ситуации менять, а не чудокодить.... если найдется уникум, который перетусует все
|
|||
7
Sabbath
06.12.13
✎
16:04
|
(0) в голову приходит костыль: сделать реквизит с нумерацией иерархии
|
|||
8
1Сергей
06.12.13
✎
16:05
|
(7) Типа Уровень?
|
|||
9
Жан Пердежон
06.12.13
✎
16:06
|
(7) странно, что 1С сами его не сделают (вместо метода Уровень())
|
|||
10
GunKata
06.12.13
✎
16:06
|
(2) Это ссылка на папку верхнего уровня от которой идет отсчет вниз.
|
|||
11
GunKata
06.12.13
✎
16:08
|
(6) Значит этого уникума уволят, если он самовольно сменить структуру справочника Номенклатура :)
|
|||
12
1Сергей
06.12.13
✎
16:10
|
(10)
Функция РодительНужногоУровня(ЭлементСправочника, НужныйУровень) Если ЭлементСправочника.Уровень()<=НужныйУровень Тогда Возврат Неопределено; ИначеЕсли ЭлементСправочника.Уровень()<=(НужныйУровень+1) Тогда Возврат ЭлементСправочника.Родитель; Иначе Возврат РодительНужногоУровня(ЭлементСправочника.Родитель, НужныйУровень); КонецЕсли; КонецФункции |
|||
13
1Сергей
06.12.13
✎
16:11
|
*
|
|||
14
France
06.12.13
✎
16:11
|
(11) я бы уволил программиста))
|
|||
15
1Сергей
06.12.13
✎
16:13
|
Если рекурсофобия, то можно циклом
|
|||
16
Ksandr
06.12.13
✎
16:18
|
Либо цикл писать самому, либо поручить эту работу СКД:
1. В первом наборе выбираются все, где Родитель.Родитель.Родитель = ПустаяСсылка 2. Соединяешь со вторым набором с параметром связи, куда передаешь выбранный элемент в первом наборе, а в текущем В ИЕРАРХИИ(&Параметр). |
|||
17
GunKata
06.12.13
✎
16:22
|
(16) не то Родитель.Родитель.Родитель, это 3 снизу будет , а не сверху :) у меня первая мысль такая была
|
|||
18
Sabbath
06.12.13
✎
16:43
|
(8) ну как-то так, первая мысль: допилить конфу, чтобы где-то это хранилось и просто оттуда брать
|
|||
19
Sabbath
06.12.13
✎
16:46
|
+(18) хотя имхо что-то тут с решением задачи, вряд ли это нужно, или именно так нужно, или можно не в запросе. Допустим до запроса получать таблицу в виде:
Группа - Родитель - Уровень Для одной группы будут несколько родителей, каждый совего уровня. Ну и потом соединять с основным запросом |
|||
20
Sabbath
06.12.13
✎
16:46
|
+(19) таблицу соответственно в цикле получать
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |