Имя: Пароль:
1C
1C 7.7
v7: 1С++ Индексированная таблица, метод Группировать тормозит
0 Холст
 
03.06.14
12:17
1С++ версия 3.2.2.0, ось винда 2008, размер исходной ТЗ 978строк
группировка идет по 2м показателям, на выходе после группировки почти столько же строк  

кусок кода
ТЗинд = СоздатьОбъект("ИндексированнаяТаблица");
ТЗинд.Загрузить(ТЗ);
ТЗинд.Группировать(СтрГруппировокИнд, СтрРесурсы, 0);

почему-то группировка выполняется секунд 10 на таких мелких данных
в чем может быть затык ? и как ускорить группировку ?
1 Холст
 
03.06.14
12:19
кажись индекс надо добавить как то
2 dk
 
03.06.14
12:25
покажи что в СтрГруппировокИнд
там если ссылки то надо * добавлять, иначе по наименованию будет долго группировать
3 Холст
 
03.06.14
12:25
хотя, возможно при групировке и не требуется добавлять индекс ?
4 Холст
 
03.06.14
12:26
(2) понял, подставлю * там где группировка по справочникам/документам
5 Холст
 
03.06.14
12:34
подставил * в индексное выражение без разбора на тип колонки и стало летать, спасибо
6 ADirks
 
03.06.14
13:10
все подставляют магическую *  и радуются, хотя и не понимают что произошло :)
колдунство процветает во все века!
7 Холст
 
03.06.14
13:20
(6)
1. без * алгоритм процедуры Группировать для каждой ячейки формирует представление, потом только группирует по похожести, отсюда и лишнее время, правильно понял ?
2. получается, если не ставить *, то 2 разных элемента справочника с одинаковым наименованием будут для алгоритма как 1 элемент и это приведет к неверной группировке, так ?
8 ildary
 
03.06.14
13:35
(6) низкий поклон главному колдуну, подарившему нам ИТЗ.
9 ADirks
 
03.06.14
13:35
(7)
1. да, и самое главное - для этого 1С для каждого элемента лезет в БД.
2. нет, это только в 1С такие глюки не исправляют. Мы исправили :)
10 Холст
 
03.06.14
14:16
(9) спасибо, что подарили 1С++ 7чникам
11 Salimbek
 
04.06.14
08:59
(5) А если вдруг начнешь большими выборками работать, то желательно будет в запрос с данными вытащить еще и поле "<ИмяКолонкиСправочника>_Родитель", т.к.:
> Если в таблице есть колонка с именем
> '<ИмяКолонкиСправочника>_Родитель', то родитель для элемента будет браться
> из этой колонки - это уменьшает количество обращений к базе,
> и заметно увеличивает производительность.
Пользователь не знает, чего он хочет, пока не увидит то, что он получил. Эдвард Йодан