Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Итог в ИТЗ по группе и другому измерению (число прочтений - 2581 )
Warlock
YaBB Newbies
*
Отсутствует


Пользуюсь 1cpp!

Сообщений: 13
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Итог в ИТЗ по группе и другому измерению
24. Сентября 2006 :: 21:36
Печать  
Например, есть ИндексированнаяТаблица с колонками ИерархическийСправочник, ДополнительныйСправочник, Сумма. Если сделать
[code]ИТЗ.Группировать("ИерархическийСправочник:&ИерархическийСправочник; ДополнительныйСправочник:ДополнительныйСправочник","Сумма");[/code]
то можно получать итоги суммы по элементам и группам иерархического справочника, комбинации элементов иерархического справочника и элементам доп. справочника. А как получить итог по комбинации группа иерархического справоника/элемент доп.справочника?
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Итог в ИТЗ по группе и другому измерению
Ответ #1 - 25. Сентября 2006 :: 03:11
Печать  
Не вполне понял вопрос, но возможно так:
ИТЗ.Группировать("ИерархическийСправочник:&ИерархическийСправочник, ДополнительныйСправочник","Сумма");
?
  
Наверх
 
IP записан
 
Warlock
YaBB Newbies
*
Отсутствует


Пользуюсь 1cpp!

Сообщений: 13
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Итог в ИТЗ по группе и другому измерению
Ответ #2 - 25. Сентября 2006 :: 04:29
Печать  
По задаче: иерархический справочник - это группировка по строкам, а дополнительный - столбцы.
[table]
[tr][td]Иерарх. спр.[/td][td]Доп.спр.1[/td][td]Доп.спр.2[/td][td]Доп.спр.3[/td][/tr]
[tr][td]Группа 1[/td][td]20[/td][td]10[/td][td]30[/td][/tr]
[tr][td]  Элемент 1[/td][td]10[/td][td]5[/td][td]10[/td][/tr]
[tr][td]  Элемент 2[/td][td]10[/td][td]5[/td][td]20[/td][/tr]
[tr][td]Группа 2[/td][td]50[/td][td]35[/td][td]15[/td][/tr]
[tr][td]  Элемент 3[/td][td]50[/td][td]35[/td][td]15[/td][/tr]
[/table]
Проблема в суммах на пересечении, например, Группы1 и Доп.Спр.1

По предыдущему посту: Идея интересная, но не получилось. Пересечения элементов посчитаны, а по группам только общие итоги(без разворота по доп. справочнику)

P.S. Если бы как-то получить эти суммы методом, похожим на ИтогПоДиапазону - было бы отлично.
  
Наверх
ICQ  
IP записан
 
ADirks
1c++ developer
1c++ moderator
Отсутствует


А нужны ли мы нам?

Сообщений: 692
Местоположение: Новосибирск
Зарегистрирован: 22. Мая 2006
Пол: Мужской
Re: Итог в ИТЗ по группе и другому измерению
Ответ #3 - 25. Сентября 2006 :: 06:06
Печать  
Напрямую не выйдет. Группировка, когда по группам справочника, начисто игнорирует все остальные колонки индекса.
И вообще, тормозная она, эта группировка...
Лучше замутить что-то типа
Код
Выбрать все
	РС = СоздатьОбъект("ODBCRecordSet");
	ТекстЗапроса = "
	|SELECT
	|	ID Эл,
	|	ParentID Родитель,
	|	1 Сумма
	|FROM
	|	$Справочник."+ИмяСправочника+"
	|WHERE IsFolder = 2
	|";
	итЭлементы = СоздатьОбъект("ИндексированнаяТаблица");
	РС.ВыполнитьИнструкцию(ТекстЗапроса, итЭлементы);


	КоличествоСтрок = итЭлементы.КоличествоСтрок();
	Старт = _GetPerformanceCounter();

	ТекстЗапроса = "
	|SELECT
	|	ID Группа,
	|	ParentID Родитель,
	|	0 Сумма
	|FROM
	|	$Справочник."+ИмяСправочника+"
	|WHERE IsFolder = 1
	|";
	итГруппы = СоздатьОбъект("ИндексированнаяТаблица");
	РС.ВыполнитьИнструкцию(ТекстЗапроса, итГруппы);
	итГруппы.ДобавитьИндекс("Группа", "Группа");

	итЭлементы.ВыбратьСтроки();
	Пока итЭлементы.ПолучитьСтроку() = 1 Цикл
		Сумма = итЭлементы.Сумма;
		Группа = итЭлементы.Родитель;
		Пока итГруппы.НайтиСтроку("Группа", Группа, 0, 1) > 0 Цикл
			итГруппы.Сумма = итГруппы.Сумма + Сумма;
			Группа = итГруппы.Родитель;
		КонецЦикла;
	КонецЦикла;
 


Только в твоём случае в итГруппы надо засунуть кросстаблицу Группы Х Вспом. справочник. Ну и вложенный цикл конечно вынести надо, это я просто тестировал разные способы подсчёта итогов.
  
Наверх
 
IP записан
 
Warlock
YaBB Newbies
*
Отсутствует


Пользуюсь 1cpp!

Сообщений: 13
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Итог в ИТЗ по группе и другому измерению
Ответ #4 - 25. Сентября 2006 :: 06:19
Печать  
Спасибо за ответ. К сожалению, такой подход не подойдет. Во-первых, у меня 5 уровней группировки, один из которых иерархический. Во-вторых, я обрабатываю данные результата бухгалтерского запроса.
Еще раз спасибо. Узнать от разработчика, что простого пути нету, тоже очень важно.
  
Наверх
ICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать