Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Есть у кого нибудь пример использования Дерева+Таблица для построения отчет (число прочтений - 1521 )
DmSk
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Барнаул
Зарегистрирован: 28. Марта 2008
Пол: Мужской
Есть у кого нибудь пример использования Дерева+Таблица для построения отчет
21. Октября 2008 :: 03:05
Печать  
Есть у кого нибудь пример использования Дерева+Таблица для построения отчета ? скажем получив результат запроса с WITH ROLLUP , загнать в ТЗ + Дерево ?
  
Наверх
 
IP записан
 
varelchik
God Member
*****
Отсутствует


I Love YaBB 2!

Сообщений: 788
Зарегистрирован: 22. Мая 2006
Re: Есть у кого нибудь пример использования Дерева+Таблица для построения отчет
Ответ #1 - 21. Октября 2008 :: 11:37
Печать  
Делай проще
используй ИТЗ
Код
Выбрать все
Перем Дерево;
Перем Структура;
//*******************************************
Процедура Сформировать()
	Текст="
	|select
	|Остатки.Склад [Склад $Спр],
	|Остатки.ДатаВозврата ДатаВозврата,
	|Остатки.ПрихДок [ПрихДок $Док],
	|Остатки.Заказчик [Заказчик $Спр.Сотрудники],
	|Остатки.Товар [Товар $Спр.ТМЦ],
	|Остатки.Остаток Остаток
	|from
	|(select
	|Рег.МестоХранения Склад,
	|$Прих.ДатаВозврата ДатаВозврата,
	|Рег.Товар Товар,
	|Рег.ПрихДокумент ПрихДок,
	|$Строки.Заказчик Заказчик,
	|Рег.ОстатокТовараОстаток Остаток
	|from ихДокумент),ОстатокТовара) Рег
	|inner join $Документ.Т_ПриходнаяНакладнаяУпр Прих (nolock) on Прих.iddoc=right(Рег.ПрихДокумент,9)
	|inner join $ДокументСтроки.Т_ПриходнаяНакладнаяУпр Строки (nolock) on Строки.iddoc=right(Рег.ПрихДокумент,9) and $Строки.Товар=Рег.Товар
	|union all
	|select
	|Рег1.МестоХранения Склад,
	|$Прих1.ДатаВозврата ДатаВозврата,
	|Рег1.Товар Товар,
	|Рег1.ПрихДокумент ПрихДок,
	|$Строки1.Заказчик Заказчик,
	|Рег1.ОстатокТовараОстаток Остаток
	|from ихДокумент),ОстатокТовара) Рег1
	|inner join $Документ.Т_ПриходнаяНакладная Прих1 (nolock) on Прих1.iddoc=right(Рег1.ПрихДокумент,9)
	|inner join $ДокументСтроки.Т_ПриходнаяНакладная Строки1 (nolock) on Строки1.iddoc=right(Рег1.ПрихДокумент,9) and $Строки1.Товар=Рег1.Товар
	|) Остатки
	|where
	|convert(char(10),Остатки.ДатаВозврата,104)<>'01.01.1753'
	|and Остатки.ДатаВозврата <= cast(:ВыбДата as datetime)
	|";
	Запрос=глСоединение();
	Запрос.УстановитьТекстовыйПараметр("ВыбДата",ДатаКон);
	Запрос.УстановитьТекстовыйПараметр("ВыбФирма",ВыбФирма);
	ИТЗ=СоздатьОбъект("ИндексированнаяТаблица");
	Запрос.ВыполнитьИнструкцию(Текст,ИТЗ);
	ИТЗ.Группировать("Склад:Склад;ПрихДок:ПрихДок","Остаток",1);
	ИТЗ.ВыбратьСтроки();
	ТЗ_Дерево.УдалитьСтроки();
	Пока ИТЗ.ПолучитьСтроку() = 1 Цикл
		Склад=ИТЗ.Склад;
		ТЗ_Дерево.НоваяСтрока();
		ТЗ_Дерево.Имя=Склад;
		ТЗ_Дерево.Остаток=ИТЗ.Остаток;
		ТЗ_Дерево.Ветка=ЗначениеИзСтрокиВнутр(Структура);
		Если ИТЗ.НомерКолонки("тзПотомки")>0 Тогда
			лВетка=ТЗ_Дерево.Ветка;
			тзДоки=ИТЗ.тзПотомки;
			тзДоки.ВыбратьСтроки();
			Пока тзДоки.ПолучитьСтроку()=1 Цикл
				лВетка.НоваяСтрока();
				лВетка.Имя=тзДоки.ПрихДок;
				лВетка.ДатаВозврата=тзДоки.ДатаВозврата;
				лВетка.Ветка=ЗначениеИзСтрокиВнутр(Структура);
				Если тзДоки.НомерКолонки("тзПотомки")>0 Тогда
					тзТовары=тзДоки.тзПотомки;
					лВетка1=лВетка.Ветка;
					тзТовары.ВыбратьСтроки();
					Пока тзТовары.ПолучитьСтроку()=1 Цикл
						лВетка1.НоваяСтрока();
						лВетка1.Имя=тзТовары.Товар;
					КонецЦикла;
				КонецЕсли;
			КонецЦикла;
		КонецЕсли;
	КонецЦикла;
	Дерево.ОбновитьДерево();
КонецПроцедуры

Процедура ПослеОткрытия()
	Дерево=СоздатьОбъект("АтрибутФормы");
	Дерево.УстановитьАтрибут(Форма,"ТЗ_Дерево");
	Дерево.ПерехватитьТаблицуЗначений();
КонецПроцедуры	// ПослеОткрытия

Процедура ПриОткрытии()
	ТЗ_Дерево.НоваяКолонка("Ветка");
	ТЗ_Дерево.НоваяКолонка("Значек");
	ТЗ_Дерево.НоваяКолонка("Имя");
	ТЗ_Дерево.НоваяКолонка("ДатаВозврата","Дата",,,,10);
	ТЗ_Дерево.НоваяКолонка("Остаток","Число",19,3,,10);
	Структура=ЗначениеВСтрокуВнутр(ТЗ_Дерево);
КонецПроцедуры	// ПриОткрытии

ДатаКон=ПолучитьДатуТА();
 


делел на скорую руку без рекусии.
ну думаю сам дальше разберешся
  
Наверх
 
IP записан
 
DmSk
Junior Member
**
Отсутствует



Сообщений: 56
Местоположение: Барнаул
Зарегистрирован: 28. Марта 2008
Пол: Мужской
Re: Есть у кого нибудь пример использования Дерева+Таблица для построения отчет
Ответ #2 - 22. Октября 2008 :: 01:36
Печать  
Спасибо
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать