Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Новичок в индексированной таблице (число прочтений - 1446 )
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Новичок в индексированной таблице
20. Октября 2011 :: 07:59
Печать  
Есть вот такой код
Код
Выбрать все
итТаблицаЗапроса = СоздатьОбъект("ИндексированнаяТаблица");
	итТаблицаЗапроса.ЗагрузитьЗапрос(Запрос);
	итТаблицаЗапроса.НоваяКолонка("Маршрут");
	ЗаполнитьТаблицуМаршрутами(итТаблицаЗапроса);
	СтрокаГруппировок = "Маршрут:Маршрут";
	тзГруппировки.ВыбратьСтроки();
	Пока тзГруппировки.ПолучитьСтроку() = 1 Цикл
		Если тзГруппировки.Пометка = 2 Тогда
			Если тзГруппировки.Значение = "Документ" Тогда
				СтрокаГруппировок = ";Тек" + тзГруппировки.Значение + ":Тек" + тзГруппировки.Значение;
			Иначе
				СтрокаГруппировок = ";" + тзГруппировки.Значение + ":" + тзГруппировки.Значение;
			КонецЕсли;
		КонецЕсли;
	КонецЦикла;
	с",1);
	ВывестиРекурсивно(Таблица,итТаблицаЗапроса,сзГруппировки,1);
 



Строка группировок получается следующего вида:

СтрокаГруппировок = "Маршрут:маршрут;Контрагент:Контрагент;ТекДокумент:ТекДокумент"

Реализация функции такая:
Код
Выбрать все
Процедура ВывестиРекурсивно(Таблица,ИТЗапроса,сзГруппировки,Индекс)
	Перем пПерваяСтрока,пПоследняяСтрока;

	пПерваяСтрока = 0;
	пПоследняяСтрока = 0;

	ЭлементСписка = ?(сзГруппировки.ПолучитьЗначение(Индекс) = "Документ","ТекДокумент",сзГруппировки.ПолучитьЗначение(Индекс));
	ИТЗапроса.ВыбратьСтроки();
	Пока ИТЗапроса.ПолучитьСтроку() = 1 Цикл
		Группировка = ИТЗапроса.ПолучитьЗначение(,сзГруппировки.ПолучитьЗначение(Индекс));
		Таблица.ВывестиСекцию("Группировка" + Индекс +"|Основная");
		Сумма = ИТЗапроса.ИтогСумма;
		Таблица.ПрисоединитьСекцию("Группировка" + Индекс +"|Сумма");
		Если ПустоеЗначение(ИТЗапроса.тзПотомки) = 0 Тогда
			Индекс = Индекс + 1;
			ВывестиРекурсивно(Таблица,ИТЗапроса.тзПотомки,сзГруппировки,Индекс);
		КонецЕсли;
	КонецЦикла;
КонецПроцедуры
 


при реализации рекурсивного вывода пишет ошибку!

Цитата:
Если ПустоеЗначение(ИТЗапроса.тзПотомки) = 0 Тогда
{C:\DOCUMENTS AND SETTINGS\АДМИНИСТРАТОР\РАБОЧИЙ СТОЛ\РЕЕСТР НАКЛАДНЫХ ПО МАРШРУТАМ.ERT(681)}: Поле агрегатного объекта не обнаружено (тзПотомки)
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Новичок в индексированной таблице
Ответ #1 - 20. Октября 2011 :: 08:02
Печать  
Как вообще он группирует таблицу?
или мне тзПотомки Самому группировать?
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Новичок в индексированной таблице
Ответ #2 - 20. Октября 2011 :: 08:13
Печать  
первый раз условие проходит нормально.
Получается, что я группирую таблицу дальше вывожу первый уровень, перехожу в тзПотомки и снова ее группирую??
  
Наверх
 
IP записан
 
mozer
Senior Member
****
Отсутствует


1C++ rocks!

Сообщений: 324
Местоположение: Пермь
Зарегистрирован: 14. Января 2011
Пол: Мужской
Re: Новичок в индексированной таблице
Ответ #3 - 20. Октября 2011 :: 08:23
Печать  
Спасибо все разобрался Вопрос снят!
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать