powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Помогите применить рекурсию
3 сообщений из 3, страница 1 из 1
Помогите применить рекурсию
    #38123444
tashka2505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые форумчане!

Помогите, пожалуйста, переписать процедуру, в которой используются циклы, с применением рекурсии.

Процедура ИзучениеВыборкиРезультатаЗапроса() Экспорт
Запрос = Новый Запрос();
Запрос.Текст =
" ВЫБРАТЬ
| Период,
| Контрагент,
| Менеджер,
| Номенклатура,
| СуммаОборот
|Из
| РегистрНакопления.Продажи.Обороты(, , Месяц)";
РезультатЗапроса = Запрос.Выполнить();
ВыборкаПериод = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ИнициализироватьТаблицуИлиДерево(РезультатЗапроса, Дерево);
Пока ВыборкаПериод.Следующий() Цикл
СтрокаИтогПоПериоду = Дерево.Строки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаИтогПоПериоду, ВыборкаПериод);
ВызовыМетодовВыборки(СтрокаИтогПоПериоду, ВыборкаПериод);
ВыборкаКонтрагент = ВыборкаПериод.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаКонтрагент.Следующий() Цикл
СтрокаИтогПоКонтрагенту = СтрокаИтогПоПериоду.Строки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаИтогПоКонтрагенту, ВыборкаКонтрагент);
ВызовыМетодовВыборки(СтрокаИтогПоКонтрагенту, ВыборкаКонтрагент);
ВыборкаМенеджер = ВыборкаКонтрагент.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаМенеджер.Следующий() Цикл
СтрокаИтогПоМенеджеру = СтрокаИтогПоКонтрагенту.Строки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаИтогПоМенеджеру, ВыборкаМенеджер);
ВызовыМетодовВыборки(СтрокаИтогПоМенеджеру, ВыборкаМенеджер);
ВыборкаНоменклатура = ВыборкаМенеджер.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
Пока ВыборкаНоменклатура.Следующий() Цикл
СтрокаИтогПоНоменклатуре = СтрокаИтогПоМенеджеру.Строки.Добавить();
ЗаполнитьЗначенияСвойств(СтрокаИтогПоНоменклатуре, ВыборкаНоменклатура);
ВызовыМетодовВыборки(СтрокаИтогПоНоменклатуре, ВыборкаНоменклатура);
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецЦикла;
КонецПроцедуры

Процедура ВызовыМетодовВыборки(СтрокаДерева, Выборка)
СтрокаДерева.Группировка = Выборка.Группировка();
СтрокаДерева.ТипЗаписи = Выборка.ТипЗаписи();
СтрокаДерева.Уровень = Выборка.Уровень();
КонецПроцедуры

Заранее всем спасибо!
...
Рейтинг: 0 / 0
Помогите применить рекурсию
    #38123475
tashka2505
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вот для удобства во вложении файл с программой, а то здесь не наглядно отображается код.
...
Рейтинг: 0 / 0
Помогите применить рекурсию
    #38124176
AHDP
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: html
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.
30.
31.
32.
33.
34.
35.
36.
Процедура ОбходВыборки(РезультатЗапроса, Дерево)
    Выборка = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
	Пока Выборка.Следующий() Цикл
	    СтрокаИтог = Дерево.Строки.Добавить();
		ЗаполнитьЗначенияСвойств(СтрокаИтог, Выборка);
		ВызовыМетодовВыборки(СтрокаИтог, Выборка);
		
		ОбходВыборки(Выборка, СтрокаИтог);
    КонецЦикла;
КонецПроцедуры
 


Процедура ИзучениеВыборкиРезультатаЗапроса() Экспорт
	Запрос = Новый Запрос();
	Запрос.Текст =
	"ВЫБРАТЬ
	|	 	Период,
	| 		Контрагент,
	| 		Менеджер,
	| 		Номенклатура,
	| 		СуммаОборот
	|	Из
	| 		РегистрНакопления.Продажи.Обороты(, , Месяц)";
	РезультатЗапроса = Запрос.Выполнить();
	ИнициализироватьТаблицуИлиДерево(РезультатЗапроса, Дерево);
	
	ОбходВыборки(РезультатЗапроса, Дерево);
	
КонецПроцедуры

Процедура ВызовыМетодовВыборки(СтрокаДерева, Выборка)
	СтрокаДерева.Группировка = Выборка.Группировка();
	СтрокаДерева.ТипЗаписи = Выборка.ТипЗаписи();
	СтрокаДерева.Уровень = Выборка.Уровень();
КонецПроцедуры
...
Рейтинг: 0 / 0
3 сообщений из 3, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Помогите применить рекурсию
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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