powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / [игнор отключен] [закрыт для гостей] / Иерархический отчет из таблицы значений.
6 сообщений из 6, страница 1 из 1
Иерархический отчет из таблицы значений.
    #37759461
mavksalisova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не подскажете, пож., пример создания иерархического отчета из таблицы значений. Количество уровней(группировок) переменное .
...
Рейтинг: 0 / 0
Иерархический отчет из таблицы значений.
    #37759578
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mavksalisova, а в чем проблема?
1)ТЗ можно использовать как источник в запросах (отчет ручками выводим).
2)Можно использовать как источник в построителе отчета подробнее здесь http://v8.1c.ru/metod/books/book.jsp?id=268
3)Можно использовать как источник в компоновке подробнее здесь http://v8.1c.ru/metod/books/book.jsp?id=132
...
Рейтинг: 0 / 0
Иерархический отчет из таблицы значений.
    #37759831
mavksalisova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Извините, забыла указать, что работаю в 1С 7.7 .
...
Рейтинг: 0 / 0
Иерархический отчет из таблицы значений.
    #37760373
DmitriyZ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mavksalisovaИзвините, забыла указать, что работаю в 1С 7.7 . тогда свертка, сортировка, обход в цикле с выводом в таблицу.
...
Рейтинг: 0 / 0
Иерархический отчет из таблицы значений.
    #37761762
mavksalisova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DmitriyZmavksalisovaИзвините, забыла указать, что работаю в 1С 7.7 . тогда свертка, сортировка, обход в цикле с выводом в таблицу.
Это понятно,спасибо...еще хотелось бы рекурсию использовать, т.к.количество группировок переменное.

Может просто у кого-то найдется подобный кусочек кода посмотреть? :)
...
Рейтинг: 0 / 0
Иерархический отчет из таблицы значений.
    #37784339
mavksalisova
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так и не нашла готового решения, поэтому писала сама.
Вот мой велосипед:

Код: vbnet
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.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
...
           Для х=1 По ТаблЗначений.КоличествоСтрок() Цикл
		ВыводТаблицыЗначений(ТаблЗначений,х,1,Таб);     
	КонецЦикла; 
...
     Процедура ВыводТаблицыЗначений(ТабЗн,НомерСтрокиТабЗн,Уровень,ТаблицаПечати)  
	КвоПоказателей = 2;
	КвоУровней = ТабЗн.КоличествоКолонок()-КвоПоказателей; 
	ЗначениеГруппировки = ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн,Уровень);  
	СтоимостьМаксВлож = ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн,КвоУровней+2);
	ВесМаксВлож =  ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн,КвоУровней+1);
	Если Уровень < КвоУровней Тогда
		СтоимостьТек = Суммы.ПолучитьЗначение(Уровень)+СтоимостьМаксВлож;
		Суммы.Установитьзначение(Уровень,СтоимостьТек);      
		ВесТек = Вес.ПолучитьЗначение(Уровень)+ВесМаксВлож;
		Вес.Установитьзначение(Уровень,ВесТек);
	КонецЕсли;
	Если Уровень = КвоУровней Тогда 
		ТаблицаПечати.ВывестиСекцию("УровеньМаксВложенности");
		Возврат;
	КонецЕсли; 
	
	Если НомерСтрокиТабЗн=1 Тогда
		ЗначениеГруппировкиПредыдущее = "";
	Иначе
		ЗначениеГруппировкиПредыдущее = ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн-1,Уровень);
	КонецЕсли;
	Если ЗначениеГруппировки = ЗначениеГруппировкиПредыдущее Тогда
		Если Уровень>1 Тогда 
			Для у=Уровень-1 По 1 Цикл
				ЗначениеГруппировкиВысшегоУр = ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн,у);  
				Если НомерСтрокиТабЗн=1 Тогда   
					ЗначениеГруппировкиПредыдущееВысшегоУр = "";
				Иначе
					ЗначениеГруппировкиПредыдущееВысшегоУр = ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн-1,у);  
				КонецЕсли;
				Если  ЗначениеГруппировкиВысшегоУр<> ЗначениеГруппировкиПредыдущееВысшегоУр Тогда
					ТаблицаПечати.ВывестиСекцию("Уровень"+Уровень);       
					Прервать;
				КонецЕсли;
			КонецЦикла; 
		КонецЕсли;
		ВыводТаблицыЗначений(ТабЗн,НомерСтрокиТабЗн,Уровень+1,ТаблицаПечати);
	Иначе
		ТаблицаПечати.ВывестиСекцию("Уровень"+Уровень);
		ВыводТаблицыЗначений(ТабЗн,НомерСтрокиТабЗн,Уровень+1,ТаблицаПечати);
	КонецЕсли;	
	Если НомерСтрокиТабЗн=ТабЗн.Количествострок() Тогда
		ЗначениеГруппировкиСледующее = "";
	Иначе
		ЗначениеГруппировкиСледующее = ТабЗн.ПолучитьЗначение(НомерСтрокиТабЗн+1,Уровень);
	КонецЕсли;
	Если ЗначениеГруппировкиСледующее <> ЗначениеГруппировки Тогда 
		ТаблицаПечати.ВывестиСекцию("Итоги"); 
		ВесТек =0;
		СтоимостьТек =0;  
		Суммы.Установитьзначение(Уровень,0);
		Вес.Установитьзначение(Уровень,0);
	КонецЕсли;
КонецПроцедуры   



Может кому пригодится или кто меня поправит :)
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / [игнор отключен] [закрыт для гостей] / Иерархический отчет из таблицы значений.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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