|
рекурсия | ☑ | ||
---|---|---|---|---|
0
начинающий1спрог
06.07.12
✎
15:56
|
Как можно данную процедуру сделать рекурсивной? чтобы она в теле сама себя вызывала??
Процедура ПолучитьГруппыИерархически() Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Сообщить (выборка.Наименование); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
1
0_Serg_0
06.07.12
✎
15:57
|
Процедура ПолучитьГруппыИерархически()
Выборка = Справочники.Номенклатура.Выбрать(); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Сообщить (выборка.Наименование); ПолучитьГруппыИерархически() КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
2
Лефмихалыч
06.07.12
✎
15:58
|
(0) зачем тебе вечный цикл?
|
|||
3
Господин ПЖ
06.07.12
✎
15:58
|
накуа только...
|
|||
4
Любопытная
06.07.12
✎
15:58
|
(1) "Эта музыка будет вечной..." :)
И этот человек смеялся надо мной за удаление документов |
|||
5
Happy Bear
06.07.12
✎
15:58
|
(1) круто
|
|||
6
evorle145
06.07.12
✎
15:59
|
(0),лучше бы сначала написал, чего хочешь получить
|
|||
7
Rie
06.07.12
✎
15:59
|
(1) Типо пошутил?
(0) Создай процедуру с параметром (обзови его, к примеру, Выборка). Посмотри внимательно на параметры у Выбрать, в частности, на способ обхода. |
|||
8
0_Serg_0
06.07.12
✎
15:59
|
(4) мож у него типа вечного двигателя?!
|
|||
9
Fish
06.07.12
✎
15:59
|
(2) С рекурсией вечного цикла в 1С не получится. 1С-ка упадёт :)))
|
|||
10
Happy Bear
06.07.12
✎
15:59
|
+(5) хотя на поставленный вопрос ответил )))
|
|||
11
Rie
06.07.12
✎
16:00
|
Задача, кстати, вполне реальная. Просто человек её недоформулировал.
|
|||
12
Лефмихалыч
06.07.12
✎
16:00
|
(9) ну, какое-то время серверную она отапливать будет
|
|||
13
Asmody
06.07.12
✎
16:00
|
(1) я думаю, 1С упадёт через 1 секунду…
|
|||
14
Fish
06.07.12
✎
16:01
|
(12) Сейчас проверил. На 1801-м уровне падает :)))
|
|||
15
Любопытная
06.07.12
✎
16:01
|
А, кстати, мне тут советовали...
(0) Фотку! Я требую! :) |
|||
16
Rie
модератор
06.07.12
✎
16:02
|
Дамы и господа! Замечу, что начинающий1спрог попытался объяснить и задачу, и свою попытку её решить. Всё по правилам. Что криво спросил - так это по незнанию.
Посему - ближе к теме. |
|||
17
ks_83
06.07.12
✎
16:03
|
Процедура ПолучитьГруппыИерархически(Ссылко)
Сообщть(Ссылко); Если ЗнчниеЗаплнно(Ссылко.Родител) Тогды ПолучитьГруппыИерархически(Ссылко.Родител); КонецЕсли; КнцПрцдуры |
|||
18
Ненавижу 1С
гуру
06.07.12
✎
16:03
|
надеюсь в этой рекурсии не будет вызываться запрос?
|
|||
19
Asmody
06.07.12
✎
16:03
|
(16) только сама постановка задачи как-бэ намекает…
|
|||
20
Лефмихалыч
06.07.12
✎
16:03
|
(16) ты, если догадался, чего хочет автор, озвучь, не тяни кота за интригу
|
|||
21
Rie
06.07.12
✎
16:04
|
(20) Озвучил в (7). Если автору намёк не понятен - задаст дополнительный вопрос.
|
|||
22
Ненавижу 1С
гуру
06.07.12
✎
16:05
|
(21) автора вообще не видно
|
|||
23
Asmody
06.07.12
✎
16:05
|
(18) в этой рекурсии будет вызываться веб-сервис, который через com будет вызывать запрос, который будет вызывать рекурсию, которая будте вызывать веб-сервис, который…
|
|||
24
Rie
06.07.12
✎
16:05
|
(19) "Дата регистрации:
06.07.2012 сегодня " Что выросло - то выросло. |
|||
25
Ненавижу 1С
гуру
06.07.12
✎
16:06
|
(23) "запрос, который будет вызывать рекурсию"
вот ты немного нагнал )) |
|||
26
Nagaru
06.07.12
✎
16:06
|
(22) Может он увидел решение в (7) и теперь переписывает код
|
|||
27
Ненавижу 1С
гуру
06.07.12
✎
16:06
|
(26) лихорадочно
|
|||
28
Asmody
06.07.12
✎
16:07
|
(25) "возьмём диффузию и поставим в шкаф…" (из лабораторной работы по физике)
|
|||
29
Rie
06.07.12
✎
16:08
|
Процедура ПеребратьРекурсивно(Выборка)
Пока Выборка.Следующий() Цикл Если УраЭтоЛист(Выборка) Тогда ОбработатьЛист(Выборка); Иначе Подвыборка = Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); КонецЕсли; КонецЦикла; КонецПроцедуры // Автор, это оно? |
|||
30
hhhh
06.07.12
✎
16:09
|
может всё-таки
Выборка = Справочники.Номенклатура.ВыбратьИерархически(); ??? |
|||
31
Pro-tone
модератор
06.07.12
✎
16:11
|
(0) автор, сформулируй задачу для чего это надо. От этого надо плясать =)
|
|||
32
начинающий1спрог
06.07.12
✎
16:13
|
(31) я пляшу от того что задача моя натренировать навык использования рекурсий. никаких бесконечных циклов. просто чтобы перебрал справочник номенклатура рекурсивно и выбрал из него группы
|
|||
33
hhhh
06.07.12
✎
16:15
|
(32) если ты начинающий, то займись нормальным делом. Рекурсии тебе понадобятся лет через десять. Чего их тренировать?
|
|||
34
Mort
06.07.12
✎
16:18
|
(32) Начни с вычисления факторила.
ПыСы: Странно из всех предложенных вариантов, абсолютно все кромешный адъ. |
|||
35
Rie
06.07.12
✎
16:19
|
(32)
ВЫБРАТЬ Номенклатура.Ссылка КАК Группа ИЗ Справочники.Номенклатура КАК Номенклатура ГДЕ Номенклатура.ЭтоГруппа // не оно? |
|||
36
начинающий1спрог
06.07.12
✎
16:19
|
я начинающий. мой наставник дал задание :) ему скорее лучше знать что мне надо. говорит, мол, в конфигурировании, рекурсии это дело нужное.
(34) с факториалами всякими я натренировался, тут суть на деле испробовать |
|||
37
Rie
06.07.12
✎
16:20
|
(34) Факториал рекурсией? Ну, Вы, батенька, извращенец... :-)
|
|||
38
начинающий1спрог
06.07.12
✎
16:21
|
(35) запрос запросом, это понятно. надо бы рекурсию впихнуть без исп-я всяких запросов
|
|||
39
Rie
06.07.12
✎
16:21
|
(36) Рекурсия - дело нужное. Но любой инструмент нужен не просто так, а для чего-то. Помедитируй над этим.
|
|||
40
Адимр
06.07.12
✎
16:21
|
(32) в (0) имхо не лучший пример использования рекурсии.
|
|||
41
Reset
06.07.12
✎
16:21
|
(32) На
ПолучитьГруппыИерархически(); Процедура ПолучитьГруппыИерархически(Группа=Неопределено) Выборка=Справочники.Номенклатура.Выбрать(?(Группа=Неопределено,Справочники.Номенклатура.ПустаяСсылка(),Группа)); Пока Выборка.Следующий() Цикл Если Выборка.ЭтоГруппа Тогда Сообщить(Выборка.Наименование); ПолучитьГруппыИерархически(Выборка.Ссылка); КонецЕсли; КонецЦикла; КонецПроцедуры |
|||
42
Mort
06.07.12
✎
16:22
|
А со справочником - дам пару наводок (добр бобр ибо пьян)
- Нужно юзать параметр процедуры. Или глобальную переменную на худой конец. - Получать выборку нужно каждый раз не из всего справочника, а по полученному в параметре функции родителю. (37) Мне никогда в жизни не приходила задача вычислить факториал. Ваще никогда. Факториал как пример привел потому что это хрестоматийный пример, не более. ну вот, пока писал, выложили что-то похожее решение. |
|||
43
Ненавижу 1С
гуру
06.07.12
✎
16:22
|
Приведите достойный пример использования рекурсии
|
|||
44
Rie
06.07.12
✎
16:23
|
(38)
"Другой юноша нес свое: "Я нашел, как применить здесь нестирающиеся шины из полиструктурного волокна с вырожденными аминными связями и неполными кислородными группами. Но я не знаю пока, как использовать регенерирующий реактор на субтепловых нейтронах. Миша, Мишок! Как быть с реактором?" Присмотревшись к устройству, я без труда узнал велосипед." (А.Н.Стругацкий, Б.Н.Стругацкий, "Понедельник начинается в субботу") |
|||
45
Mort
06.07.12
✎
16:24
|
(43) Любая операция с однородным деревом, требующая анализа содержимого строк.
|
|||
46
начинающий1спрог
06.07.12
✎
16:24
|
(41) аллилуя! спасибо, заработало.
(39) бесспорно. буду тренировать навык всем спасибо) отличный форум |
|||
47
Адимр
06.07.12
✎
16:24
|
||||
48
Mort
06.07.12
✎
16:25
|
+(45) + Например установка значения трехпозиционного флажка в дереве.
|
|||
49
Reset
06.07.12
✎
16:25
|
(43) Деревья, особенно с произвольной "вложенностью" ?
|
|||
50
Ненавижу 1С
гуру
06.07.12
✎
16:26
|
(45)(49) а чем справочник не дерево?
|
|||
51
Pro-tone
модератор
06.07.12
✎
16:27
|
для (32) есть решение (35) без всякий рекурсий. Бесполезно изучать механизмы решения диффуров (дифференциальных уравнений) не имея знаний из области азов алгебры :)
|
|||
52
Mort
06.07.12
✎
16:29
|
(50) Ну дерево не обязательно справочник. А даже если и справочник. Сделай форму множественного выбора из иерархического справочника, только не простую, а чтобы галочками можно было отмечать элементы(ну как в дереве сравнения конфигурации) и группы (с простановкой подчиненных и обновления родительских).
|
|||
53
Pro-tone
модератор
06.07.12
✎
16:29
|
(45) Да, дерево значений рулит под рекурсии. Много очень гемора, но зато какая красивая реализация!
|
|||
54
Ненавижу 1С
гуру
06.07.12
✎
16:31
|
(51) но он же просто изучает РЕКУРСИЮ, а не то как эту задачу лучше решить
например доказать, что чило простых чисел бесконечно можно введя специальную топологию на натуральных числах, по идея - хрень ненужная в данном случае, но методически верная именно для изучения |
|||
55
Ненавижу 1С
гуру
06.07.12
✎
16:31
|
(52) что-то желания нет ))
|
|||
56
Pro-tone
модератор
06.07.12
✎
16:31
|
(43) помнишь 7.7 ? а помнишь как там настраиваемые группировки выводились в отчетах? ))
|
|||
57
Ненавижу 1С
гуру
06.07.12
✎
16:31
|
(56) эх времена...
|
|||
60
Mort
06.07.12
✎
16:32
|
(55) Я просто привел пример, что использование рекурсии не только для решения задач из учебника может понадобиться.
|
|||
61
Ненавижу 1С
гуру
06.07.12
✎
16:32
|
(60) согласен с тобой полностью, красивый пример
|
|||
62
Mort
06.07.12
✎
16:32
|
Кстати у Фомина в его книге про СИ это прекрасно рассказывается.
|
|||
63
Asmody
06.07.12
✎
16:33
|
сборы-разборы xml-ек каких-нибудь тоже красиво рекурсиями решается
|
|||
64
Mort
06.07.12
✎
16:34
|
+(62) В смысле вообще рекурсия и т.п. Про обход бинарного дерева, например. До сих пор помню Центр-Лево-Право, Лево- Центр - Право и т.д.
|
|||
65
Pro-tone
модератор
06.07.12
✎
16:34
|
+ (56) смотрю щас на все эти СКД, и думаю - никогда не понять тому, кто начал сразу с 8ки, что такое тяжкий кодерский труд в 1С
|
|||
66
Rie
06.07.12
✎
16:35
|
Рекурсия полезна, когда идёт речь о потенциально неограниченных запросах на память. Иначе она сводится к более другим циклам.
|
|||
67
Asmody
06.07.12
✎
16:35
|
(64) да почти все задачи на графах (а дерево есть частный случай графа) так или иначе можно свести к рекурсии
|
|||
68
Rie
06.07.12
✎
16:35
|
(67) Или к циклу + очередь/дерево/стек.
|
|||
69
Asmody
06.07.12
✎
16:36
|
(65) тяжкий кодерский труд был на фокспро и клиппере. 1С — это сказка
|
|||
70
Rie
06.07.12
✎
16:36
|
+(68) Зачастую задачи на графах даже лучше сводить к цикл + дек.
|
|||
71
Asmody
06.07.12
✎
16:37
|
(70) плавно создаём дубль Как в такой ситуации заменить рекурсию на стэк ??? ?
|
|||
73
начинающий1спрог
06.07.12
✎
16:51
|
(41)Может вопрос глупый, но пытаюсь разобраться, не пойму, что это за вопрос в методе
Выбрать(?(Группа=Неопределено,Справочники.Номенклатура.ПустаяСсылка(),Группа)); нигде не могу найти описание |
|||
74
Rie
06.07.12
✎
16:56
|
(73) Условное выражение.
|
|||
75
Ненавижу 1С
гуру
06.07.12
✎
16:59
|
(73)
? (вычислить выражение по условию) Синтаксис: ?(<Логическое выражение>, <Выражение 1>, <Выражение 2>) Параметры: <Логическое выражение> Логическое выражение, результат вычисления которого определяет одно из результирующих выражений, которые будут вычислены. Если результат его вычисления Истина, то будет вычисляться <Выражение 1>. Если результат Ложь – то <Выражение 2>. <Выражение 1> Результирующее выражение, которое будет вычисляться, если результат логического выражения Истина. <Выражение 2> Результирующее выражение, которое будет вычисляться, если результат логического выражения Ложь. Возвращаемое значение: Результат вычисления одного из результирующих выражений. Описание: Позволяет вычислить одно из двух заданных выражений в зависимости от результата вычисления логического выражения. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |