|
v7: Подскажите как получить всех родителей элемента справочника | ☑ | ||
---|---|---|---|---|
0
kostya_77
23.08.16
✎
10:43
|
Подскажите как получить всех родителей элемента справочника
|
|||
1
Ёпрст
23.08.16
✎
10:45
|
рекурсией
|
|||
2
Горогуля
23.08.16
✎
10:45
|
получать родителя, пока он не пустой. или полный путь(?)
|
|||
3
Ёпрст
23.08.16
✎
10:45
|
Либо ПолныйКод()
|
|||
4
Злопчинский
23.08.16
✎
10:46
|
(1) +1
|
|||
5
kostya_77
23.08.16
✎
10:46
|
можно пример рекурсии?
|
|||
6
Это_mike
23.08.16
✎
10:47
|
(5) Для того, чтобы понять, что такое рекурсия - нужно понять, что такое рекурсия.
|
|||
7
DDwe
23.08.16
✎
10:47
|
(5)
#include <iostream> size_t fact(size_t n) { if(n==0) return 1; return n*fact(n-1); } int main() { std::cout << fact(12) << std::endl; return 0; } |
|||
8
Горогуля
23.08.16
✎
10:47
|
(5) Коктейль рекурсивный. Его состав: 10% спирта, 30% воды и 60% коктейля рекурсивного.
|
|||
9
Горогуля
23.08.16
✎
10:48
|
||||
10
DDwe
23.08.16
✎
10:49
|
(5)
def short_story(): print("У попа была собака, он ее любил.") print("Она съела кусок мяса, он ее убил,") print("В землю закопал и надпись написал:") short_story() |
|||
11
Это_mike
23.08.16
✎
10:49
|
(9) сепульки - уже не рекурсия, а замкнутый граф
|
|||
12
DDwe
23.08.16
✎
10:50
|
(5)
(defun my-copy-tree (D) (cond ((null D) nil) ((atom D) D) (t (cons (my-copy-tree (car D)) (my-copy-tree (cdr D)))))) |
|||
13
Ёпрст
23.08.16
✎
10:50
|
(5)
Функция ВернутьРодителя(ССылка) Если ПустоеЗначение(ССылка) = 0 Тогда Возврат ВернутьРодителя(ССылка.Родитель); Иначе Возврат ""; КонецФункции |
|||
14
Горогуля
23.08.16
✎
10:51
|
(11) а рекурсия - это замкнутый граф без рёбер, состоящий из одной вершины?
|
|||
15
kostya_77
23.08.16
✎
10:51
|
в 1с8 я знаю как, а для 1с7?
|
|||
16
DDwe
23.08.16
✎
10:51
|
(5)
Procedure Power (X: real; N: integer; var Y: real); Begin If N=0 then Y:= 1 Else Begin Power(X, N-1,Y); Y:= Y*X; End ; End ; |
|||
17
DDwe
23.08.16
✎
10:52
|
(15) Что как?
|
|||
18
Ёпрст
23.08.16
✎
10:52
|
(15) Та ты шо ?
|
|||
19
Горогуля
23.08.16
✎
10:53
|
(15) а как в 8?
|
|||
20
Злопчинский
23.08.16
✎
10:53
|
(15) аналогично, коллека!
|
|||
21
vyaz
23.08.16
✎
10:53
|
запросом можно
|
|||
22
Это_mike
23.08.16
✎
10:54
|
(14) угу. вырожденный
|
|||
23
Горогуля
23.08.16
✎
10:54
|
(21) иногда
|
|||
24
DDwe
23.08.16
✎
10:55
|
(21) Зачем пихать запрос туда где он не нужен?
|
|||
25
DDwe
23.08.16
✎
10:59
|
Всё, все выдохлись с помощью? А бедняга ТС делай что хочешь?
|
|||
26
Горогуля
23.08.16
✎
11:00
|
(25) сейчас он скопипастит у Ёпрста, поправит ошибку и скажем спасибо
|
|||
27
DDwe
23.08.16
✎
11:01
|
(26) Кому скажем?
|
|||
28
vyaz
23.08.16
✎
11:02
|
(24) а что не так?
|
|||
29
vyaz
23.08.16
✎
11:03
|
+28 ИТОГИ ПО Ссылка ТОЛЬКО ИЕРАРХИЯ
|
|||
30
kostya_77
23.08.16
✎
11:05
|
так что никто примера получений родителя верхнего уровня в 1с7 не приведет?
|
|||
31
vyaz
23.08.16
✎
11:07
|
+29 блин... клюшки проглядел :)
|
|||
32
DDwe
23.08.16
✎
11:09
|
(30) Чем тебе (13) не понравилось?
|
|||
33
Dmitrii
гуру
23.08.16
✎
11:09
|
(0)
ТекущийЭлементНоменклатуры = ЭлементНоменклатура; Запрос = Новый Запрос("ВЫБРАТЬ | Номенклатура.Родитель, | Номенклатура.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель, | Номенклатура.Родитель.Родитель.Родитель.Родитель.Родитель |ИЗ | Справочник.Номенклатура КАК Номенклатура | |ГДЕ | Номенклатура.Ссылка = &ТекущийЭлементНоменклатуры"; Пока Истина Цикл Запрос.УстановитьПараметр("ТекущийЭлементНоменклатуры", ТекущийЭлементНоменклатуры); Результат = Запрос.Выполнить(); Если Результат.Пустой() Тогда Прервать; КонецЕсли; Выборка = Результат.Выбрать(); Выборка.Следующий(); Для НомерКолонки = 0 По Результат.Колонки.Количество() - 1 Цикл ТекущийЭлементНоменклатуры = Выборка[НомерКолонки]; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; Иначе Сообщить(ТекущийЭлементНоменклатуры); КонецЕсли; КонецЦикла; Если ТекущийЭлементНоменклатуры = Справочники.Номенклатура.ПустаяСсылка() Тогда Прервать; КонецЕсли; КонецЦикла; http://its.1c.ru/db/metod8dev/content/2659/hdoc/_top/%E2%F1%E5%20%F0%EE%E4%E8%F2%E5%EB%E8%20%F1%EF%F0%E0%E2%EE%F7%ED%E8%EA |
|||
34
DDwe
23.08.16
✎
11:10
|
(33) Еще один? Там 77
|
|||
35
Горогуля
23.08.16
✎
11:10
|
(30) а сам?
|
|||
36
Рэйв
23.08.16
✎
11:11
|
вот вы мозг загадили тс
:-)) |
|||
37
DDwe
23.08.16
✎
11:12
|
(36) Было, что загаживать?
|
|||
38
Это_mike
23.08.16
✎
11:12
|
(36) был бы мозг - не было б таких вопросов...
|
|||
39
Рэйв
23.08.16
✎
11:14
|
(37)(38)Ну ладно, пусть переваривает:-)...Посмотрим что скажет
|
|||
40
Горогуля
23.08.16
✎
11:14
|
(37) (38) спинной
|
|||
41
Ёпрст
23.08.16
✎
11:15
|
(30) самый верхний ?
Тогда так: ВерхнийРодитель=ЗначениеИзСтрокиВнутр(Шаблон("[ЗначениеВСтрокуВнутр(Спр"+СтрЗаменить(Формат("","С"+(Спр.Уровень()-1))," ",".Родитель")+")]")); ©РупорАбсурда или так: род=ТекущийЭлемент(); Пока род.Родитель.Выбран()=1 цикл Род=Род.Родитель; КонецЦикла; сообщить(Род.Наименование); |
|||
42
aka AMIGO
23.08.16
✎
11:15
|
(30) Ну, вот еще один способ:
ТвойЭлементСправочника.ПолноеНаименование(); А лучше-то - как в (3) псле чего разложить полученную строку в СЗ, и уж найти первый элемент по коду |
|||
43
silent person
23.08.16
✎
11:17
|
Процедура ПолучитьРодителя(ТекЭлемент)
Если ТекЭлемент.Уровень()>1 Тогда Сообщить(ТекЭлемент.Родитель); ПолучитьРодителя(ТекЭлемент.Родитель) КонецЕсли; КонецПроцедуры |
|||
44
aka AMIGO
23.08.16
✎
11:18
|
+42 А, надо всех родителей? Тогда по полученному СЗ найти по коду и вывести n-1 значений, кроме последнего.
|
|||
45
Ёпрст
23.08.16
✎
11:18
|
Надо уже новые ники подставлять, из прошлого:
(24)Nag: А как получить полное дерево? :) (25)Рупор абсурда :(24) Тут много таких ..., но самые полные, по-моему, это СаШка и Алекс_Парен ... |
|||
46
kostya_77
23.08.16
✎
11:21
|
всем спасибо - разобрался
|
|||
47
Злопчинский
23.08.16
✎
11:22
|
Аллилуйя!
|
|||
48
Это_mike
23.08.16
✎
11:23
|
(45) помню...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |