powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / [игнор отключен] [закрыт для гостей] / Доброго времени суток, вопрос по обходу дерева значений
10 сообщений из 10, страница 1 из 1
Доброго времени суток, вопрос по обходу дерева значений
    #38362873
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Здравствуйте ситуация следующая, есть дерево значений, многоуровневое дерево т.е. сказать точно сколько в дерево уровней невозможно, нужна следующая помощь либо подсказка куда рыть, нужно все это дерево обойти циклом, цикл тоже не простой он как бы проверяет сам себя, т.е. если в строке встречается спецификация то добавляем уровень если же нет то просто продолжаем добавлять строки. основная сложность с которой я столкнулся это как обойти полностью все дерево с неизвестным количеством уровней.

каждый правит свой жизнью сам, и не ной что она у тебя хуже чем у других, она всегда такой будет.!
...
Рейтинг: 0 / 0
Доброго времени суток, вопрос по обходу дерева значений
    #38362904
pail
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Титов,
как любое другое дерево - рекурсией
...
Рейтинг: 0 / 0
Доброго времени суток, вопрос по обходу дерева значений
    #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
Доброго времени суток, вопрос по обходу дерева значений
    #38363027
javapecker
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Титов,это-то я понялчто-то непохоже
...
Рейтинг: 0 / 0
Доброго времени суток, вопрос по обходу дерева значений
    #38363074
Программист 1с
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пример обхода цикла написан в книжке 1с - там где куча разных процедур и прочего для программирования.
...
Рейтинг: 0 / 0
Доброго времени суток, вопрос по обходу дерева значений
    #38363080
Титов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
переделал по сути рекурсия получилась появился другой вопрос... но это уже сам разберу спасибо!))
...
Рейтинг: 0 / 0
Доброго времени суток, вопрос по обходу дерева значений
    #38363249
sWinTyz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
как любое другое дерево - рекурсией 

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


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