Переключение на Главную Страницу Страницы: [1] 2 3  ОтправитьПечать
Очень популярная тема (более 25 ответов) Группировка с иерархией в индексируемой таблице (число прочтений - 8653 )
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Группировка с иерархией в индексируемой таблице
18. Октября 2011 :: 06:05
Печать  
Если группировать с иерархией, то дублируются строки в результате.
Если в исходной таблице есть строка с группой справочника и с элементом, входящим в этц группу, то в результате будет 2 строки с этой группой - одна строка исходная и одна новая строка, добавленная при раскрутке иерархии.

это ошибка в компоненте или специально сделано?
почему при раскрутке иерархии не проверяется наличие добавляемой группы?
  
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Группировка с иерархией в индексируемой таблице
Ответ #1 - 18. Октября 2011 :: 06:35
Печать  
А почему у тебя в группируемой таблице присутствуют группы? И если ты и так получаешь группы, то зачем в дальнейшем еще раз группируешь? Т.е. если получаешь группы сам, тог получай, группируй и т.д. Если же хочешь группировать через ИТЗ, то создавай таблицу без групп и далее группируй. Если же тебе жизненно необходим твой вариант, то можешь описать задачу, как такая постановка задачи вообще возможна.
  
Наверх
ICQ  
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #2 - 18. Октября 2011 :: 06:42
Печать  
задача вроде простая Улыбка

допустим есть справочник:
ГР1
   Эл1
   ГР2
     Эл2

данные надо вывести, сгруппировав по группам элементов, но без самих элементов.

запрос имеет такой вид:

select
   s.paretnid as Группа
from
   $Справочник.тест as s
where
   s.is_folder=2

получим набор:
1 строка: ГР1
2 строка: ГР2

Делаем индТбл.Группировать("Гр: &Группа",...);

получаем в результате 2 строки.

в реальности, это отчет о продажах, в котором суммы продаж надо вывести по группам контрагентов. но без самих контрагентов. поэтому группировать по полю контрагент не могу.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Группировка с иерархией в индексируемой таблице
Ответ #3 - 18. Октября 2011 :: 07:27
Печать  
1. для этого примера группировать не надо в ИТ - ты уже и так получил все группы
2. для отчета анализ продаж - просто не выводи элементы в таблицу, при обходе группировки/цикла по ИТЗ ..
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #4 - 18. Октября 2011 :: 07:47
Печать  
Eprst писал(а) 18. Октября 2011 :: 07:27:
1. для этого примера группировать не надо в ИТ - ты уже и так получил все группы


пример показывает в какой ситуации появляются дубликаты.
на практике групп больше. и уровней вложенности больше. поэтому не группировать не прокатит.

Eprst писал(а) 18. Октября 2011 :: 07:27:
2. для отчета анализ продаж - просто не выводи элементы в таблицу, при обходе группировки/цикла по ИТЗ ..


опять же не получается, потому что после групп еще данные есть. это только одно из измерений.

хотелось бы услышать по существу, чем обосновано подобное поведение группировки. мое мнение - что это ошибка в компоненте. потому что появление дубликатов не красиво выглядет. и противоречит понятию "группировка".
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Группировка с иерархией в индексируемой таблице
Ответ #5 - 18. Октября 2011 :: 08:07
Печать  
Разговор слепого с глухим.
1. В конкретном приведенном примере зачем вообще в ИТЗ группировать ? У тебя на выходе и так только группы !

2. Не выводи элементы в ТАБЛИЦУ .. Что тут может быть непонятного ?

Цитата:
что это ошибка в компоненте.

Это ошибка в другом месте, пора что-то менять в консерватории.
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #6 - 18. Октября 2011 :: 08:14
Печать  
Eprst писал(а) 18. Октября 2011 :: 08:07:
Это ошибка в другом месте, пора что-то менять в консерватории.


я конечно понимаю, что богам не до проблем простых смертных..Улыбка
но всеже, попробую привести другой пример.
ГР1
   Эл1
   ГР2
     Эл2
   ГР3
     Эл3

хотелось бы получить в результате:
ГР1 ИтогПоГруппе
   Пусто ИтогПоГруппе
   ГР2 ИтогПоГруппе
   ГР3 ИтогПоГруппе

кроме того, может быть выведен список документов, после каждого итога:
ГР1 ИтогПоГруппе
   Пусто ИтогПоГруппе
     док1  сумма
   ГР2 ИтогПоГруппе
     док2  сумма
     док3  сумма
   ГР3 ИтогПоГруппе
     док4  сумма

сейчас все работает как надо, за исключением того, то на первом уровне 2 строки получается:

ГР1 ИтогПоГруппе
   Пусто ИтогПоГруппе
     док1  сумма
ГР1 ИтогПоГруппе
   ГР2 ИтогПоГруппе
     док2  сумма
     док3  сумма
   ГР3 ИтогПоГруппе
     док4  сумма


Думаю, что всебы сильно удивились, если бы GROUOP BY выдал бы такой результат.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Группировка с иерархией в индексируемой таблице
Ответ #7 - 18. Октября 2011 :: 08:26
Печать  
ёпт

Имеешь после запроса таблицу БЕЗ ГРУПП, далее ИТЗ.Группировать указываешь с группами - имеешь ВСЮ иерархию - и элементы и ГРУППЫ и итоги по группам.
Далее обходишь рекурсивно ИТЗ, в отчет не выводишь секцию, ежели это ЭЛЕМЕНТ. ВСЁ.

ЗЫ: по поводу Группировать , когда там уже есть группы, почитай всё же документацию,
http://www.1cpp.ru/docum/icpp/html/IndexedTable.html#group

подумай, в какой момент там иерархия добавляется + индекс по первой группе будет уже другой - он создан изначально - вот ты и видеть там всегда будешь "дубли"

ЗЫЫ: и никому в голову не приходило этим заниматься, если что
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #8 - 18. Октября 2011 :: 08:33
Печать  
Eprst писал(а) 18. Октября 2011 :: 08:26:
ёпт

т.е. это ошибка но признавать не хочется? А счего вдруг? вроде бы обычное дело. Или боги не косячат? Улыбка

предлагается как обойти проблему:

Eprst писал(а) 18. Октября 2011 :: 08:26:
Имеешь после запроса таблицу БЕЗ ГРУПП, далее ИТЗ.Группировать указываешь с группами - имеешь ВСЮ иерархию - и элементы и ГРУППЫ и итоги по группам.
Далее обходишь рекурсивно ИТЗ, в отчет не выводишь секцию, ежели это ЭЛЕМЕНТ. ВСЁ.


всебы хорошо, но проблема в том, что измерений в группировке может быть несколько. типа "Контрагент: &Клиент; Автор: Автор;..."
в этом случае все что после группировки по контрагенту не будет выведено. А если схитрить и пропустить уровень элементов, то появятся дубликаты на следующих уровнях, поскольку один автор может быть по нескольким клиентам.

так что эту засаду в группировке не обойти. хороший инструмент, особенно если подправить этот момент.
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Группировка с иерархией в индексируемой таблице
Ответ #9 - 18. Октября 2011 :: 08:38
Печать  
Какая ошибка ??? Ты документацию читать будешь или нет ?
Группировать - только для плоской таблицы
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Группировка с иерархией в индексируемой таблице
Ответ #10 - 18. Октября 2011 :: 08:39
Печать  
Цитата:
в этом случае все что после группировки по контрагенту не будет выведено.


Это с чего это не будет выведено ?!
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #11 - 18. Октября 2011 :: 08:40
Печать  
Eprst писал(а) 18. Октября 2011 :: 08:26:
ЗЫЫ: и никому в голову не приходило этим заниматься, если что


есть общеупотребительное понятие группировки. судя по описанию компоненты, подразумевается именно эта трактовка. использовать несколько группировок разрешено документаций. поэтому данное поведение компоненты некорректно.

тема была добавлена с целями:
1. понять, это ошибка или я что-то делаю не так.
2. может быть есть способы обойти.я не смог придумать для общего случая
3. если это ошибка, то донести ее до общественности. может исправят когда-нибудь.
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #12 - 18. Октября 2011 :: 08:41
Печать  
Eprst писал(а) 18. Октября 2011 :: 08:39:
Цитата:
в этом случае все что после группировки по контрагенту не будет выведено.


Это с чего это не будет выведено ?!


если пропускать строки с элементами, то тзПотомки не будет обработана. если же ее обрабатывать, то будут дубликаты на следующих уровнях. я же написал об этом.
  
Наверх
 
IP записан
 
spenov
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 119
Зарегистрирован: 18. Января 2008
Re: Группировка с иерархией в индексируемой таблице
Ответ #13 - 18. Октября 2011 :: 08:43
Печать  
Eprst писал(а) 18. Октября 2011 :: 08:38:
Какая ошибка ??? Ты документацию читать будешь или нет ?
Группировать - только для плоской таблицы


что есть плоская таблица?
в ней нельзя использовать в качестве значений группы? Улыбка

конкретно в приведенном примере поведение компоненты не соответствует представленному описанию. в чем я не прав?
  
Наверх
 
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: Группировка с иерархией в индексируемой таблице
Ответ #14 - 18. Октября 2011 :: 10:59
Печать  
spenov писал(а) 18. Октября 2011 :: 08:41:
если пропускать строки с элементами, то тзПотомки не будет обработана. если же ее обрабатывать, то будут дубликаты на следующих уровнях. я же написал об этом.


Ну чего за бред то пишешь ?
Почему не будет обработана ?!
Откуда там дубли вообще будут ?!



Цитата:
конкретно в приведенном примере поведение компоненты не соответствует представленному описанию. в чем я не прав?


В том, что ты не удосужился прочитать описание применяемого метода.
Там черным по белому написано - группирует по значению ключа.
А группы потом достраивает.
Вот он тебе в начале свернул, потом группы добавил - це же очевидные вещи.
Не нравится такой способ - пишите свой алгоритм с блекджеком и шлю..ми
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 3 
ОтправитьПечать