Переключение на Главную Страницу Страницы: [1] 2  ОтправитьПечать
Очень популярная тема (более 25 ответов) ИндексированнаяТаблица (число прочтений - 11981 )
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
ИндексированнаяТаблица
24. Января 2008 :: 12:52
Печать  
Не подскажете, где можно почитать про сий объект? В документации читал, но там пример с двумя группировками, если их больше, то совершенно непонятно, как с ними со всеми работатьПечаль.

Edit: эээм, прошу прощения. Скажу по-конкретней. Речь идет про метод "Группировать".
Edit: походу, всё равно фигню написал.

Итак, использую индексированную таблицу для обработки результатов запроса. В запросе 4 группировки. Собственно, не понятно, как получать выборки по разным группировкам? Если группировки две, то все понятно, если больше -  Нерешительный
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #1 - 24. Января 2008 :: 17:54
Печать  
"ИндСклад:Склад; ИндТовар:Товар; ИндДокумент:Документ"

Вот статейко:
http://infostart.ru/articles/193/
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ИндексированнаяТаблица
Ответ #2 - 24. Января 2008 :: 22:45
Печать  
Цитата:
"ИндСклад:Склад; ИндТовар:Товар; ИндДокумент:Документ"

Вот статейко:
http://infostart.ru/articles/193/


Небольшое уточнение
Лучше
"ИндСклад:*Склад; ИндТовар:*Товар; ИндДокумент:*Документ"
а то тормозить будет
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #3 - 25. Января 2008 :: 06:37
Печать  
kiruha писал(а) 24. Января 2008 :: 22:45:
Небольшое уточнение
Лучше
"ИндСклад:*Склад; ИндТовар:*Товар; ИндДокумент:*Документ"
а то тормозить будет

+1
Кирилл дело говорит. На моих задачах производительность возрастала раз в 20(!).
  
Наверх
 
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #4 - 25. Января 2008 :: 06:52
Печать  
+1.
Но нужно помнить, что в этом случае сортировка наверняка будет отличаться от ожидаемой Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #5 - 25. Января 2008 :: 07:10
Печать  
О, скока ответов сразу. Спасибо всем большое! Улыбка
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


Нам бы чего про ОдноЦэ...

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #6 - 25. Января 2008 :: 07:27
Печать  
Оппочки!
А где в доке про "*"?  Озадачен
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
artbear
1c++ developer
1c++ moderator
Отсутствует


Эх, дайте что-нибудь новенькое
да полезное потести

Сообщений: 6303
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #7 - 25. Января 2008 :: 07:56
Печать  
Цитата:
Оппочки!
А где в доке про "*"?  Озадачен

ИМХО везде Улыбка
там в нескольких местах есть упоминание, а уж на форуме сколько этих упоминаний Улыбка
  

OpenConf developer :: http://openconf.1cpp.ru&&FormEx developer :: http://formex.dorex.ru&&1C++ active developer && tester :: www.1cpp.ru
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
lustin
1c++ power user
Отсутствует


1C *.*, ROR, Java - на
этом остановимся

Сообщений: 907
Местоположение: Москва
Зарегистрирован: 20. Октября 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #8 - 25. Января 2008 :: 08:53
Печать  
Цитата:
Оппочки!
А где в доке про "*"?  Озадачен


тут заложена проверка на внимательность

метод Группировать

вырезка:
...
стрГруппировки - тип: Строка. Строка, описывающая требуемую структуру группировки. Задаётся в виде <ИмяИндекса1>: <ИндексноеВыражение1> [; <ИмяИндекса2>: <ИндексноеВыражение2> ... ]. ИндексноеВыражение - строка в том же формате, что и для метода ДобавитьИндекс(), с одним дополнением: если в списке модификаторов колонки присутствует символ '&', то по этой...

так что в данном случае нужно посомтреть еще и метод ДобавитьИндекс()

Цитата:
стрВыражение - тип: Строка. Индексное выражение. Индексное выражение состоит из списка идентификаторов колонок, разделённого запятыми. Если перед именем колонки стоит символ '-', то сортировка осуществляется в обратном порядке. Если перед именем колонки стоит символ '*', то сортировка осуществляется по внутреннему представлению объекта. Если перед именем колонки стоит символ '#', то перед сравнением строк обрезаются пробелы слева и справа. Если перед именем колонки стоит символ '^', то строки сравниваются без учёта регистра. Модификаторы сортировки ('-', '*', "#", "^") можно использовать в любых сочетаниях. Индексное выражение может быть пустой строкой - это эквивалентно сортировке по номеру строки, или отсутствию сортировки (фильтр на такой индекс установить нельзя).


я в свое время попался - то же не знал откуда "звездочка" взялась  Улыбка
  

бизнес-процесс как техническое задание прекрасно, только у бизнеса нет процессов; у бизнеса есть желание выжить
Наверх
GTalkSkype/VoIPICQ  
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #9 - 25. Января 2008 :: 10:33
Печать  
Блин, вообще какая-то путаница образовалась в голове. Еще оказывается результат зависит от того, в каком порядке расположены эти "ИндСклад:*Склад; ИндТовар:*Товар; ИндДокумент:*Документ" Печаль
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #10 - 25. Января 2008 :: 10:47
Печать  
Vadim писал(а) 25. Января 2008 :: 10:33:
Блин, вообще какая-то путаница образовалась в голове. Еще оказывается результат зависит от того, в каком порядке расположены эти "ИндСклад:*Склад; ИндТовар:*Товар; ИндДокумент:*Документ" Печаль

Понимаешь, у тебя образовывается дерево примерно такого вида:
Склад-
         |____Товар-
                             |_Документ-
                                                 |_СтрокиИсходнойТЗ
(это если последний флаг "чРасшифровкаПоследнегоУровня" установлен в 1)
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ИндексированнаяТаблица
Ответ #11 - 25. Января 2008 :: 10:52
Печать  
Vadim писал(а) 25. Января 2008 :: 10:33:
Блин, вообще какая-то путаница образовалась в голове. Еще оказывается результат зависит от того, в каком порядке расположены эти "ИндСклад:*Склад; ИндТовар:*Товар; ИндДокумент:*Документ" Печаль


Аналогично обычному запросу, тот же порядок как идут Группировка в 1С запросе.
Если верхние группировки не нужны - есть метод Свернуть,
что касается группировок - то тоже ничего сложного, при группировании, кажется,
исходный порядок строк не меняется, т.е. если ИТЗ - это результат прямого запроса,
то лучше предварительно в запросе отсортировать так, как нужно.
Если нет - то всегда можно добавить индекс и отсортировать по нужному полю
  
Наверх
 
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #12 - 25. Января 2008 :: 10:54
Печать  
Разобрался, аж стыдноПечаль, всё так просто оказывается. Спасибо вам, добрые люди! Круглые глаза
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #13 - 25. Января 2008 :: 12:31
Печать  
Ну можно и мне тогда спросить - то есть попросить - помогите пожалуйста!
1) Индексированную таблицу получаю из прямого запроса вот так:
Код
Выбрать все
	ТзЗапроса = СоздатьОбъект("ИндексированнаяТаблица");
	ТзЗапроса.Загрузить(Запрос.ВыполнитьИнструкцию(ТекстЗапроса));
 


В результате получается ИТЗ с колонками:
Агент,Клиент,ТерминалКлиента,МесяцГруппа,Сумма
Первые три поля (Агент,Клиент,ТерминалКлиента) - это то по чем я потом буду группировать
Далее я разворачиваю колонку МесяцГруппа по-горизонтали
В результате получается ИТЗ вида
Агент,Клиент,ТерминалКлиента,_1,_2,_3
где _1,_2,_3 колонки разных значений МесяцГруппа...
В общем - когда я делаю ИТЗ.Итог("_3") у меня отладчик показывает 1000, а после группировки следующей строкой:
Код
Выбрать все
ТзЗапроса.Группировать("ИндАгент: *Агент;ИндКлиент: *Клиент;ИндТерминалКлиента: *ТерминалКлиента",СтрокаСумм,0); 


В колонке "_3" на первом уровне обхода совсем другое значение - больше чем было.
При этом ВНИМАНИЕ - если суммируемая колонка одна (1 колонку всего суммируем) - выдает правильно на всех уровнях.
Версия 1С++: 2.5.0.6 NB 2008-01-15.
Заранее спасибо за помощь
  
Наверх
IP записан
 
sadovnikov
1c++ power user
Отсутствует


I Love YaBB 2!

Сообщений: 420
Зарегистрирован: 06. Марта 2007
Re: ИндексированнаяТаблица
Ответ #14 - 25. Января 2008 :: 12:36
Печать  
leshik писал(а) 25. Января 2008 :: 12:31:
Ну можно и мне тогда спросить - то есть попросить - помогите пожалуйста!
1) Индексированную таблицу получаю из прямого запроса вот так:
Код
Выбрать все
	ТзЗапроса = СоздатьОбъект("ИндексированнаяТаблица");
	ТзЗапроса.Загрузить(Запрос.ВыполнитьИнструкцию(ТекстЗапроса));
 



Не в тему группировок, но все-таки. Вот так быстрее работать будет:
Код
Выбрать все
	итЗапроса = СоздатьОбъект("ИндексированнаяТаблица");
	Запрос.ВыполнитьИнструкцию(ТекстЗапроса, итЗапроса);
 


  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 2 
ОтправитьПечать