|
Как по элементу справочника узнать его верхний родитель? | ☑ | ||
---|---|---|---|---|
0
Vexcel
20.05.14
✎
16:20
|
Есть иерархический справочник, ну допустим Номенклатура.
Есть элемент справочника, допустим Автомобиль. Нужно найти его родителя, но не последнего, а первого. Ну допустим есть верхние папки Машины Тракторы Танки в каждой папке есть ещё папки, а в них ещё папки и т.д. И нужно вытащить не последнюю папку, а вот первую. Можно конечно определить эти верхние папки(запрос по условию, где родитель пустой) потом перебирать в цикле эти папки запросом с отбором по нужной номенклатуре и "в иерархии(&папка)" но это не красиво. |
|||
1
Ёпрст
20.05.14
✎
16:21
|
Нужно где ?
в запросе ? |
|||
2
mikecool
20.05.14
✎
16:21
|
итоги по ссылка только иерархия
первый элемент в выборке будет искомый |
|||
3
Shurjk
20.05.14
✎
16:22
|
Рекурсия будет красивей смотреться.
|
|||
4
Fedor-1971
20.05.14
✎
16:25
|
(3) Зачем рекурсия? Достаточно простого цикла:
Пока ЗначениеЗаполнено(спр.Родитель) цикл спр=спр.Родитель; КонецЦикла; |
|||
5
Крошка Ру
20.05.14
✎
16:27
|
(4)
спр=спр.Родитель; чем не рекурсия? )) |
|||
6
Fedor-1971
20.05.14
✎
16:32
|
(5) Рекурсия - вызов процедуры(функции) из её тела, что забивает стек. В (4) простое присвоение в цикле, прочувствуй разницу.
|
|||
7
Крошка Ру
20.05.14
✎
16:33
|
(6) Реку́рсия — наличие в определении, описании, изображении какого-либо объекта или процесса самого этого объекта или процесса, то есть ситуация, когда объект является частью самого себя.
wiki:Рекурсия |
|||
8
Shurjk
20.05.14
✎
16:35
|
(6) В1с проблемы с забиванием стэка решаются на уровне платформы.
|
|||
9
ДенисЧ
20.05.14
✎
16:36
|
(8) Правильно. Забился стек - 1с просто сваливается.
|
|||
10
Shurjk
20.05.14
✎
16:37
|
(9) типа того:) но только когда наблюдается бесконечный цикл.
|
|||
11
Бывший мистянин
20.05.14
✎
16:45
|
Вижу что в 1С так и продолжают пытаться программировать люди мало знакомые с элементарными понятиями программирования. Значит для профессионалов будет еще работа :).
|
|||
12
Fedor-1971
20.05.14
✎
16:45
|
(7) Блистать знаниями изволим? Предлагаю взять учебник по С (С++ или еще по какому языку программирования) и прочитать что такое рекурсия, что она делает со стеком. Особое внимание обратить на то, что займет больше времени (и ресурсов) присваивание или вызов процедуры.
|
|||
13
mehfk
20.05.14
✎
16:46
|
(11) Кончил и закурил?
|
|||
14
Крошка Ру
20.05.14
✎
16:50
|
(12) Боже мой... Вот уж не думал, что ссылка на педивикию является блистанием))
Рекурсия - это не термин С (С++ или еще какого языка программирования), это понятие немножко шире. Просто ты под рекурсией понимаешь рекурсивный вызов функции(или процедуры), я - сопоставление объекта и его части, только и всего ;))) |
|||
15
Лаврентий Берия
20.05.14
✎
16:55
|
(0) Посмотри, что вернёт забытый всеми метод .ПолноеНаименование(); Но надо быть уверенным, что в наименованиях групп верхнего уровня отсутствуют символы "/".
|
|||
16
Fedor-1971
20.05.14
✎
17:06
|
(14) Это больше Философия, главное, что-бы было понимание что делаем и не постучится ли в дверь админ с вопросом "Какого ... упал сервер?"
(15) ТС нужен родитель и в наименовании очень может быть "/" - пользователи вводят по принципу "А мне надо!" |
|||
17
Kamas
20.05.14
✎
17:16
|
урра 16 постов про родителей))
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |