Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / [игнор отключен] [закрыт для гостей] / Иерархический отчет из таблицы значений. / 6 сообщений из 6, страница 1 из 1
18.04.2012, 16:51
    #37759461
mavksalisova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический отчет из таблицы значений.
Не подскажете, пож., пример создания иерархического отчета из таблицы значений. Количество уровней(группировок) переменное .
...
Рейтинг: 0 / 0
18.04.2012, 17:28
    #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
18.04.2012, 19:31
    #37759831
mavksalisova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический отчет из таблицы значений.
Извините, забыла указать, что работаю в 1С 7.7 .
...
Рейтинг: 0 / 0
19.04.2012, 08:56
    #37760373
DmitriyZ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический отчет из таблицы значений.
mavksalisovaИзвините, забыла указать, что работаю в 1С 7.7 . тогда свертка, сортировка, обход в цикле с выводом в таблицу.
...
Рейтинг: 0 / 0
19.04.2012, 18:53
    #37761762
mavksalisova
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Иерархический отчет из таблицы значений.
DmitriyZmavksalisovaИзвините, забыла указать, что работаю в 1С 7.7 . тогда свертка, сортировка, обход в цикле с выводом в таблицу.
Это понятно,спасибо...еще хотелось бы рекурсию использовать, т.к.количество группировок переменное.

Может просто у кого-то найдется подобный кусочек кода посмотреть? :)
...
Рейтинг: 0 / 0
06.05.2012, 00:05
    #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]