Гость
Форумы / [игнор отключен] [закрыт для гостей] / Доброго времени суток, вопрос по обходу дерева значений / 10 сообщений из 10, страница 1 из 1
12.08.2013, 11:38
    #38362873
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
Здравствуйте ситуация следующая, есть дерево значений, многоуровневое дерево т.е. сказать точно сколько в дерево уровней невозможно, нужна следующая помощь либо подсказка куда рыть, нужно все это дерево обойти циклом, цикл тоже не простой он как бы проверяет сам себя, т.е. если в строке встречается спецификация то добавляем уровень если же нет то просто продолжаем добавлять строки. основная сложность с которой я столкнулся это как обойти полностью все дерево с неизвестным количеством уровней.

каждый правит свой жизнью сам, и не ной что она у тебя хуже чем у других, она всегда такой будет.!
...
Рейтинг: 0 / 0
12.08.2013, 12:04
    #38362904
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
Титов,
как любое другое дерево - рекурсией
...
Рейтинг: 0 / 0
12.08.2013, 13:04
    #38363018
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
это-то я понял, но вот в чем загвоздка как заставить цикл зацикливаться в самом себе

мой код

Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
СтрокаПребора = ДеревоСвободныхОстатков.Строки;
	Для Каждого СтрокаТч из СтрокаПребора Цикл 
		ДобавимСтроку = СтрокаТч;
		Если СтрокаТч.Спецификация <> NULL Тогда 
			СтруктураДанных = РазузлованиеНоменклатуры(СтрокаТч); 			 
			Для Каждого СтрокаСтруктуры из СтруктураДанных Цикл  
				НоваяСтрока2 = ДобавимСтроку.Строки.Добавить();
				НоваяСтрока2.Наименование = СтрокаСтруктуры.Наименование;
				НоваяСтрока2.Артикул = СтрокаСтруктуры.Наименование.Артикул;
				НоваяСтрока2.СерияНоменклатуры = СтрокаСтруктуры.СерияНоменклатуры; 
				НоваяСтрока2.Количество = СтрокаСтруктуры.Количество;
				НоваяСтрока2.ЕденицаИзм = СтрокаСтруктуры.Наименование.ЕдиницаХраненияОстатков;      
				Если НоваяСтрока.Наименование.ВидВоспроизводства  = Перечисления.ВидыВоспроизводстваНоменклатуры.Закупка Тогда 
					 Структура = ПолучениеДокументаПоставки(СтрокаСтруктуры);
					 НоваяСтрока2.ДатаПроизводстваПоставки = Структура.ДатаПоставки;
					 НоваяСтрока2.ДокументРегистратор = Структура.Документ;
				ИначеЕсли НоваяСтрока.Наименование.ВидВоспроизводства  = Перечисления.ВидыВоспроизводстваНоменклатуры.Переработка Тогда 
					
				Иначе 
					НоваяСтрока2.ДатаПроизводстваПоставки = СтрокаСтруктуры.ДатаПроизводстваПоставки;
					НоваяСтрока2.ДокументРегистратор = СтрокаСтруктуры.ДокументРегистратор; 				
					НоваяСтрока2.Спецификация = СтрокаСтруктуры.Спецификация;
				КонецЕсли;
			КонецЦикла;				
		КонецЕсли;
		ЭлементыФормы.ДеревоСвободныхОстатков.СоздатьКолонки();
		СтрокаПребора = СтрокаПребора[0].Строки;
		//СтрокаТч = Неопределено;
	КонецЦикла; 	 
...
Рейтинг: 0 / 0
12.08.2013, 13:07
    #38363027
javapecker
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
Титов,это-то я понялчто-то непохоже
...
Рейтинг: 0 / 0
12.08.2013, 13:25
    #38363074
Программист 1с
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
Пример обхода цикла написан в книжке 1с - там где куча разных процедур и прочего для программирования.
...
Рейтинг: 0 / 0
12.08.2013, 13:29
    #38363080
Титов
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
переделал по сути рекурсия получилась появился другой вопрос... но это уже сам разберу спасибо!))
...
Рейтинг: 0 / 0
12.08.2013, 14:47
    #38363249
sWinTyz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
Код: plaintext
как любое другое дерево - рекурсией 

на кол ...
...
Рейтинг: 0 / 0
12.08.2013, 15:20
    #38363348
Последний выдох ГПЖ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
чтобы познать рекурсию - надо познать рекурсию
...
Рейтинг: 0 / 0
12.08.2013, 15:32
    #38363378
HoBTID
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
pailкак любое другое дерево - рекурсией
А любую рекурсию, можно заменить на использование стека.
Ну а стек удобно сделать, например из таблицы значений, хотя можно и из списка значений, и из массива.
...
Рейтинг: 0 / 0
12.08.2013, 16:17
    #38363483
pail
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Доброго времени суток, вопрос по обходу дерева значений
HoBTIDpailкак любое другое дерево - рекурсией
А любую рекурсию, можно заменить на использование стека.
Ну а стек удобно сделать, например из таблицы значений, хотя можно и из списка значений, и из массива.
Рекурсия уже использует стек - стек вызовов подпрограмм. Если глубины последнего не хватает - да,можно использовать внешний стек, через таблицу значений, например. А пока хватает - зачем усложнять?
...
Рейтинг: 0 / 0
Форумы / [игнор отключен] [закрыт для гостей] / Доброго времени суток, вопрос по обходу дерева значений / 10 сообщений из 10, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]