![]() |
![]() |
![]() |
|
Как получить верхнего родителя группы? | ☑ | ||
---|---|---|---|---|
0
Parti
12.10.09
✎
10:53
|
Номенклатура - Материалы -Бензин - АИ-92 - АИ-92
Последнее - элемент остальное - группы. Как узнать, что у элемента АИ-92 верхний родитель - Материалы? При этом уровень вложенности заранее не известен |
|||
1
pavlika
12.10.09
✎
10:54
|
||||
2
Defender aka LINN
12.10.09
✎
10:55
|
Запрос с итогом по иерархии, и берешь только первый элемент.
|
|||
3
Survivor
12.10.09
✎
10:55
|
Запрос с иерархией.. и выбрать верхнюю группировку... если для единичной номенклатуры, а не для целого списка..
|
|||
4
also
12.10.09
✎
10:55
|
(2) Зачем?
РодительВерхнегоУровня (TopLevelParent) Использование: Чтение и запись. Описание: Тип: СправочникСсылка. Содержит родителя верхнего уровня. |
|||
5
also
12.10.09
✎
10:56
|
(0) Почему бы сначала СП не полистать?
|
|||
6
Defender aka LINN
12.10.09
✎
10:58
|
(5) А почему бы ТЕБЕ не прочитать?
|
|||
7
also
12.10.09
✎
10:58
|
(6) А что тебе не нравится?
|
|||
8
Defender aka LINN
12.10.09
✎
10:59
|
(7) Ну, посмотри, что такое ты в (4) привел.
|
|||
9
Mitriy
12.10.09
✎
11:01
|
(7)
Расширение табличного поля списка справочника РодительВерхнегоУровня (TopLevelParent) ... |
|||
10
also
12.10.09
✎
11:03
|
(9) ааа...
|
|||
11
аспид
12.10.09
✎
11:11
|
рекурсия.
Процедура ВернутьРодителя(Элемент) Если Элемент.Уровень > 0 тогда Элемент = Элемент.Родитель; ВернутьРодителя(Элемент); иначе Возврат Элемент; КонецЕсли; КонецПроцедуры так попрет ? |
|||
12
Defender aka LINN
12.10.09
✎
11:12
|
(11) Попрет, но за такое - пожизненный эцих без гвоздей
|
|||
13
аспид
12.10.09
✎
11:12
|
сфигали ?
|
|||
14
аспид
12.10.09
✎
11:12
|
(12) обоснуй
|
|||
15
Defender aka LINN
12.10.09
✎
11:15
|
(14) У тебя выполнятся N запросов, в зависимости от уровня вложенности. В каждом из этих запросов будут выбраны все реквизиты элемента.
Еще вопросы? :) |
|||
16
Stim
12.10.09
✎
11:16
|
(11) и как у тебя процедура возвращает значения, непонятно
|
|||
17
аспид
12.10.09
✎
11:18
|
(15)и че ? оперативку экономим ? или вычислительные мощности ?
(16) пардон. возврат убрать. сначала писал функцию. |
|||
18
аспид
12.10.09
✎
11:19
|
(15) это я к тому что если что то экономим...либо код используется в тяжелом запросе, тогда да. эцих не помешает.. а ради разового отстрела, нужно ли морочиться с запросами.
|
|||
19
Defender aka LINN
12.10.09
✎
11:19
|
(17) О_о Ты это серьезно, или прикалываешься?
|
|||
20
Defender aka LINN
12.10.09
✎
11:20
|
(18) Это ж не повод начинать расслабляться. Написал один раз и забыл нафиг. А то потом понадобится оптимизировать, начнешь по второму разу работу делать. Или ты просто трудолюбив от природы? :)
|
|||
21
Aprobator
12.10.09
✎
11:21
|
гы - лень двигатель прогресса )))
|
|||
22
аспид
12.10.09
✎
11:23
|
(20) ну..скажем так вопрошающему пока нечего напрягать.. не то что бы расслабиться. то есть суть я ему передал, а делать запросом, функцией или процедурой, это его личный опыт.. главное что бы понятно было куда копать. сам бы лично такой код не юзал бы.
(20) мучительно искал отмазу.. да ))) я трудолюбив .. от природы )) |
|||
23
Aprobator
12.10.09
✎
11:23
|
(20) кстати а вместо запроса с итогами не дешевле организовать подзапрос по группам первого уровня справочника и дальше через соединение? Или соединение по В ИЕРАРХИИ в данном случае не отрабатывает?
|
|||
24
Parti
12.10.09
✎
11:24
|
(18) это не разовый отстрел. Нужно получить все элементы справочника, у которых верхний родитель - Материалы. Но получаю через COM-соединение, поэтому запросом тут как-то сложно..
|
|||
25
аспид
12.10.09
✎
11:24
|
(24) вот вот .. суть понятна ? а далее копай. как лучше..
|
|||
26
Mitriy
12.10.09
✎
11:25
|
(24) почему сложно? все то же самое...
|
|||
27
аспид
12.10.09
✎
11:27
|
логика банальна. если человек что то спрашивает, то не является экспертом .. так ?
выяснять глубину неэкспертизма, лениво.. поэтому отвечаем максимально просто. что бы было понятно. |
|||
28
Mitriy
12.10.09
✎
11:27
|
(27) учись делать хорошо, а хреново - оно само получится...
|
|||
29
Aprobator
12.10.09
✎
11:29
|
(27) расслабься - чего ты завелся так? Ну грубоват немного тов. Defender, но дело он свое знает и фору многим здесь даст как специалист (мне в том числе).
|
|||
30
Defender aka LINN
12.10.09
✎
11:30
|
(23) Соединение по "в иерархии" вообще не делается.
(28) +100500 |
|||
31
аспид
12.10.09
✎
11:30
|
(28) согласен абсолютно. но при обучении делать хорошо, не забывать что основная цель не обучение а результат. не институт же.. иногда надо просто дать результат любой ценой быстро. а потом доводить до идеала...ну имхо конечно.
|
|||
32
аспид
12.10.09
✎
11:31
|
(29) да упаси бог. при моей работе быть нервным...скучно просто...потрепаться захотелось.. чего б не пофлудить с хорошим человеком.. тем более что в профессионализме Дефендера я собственно и не сомневался.. ))
|
|||
33
Aprobator
12.10.09
✎
11:31
|
(30) спс - буду знать. А то раньше с этим просто сталкиваться не приходилось. Ну вот как то не возникают у мя такие задачи.
|
|||
34
NcSteel
12.10.09
✎
11:36
|
Вот еще вариант )
СправочникСсылка.<Имя справочника>.ПолныйКод (CatalogRef.<Имя справочника>.FullCode) СправочникСсылка.<Имя справочника> (CatalogRef.<Имя справочника>) ПолныйКод (FullCode) Синтаксис: ПолныйКод() Возвращаемое значение: Тип: Строка. Строка, включающая код элемента и коды всех вышестоящих элементов. Коды выводятся слева направо, начиная с самого верхнего уровня, разделяются символом "/". Описание: Получает код элемента справочника с учетом кодов всех вышестоящих элементов. Пример: Сообщить("Полный код данного элемента: " + СсылкаНаЭлемент.ПолныйКод()); |
|||
35
Classic
12.10.09
✎
11:36
|
В восьмерке аналога семерошному ПолныйКод() нет?
|
|||
36
Classic
12.10.09
✎
11:36
|
(34) Опередил:)
|
|||
37
NcSteel
12.10.09
✎
11:53
|
А еще можно так )
Попытка РодительВысший = Элемент.Родитель.Родитель; Исключение Возврат РодительВысший; КонецПопытки; Попытка РодительВысший = Элемент.Родитель.Родитель.Родитель; Исключение Возврат РодительВысший; КонецПопытки; Попытка РодительВысший = Элемент.Родитель.Родитель.Родитель.Родитель; Исключение Возврат РодительВысший; КонецПопытки; Попытка РодительВысший = Элемент.Родитель.Родитель.Родитель.Родитель.Родитель; Исключение Возврат РодительВысший; КонецПопытки; |
|||
38
аспид
12.10.09
✎
11:56
|
(37) гм. забавно. а если уровней вложенности 15-20 ?
|
|||
39
Stim
12.10.09
✎
11:59
|
(38) а если заранее просчитать уровень и форматированием строки добавить родителей, сколько нужно?:)
|
|||
40
NcSteel
12.10.09
✎
12:00
|
РодительВысший = "";
Пока Истина Цикл Попытка Выполнить("РодительВысший = Элемент.Родитель.Родитель.Родитель.Родитель.Родитель;"); Прервать; Исключение КонецПопытки; КонецЦикла; |
|||
41
аспид
12.10.09
✎
12:00
|
(24)и таки да. если задача звучит именно так, то -
СправочникМенеджер.ВыбратьИерархически(<Родитель>,<Владелец>,<Отбор>,<Порядок>) |
|||
42
NcSteel
12.10.09
✎
12:01
|
тьфу ты
СтрокаРодитель = "Элемент"; РодительВысший = ""; Пока Истина Цикл СтрокаРодитель = СтрокаРодитель + ".Родитель"; Попытка Выполнить("РодительВысший =" + СтрокаРодитель ); Прервать; Исключение КонецПопытки; КонецЦикла; |
|||
43
NcSteel
12.10.09
✎
12:01
|
Опять скосячил )))
тьфу ты СтрокаРодитель = "Элемент"; РодительВысший = ""; Пока Истина Цикл СтрокаРодитель = СтрокаРодитель + ".Родитель"; Попытка Выполнить("РодительВысший =" + СтрокаРодитель ); Исключение Прервать КонецПопытки; КонецЦикла; вот так будет правильно ))) |
|||
44
NcSteel
12.10.09
✎
12:02
|
(41) Извращенец, настоящий программист идет по пути (43)
|
|||
45
Serg_1960
12.10.09
✎
12:03
|
Башка и так в понедельник трещит - а тут вы ешё тарахтите. Берите, варвары, готовое:
Функция РодительВерхнегоУровня(Ссылка) Запрос = Новый Запрос( "ВЫБРАТЬ | Номенклатура.Ссылка КАК Ссылка |ИЗ | Справочник.Номенклатура КАК Номенклатура |ГДЕ | Номенклатура.Ссылка = &Ссылка |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ"); Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецФункции |
|||
46
аспид
12.10.09
✎
12:05
|
(44) у меня децтво тяжелое было.. я начинал кодить с асма для 580го процессора )) поэтому некоторые перекосы в психике..
|
|||
47
NcSteel
12.10.09
✎
12:07
|
(45) Фу , пришел и все изгадил.
|
|||
48
аспид
12.10.09
✎
12:09
|
(47) вот вот .. оборвал крылья полету фантазии..
з.ы. Ростов ? земляк ? |
|||
49
NcSteel
12.10.09
✎
12:10
|
(48) Да Ростов.
|
|||
50
Serg_1960
12.10.09
✎
12:12
|
Всё ещё тарахтите :( Универсальное оружие:
Функция РодительВерхнегоУровня(Ссылка) Имя = Ссылка.Метаданные().Имя; Запрос = Новый Запрос( "ВЫБРАТЬ | "+Имя+".Ссылка КАК Ссылка |ИЗ | Справочник."+Имя+" КАК "+Имя+" |ГДЕ | "+Имя+".Ссылка = &Ссылка |ИТОГИ ПО | Ссылка ТОЛЬКО ИЕРАРХИЯ"); Запрос.Параметры.Вставить("Ссылка", Ссылка); Выборка = Запрос.Выполнить().Выбрать(); Выборка.Следующий(); Возврат Выборка.Ссылка; КонецФункции |
|||
51
pavlika
12.10.09
✎
12:12
|
А ведь автор обозначил в (24) что ему нужно ))
|
|||
52
аспид
12.10.09
✎
12:13
|
(51) ага. а я ему в 41 ответил. на то что нужно. думаешь не взлетит такой вариант ?
|
|||
53
NcSteel
12.10.09
✎
12:13
|
(50) Ты это давай , прекращай. А то я в депрессию впаду.
|
|||
54
аспид
12.10.09
✎
12:14
|
(51) хотя конечно в (50) гораздо ближе к 22см ))
|
|||
55
NcSteel
12.10.09
✎
12:14
|
(52) Нет не взлетит , так как отбор по родителю не предусматривает отбора по верхнему родителю.
|
|||
56
аспид
12.10.09
✎
12:16
|
(55) фиг. задача звучит как ? выбрать всех кто в папке материалы. ну и пожалте вариант выбора. читай (24) внимательно
|
|||
57
NcSteel
12.10.09
✎
12:19
|
(56) А он обратную выборку хочет. Все ровно запрос эффективней.
|
|||
58
аспид
12.10.09
✎
12:20
|
(57) а у него с запросами через ком какие то траблы. и сформулировал видимо криво.
(0) откликнись.. чего надо то было точно ? |
|||
59
Parti
12.10.09
✎
12:33
|
(58) надо было получить из справочника только те позиции, у которых верхний родитель - "МАТЕРИАЛЫ". Все остальные - накуй.
С запросами через ком разобралсо, но буду делать, как в 41 или.. что быстрее через ком - перебирать элементы как в 41 или организовать функцию проверки верхнего родителя (50) и перебирать все элементы? зы: неужели нельзя просто и тупо запросом выбрать только те элементы, у которых верхний родитель - Материалы?? |
|||
60
pavlika
12.10.09
✎
12:42
|
тупо запросом:
ВЫБРАТЬ |
|||
61
Parti
12.10.09
✎
12:46
|
спс
|
|||
62
Serg_1960
12.10.09
✎
13:08
|
Любителям извращений :)
Текст = "ВЫБРАТЬ Номенклатура.Ссылка ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка В ИЕРАРХИИ(ВЫБРАТЬ Номенклатура"; Для N = 1 По МойЭлемент.Уровень() Цикл Текст = Текст + ".Родитель"; КонецЦикла; Текст = Текст + " КАК Родитель ИЗ Справочник.Номенклатура КАК Номенклатура ГДЕ Номенклатура.Ссылка = &Ссылка)"; Запрос = Новый Запрос(Текст); Запрос.УстановитьПараметр("Ссылка", ВашЭлементВПодпапке); Выборка = Запрос.Выполнить().Выбрать(); Пока Выборка.Следующий() Цикл Сообщить(Выборка.Ссылка); КонецЦикла; |
|||
63
Mkonst
12.10.09
✎
13:38
|
(62) прочитай v8: Проблема при обновлении УПП релизом 24.2 предпослединй пост...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |