Переключение на Главную Страницу Страницы: [1]  ОтправитьПечать
Очень популярная тема (более 25 ответов) ИндексированнаяТаблица (число прочтений - 12121 )
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 записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #15 - 25. Января 2008 :: 16:51
Печать  
Лешик и автор!
Там по моей ссылке прямо пример вывода отчета универсального с группировками, пусть и без звездочег, но работает...
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #16 - 31. Января 2008 :: 13:48
Печать  
Тоже касаемо ИндексированнойТаблицы. Есть запрос, который отбирает стандартные штуки: начальный остаток, приход, расход, конечный остаток. Используется ВТ РегистрОстаткиОбороты. Группировки - товар; партия; склад; документ, образующий движение. Есть товар Товар1. Если выбрать в форме отчета конкретно этот товар или группу, к которой он принадлежит, то итог по начальному остатку Товар1 будет один. Если сформировать отчет по всем товарам, то итог по начальному остатку Товар1 будет другой. Расхождение возникает в момент группировки по  партии. Если выбран Товар1, то таблица до метода "Группировать" выглядит так:

Склад         Товар           Партия            Документ           Начальный остаток        Приход        Расход    Конечный ост.
Склад1       Товар1         Партия1          Документ1                         0                            2                 0                  2
Склад1       Товар1         Партия1                                                     2                            0                0                   2

После метода "Группировать" при отборе по группировке "Партия":

Склад         Товар           Партия            Документ           Начальный остаток        Приход        Расход    Конечный ост.
Склад1       Товар1         Партия1          Документ1                         0                            2                 0                  2

Получаем начальный остаток на дату - 0, что соответствует действительности.
Если же теперь сформируем отчет по всем товарам, то картина будет следующая:
до метода "Группировать":

Склад         Товар           Партия            Документ           Начальный остаток        Приход        Расход    Конечный ост.
Склад1       Товар1         Партия1          Документ1                         0                            2                 0                  2
Склад1       Товар1         Партия1                                                     2                            0                0                   2

т. е. то же самое, что и при выборе конкретного товара.
После:

Склад         Товар           Партия            Документ           Начальный остаток        Приход        Расход    Конечный ост.
Склад1       Товар1         Партия1          Документ1                         2                            2                 0                  2


Получаем начальный остаток - 2, что не соответствует действительности.
Главный вопрос у меня в следующем: это я туплю и неправильно написал запрос, или косячит метод "Группировать"? Кто-нибудь сталкивался с таким?

P. S. Сразу вываливать текст запроса как-то не решился Улыбка, а мош и не нужен он
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #17 - 31. Января 2008 :: 15:50
Печать  
2(Vadim) Cделай без ВТ - появятся доп. возможности кстати Улыбка
Сталкивался давно с таким или подобным, тут поищи
Дело не в ИТЗ
ЗЫ. Это если нужна именно такая детализация, иначе вроде нормально работает
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #18 - 01. Февраля 2008 :: 07:31
Печать  
Эта ВТ просто идеально подходит для реализации нужного мне отчета, доп. возможности больше никакие не нужны,  я с ним бился неделю, переделывать рука не поднимается Улыбка. Какую строку в поиск забивать?  Нерешительный
  
Наверх
 
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #19 - 01. Февраля 2008 :: 16:28
Печать  
Вобщем, переписал с использованием двух ВТ остатки и обороты. Получилась такая бяка:
Код
Выбрать все
	|SELECT
	|	ОстаткиТоваровОстаткиОбороты.Товар [Товар $Справочник.Товары]
	|	,ОстаткиТоваровОстаткиОбороты.Партия [Партия $Документ.ПриходнаяКредит]
	|	,ОстаткиТоваровОстаткиОбороты.Склад [Склад $Справочник.Склады]
	|	, RIGHT(ОстаткиТоваровОстаткиОбороты.ПозицияДокумента, 9) [Док $Документ]
	|	, MAX(ОстаткиТоваровОстаткиОбороты.ВидДокумента) Док_вид
	|	, ОстаткиТоваровОстаткиОбороты.НачальныйОстаток As НачКол
	|	, ОстаткиТоваровОстаткиОбороты.Приход As ПрихКол
	|	, ОстаткиТоваровОстаткиОбороты.Расход As РасхКол
	|	, ОстаткиТоваровОстаткиОбороты.ПереоценкаРасход As ПереоценКол
	|	, ОстаткиТоваровОстаткиОбороты.ПродажаРасход As ПродКол
	|	, ОстаткиТоваровОстаткиОбороты.ПерекидкиРасход As ПерекидКол
	|	, ОстаткиТоваровОстаткиОбороты.ВозвратРасход As ВозвКол
	|	, ОстаткиТоваровОстаткиОбороты.РасходнаяСтоимостьНачальныйОстаток As НачСто
	|	, ОстаткиТоваровОстаткиОбороты.РасходнаяСтоимостьПриход As ПрихСто
	|	, ОстаткиТоваровОстаткиОбороты.РасходнаяСтоимостьРасход As РасСто
	|	, ОстаткиТоваровОстаткиОбороты.СтоимостьПереоценкиРасход As ПереоценСто
	|	, ОстаткиТоваровОстаткиОбороты.ПродажнаяСтоимостьРасход As ПродажСто
	|	, ОстаткиТоваровОстаткиОбороты.СтоимостьПерекидкиРасход As ПерекидСто
	|	, ОстаткиТоваровОстаткиОбороты.ВозвратнаяСтоимостьРасход As ВозвСто
	|FROM (
	|SELECT
	|	ОстаткиТоваровОстатки.Товар,
	|	ОстаткиТоваровОстатки.Партия,
	  |	ОстаткиТоваровОстатки.Склад,
	  |	null as ПозицияДокумента,
	  |	null as ВидДокумента,
	  |	ОстаткиТоваровОстатки.ОстатокТовараОстаток As НачКол,
	  |	0 as Приход,
	  |	0 as Расход,
	|	0 As ПереоценкаРасход,
	|	0 As ПродажаРасход,
	|	0 As ПерекидкиРасход,
	|	0 As ВозвратРасход,
	|	ОстаткиТоваровОстатки.РасходнаяСтоимостьОстаток As НачСто,
	|	0 As РасходнаяСтоимостьПриход,
	|	0 As РасходнаяСтоимостьРасход,
	|	0 As СтоимостьПереоценкиРасход,
	|	0 As ПродажнаяСтоимостьРасход,
	|	0 As СтоимостьПерекидкиРасход,
	|	0 As ВозвратнаяСтоимостьРасход
	|FROM $РегистрОстатки.ОстаткиТоваров(:ДатаОтчета,,,
	  |(Товар, Партия, Склад), (ОстатокТовара, РасходнаяСтоимость)) AS ОстаткиТоваровОстатки
	|union all
	|SELECT
	  |	ОстаткиТоваровОбороты.Товар,
	|	ОстаткиТоваровОбороты.Партия,
	  |	ОстаткиТоваровОбороты.Склад,
	  |	ОстаткиТоваровОбороты.ПозицияДокумента,
	  |	ОстаткиТоваровОбороты.ВидДокумента,
	  |	0,
	  |	ОстаткиТоваровОбороты.ОстатокТовараПриход,
	  |	ОстаткиТоваровОбороты.ОстатокТовараРасход,
	|	ОстаткиТоваровОбороты.ПереоценкаТовараРасход,
	|	ОстаткиТоваровОбороты.ПродажаТовараРасход,
	|	ОстаткиТоваровОбороты.ПерекидкаТовараРасход,
	|	ОстаткиТоваровОбороты.ВозвратТовараРасход,
	|	0,
	|	ОстаткиТоваровОбороты.РасходнаяСтоимостьПриход,
	|	ОстаткиТоваровОбороты.РасходнаяСтоимостьРасход,
	|	ОстаткиТоваровОбороты.СтоимостьПереоценкиРасход,
	|	ОстаткиТоваровОбороты.ПродажнаяСтоимостьРасход,
	|	ОстаткиТоваровОбороты.СтоимостьПерекидкиРасход,
	|	ОстаткиТоваровОбороты.ВозвратнаяСтоимостьРасход
	|FROM $РегистрОбороты.ОстаткиТоваров(:ДатаОтчета, :ДатаКон~, Документ,,, (Товар, Партия, Склад),
	  |	(ОстатокТовара, ПереоценкаТовара, ПродажаТовара, ПерекидкаТовара, ВозвратТовара, РасходнаяСтоимость, СтоимостьПереоценки, ПродажнаяСтоимость, СтоимостьПерекидки, ВозвратнаяСтоимость)) AS ОстаткиТоваровОбороты
	|) As ОстаткиТоваровОстаткиОбороты
	|GROUP BY ОстаткиТоваровОстаткиОбороты.Товар
	|	, ОстаткиТоваровОстаткиОбороты.Партия
	|	, ОстаткиТоваровОстаткиОбороты.Склад";
 



При выполнении выдается ошибка:
Meta name parser error: Недопустимое значение параметра "$РегистрОбороты.ОстаткиТоваров" (7)
Печаль
Если список всех ресурсов в ВТ регистра оборотов заменить каким-то одним - такой ошибки не выдается.
Где я ошибся?
  
Наверх
 
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #20 - 04. Февраля 2008 :: 08:04
Печать  
Неужели никто не знает? Нерешительный
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #21 - 04. Февраля 2008 :: 09:25
Печать  
Да напиши свои юнионы с остатками и движениями
По объему будет ненамного больше Улыбка
А тему я и сам не смог найти, траблы у меня с поиском тут Улыбка
Вот так делал:

Код
Выбрать все
	ТекстЗапросаШапка = "
	|SELECT SUM(Запрос.НачОст) as НачОст
	|,	SUM(Запрос.Приход) as Приход
	|,	SUM(Запрос.Расход) as Расход
	|,	SUM(Запрос.НачОст) + SUM(Запрос.Приход) - SUM(Запрос.Расход) as КонОст
	|";

	ТекстЗапросаИтоги = "
	|SELECT $Итоги.Долг as НачОст
	|,	CAST(0 as Numeric(15,2)) as Приход
	|,	CAST(0 as Numeric(15,2)) as Расход
	|";

	ТекстЗапросаОстатки = "
	|SELECT	$Остатки.Долг * (1 - Остатки.DEBKRED * 2) as НачОст
	|,	CAST(0 as Numeric(15,2)) as Приход
	|,	CAST(0 as Numeric(15,2)) as Расход
	|";

	ТекстЗапросаДвижения = "
	|SELECT	CAST(0 as Numeric(15,2)) as НачОст
	|,	(CASE WHEN Движения.DEBKRED=0 THEN $Движения.Долг ELSE 0 END) as Приход
	|,	(CASE WHEN Движения.DEBKRED=1 THEN $Движения.Долг ELSE 0 END) as Расход
	|";

	ТекстЗапросаПодвал = "
	|) as Запрос
	|
	|GROUP BY
	|";
	Если ЕстьПометка("Фирма") = 1 Тогда
		ТекстЗапросаШапка = ТекстЗапросаШапка + "
		|,	Запрос.Фирма as [Фирма $Справочник.Фирмы]
		|,	GROUPING(Запрос.Фирма) as ИтогФирма
		|";

		ТекстЗапросаИтоги = ТекстЗапросаИтоги + "
		|,	$Итоги.Фирма as Фирма
		|";

		ТекстЗапросаОстатки = ТекстЗапросаОстатки + "
		|,	$Остатки.Фирма as Фирма
		|";

		ТекстЗапросаДвижения = ТекстЗапросаДвижения + "
		|,	$Движения.Фирма as Фирма
		|";
	КонецЕсли;
//Далее по аналогии
	ТекстЗапросаШапка = ТекстЗапросаШапка + "
	|FROM (
	|";

	ТекстЗапросаИтоги = ТекстЗапросаИтоги + "
	|FROM
	|	$РегистрИтоги.ВзаиморасчетыПокупателей as Итоги With (NOLOCK)
	|";
	ТекстЗапросаИтоги = ТекстЗапросаИтоги + "
	|WHERE
	|	(Итоги.PERIOD = :ДатаОстатков)
	|	AND ($Итоги.Фирма IN (Select val from #СписокФирм))
	|";

	ТекстЗапросаОстатки = ТекстЗапросаОстатки + "
	|FROM
	|	$Регистр.ВзаиморасчетыПокупателей as Остатки With (NOLOCK)
	|
	|INNER JOIN _1SJOURN as ЖурналОст With (NOLOCK) ON Остатки.IDDOC = ЖурналОст.IDDOC
	|";
	ТекстЗапросаОстатки = ТекстЗапросаОстатки + "
	|WHERE
	|	(ЖурналОст.DATE_TIME_IDDOC >= :НачДатаОст)
	|	AND (ЖурналОст.DATE_TIME_IDDOC < :НачДата)
	|	AND (ЖурналОст.$ФлагРегистра.ВзаиморасчетыПокупателей = 1)
	|	AND ($Остатки.Фирма IN (Select val from #СписокФирм))
	|";

    ТекстЗапросаДвижения = ТекстЗапросаДвижения + "
	|FROM
	|	$Регистр.ВзаиморасчетыПокупателей as Движения With (NOLOCK)
	|";
	ТекстЗапросаДвижения = ТекстЗапросаДвижения + "
	|INNER JOIN _1SJOURN as Журнал With (NOLOCK) ON Движения.IDDOC = Журнал.IDDOC
	|
	|WHERE
	|	(Журнал.DATE_TIME_IDDOC >= :НачДата)
	|	AND (Журнал.DATE_TIME_IDDOC < :КонДата~)
	|	AND (Журнал.$ФлагРегистра.ВзаиморасчетыПокупателей = 1)
	|	AND ($Движения.Фирма IN (Select val from #СписокФирм))
	|";
	Для Сч = 1 по СписокГруппировок.РазмерСписка() Цикл
		ТекГруппировка = СписокГруппировок.ПолучитьЗначение(Сч);
		ТекстЗапросаПодвал = ТекстЗапросаПодвал + "Запрос." + ТекГруппировка + ", "
	КонецЦикла;

	Если Прав(ТекстЗапросаПодвал, 2) = ", " Тогда
		ТекстЗапросаПодвал = Лев(ТекстЗапросаПодвал, СтрДлина(ТекстЗапросаПодвал) - 2);
		ТекстЗапросаПодвал = ТекстЗапросаПодвал + " WITH ROLLUP";
	Иначе
		ТекстЗапросаПодвал = "
		|) as Запрос
		|";
	КонецЕсли;

 


  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #22 - 04. Февраля 2008 :: 09:30
Печать  
"свои юнионы с остатками и движениями" имеется в виду без использования ВТ?
  
Наверх
 
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: ИндексированнаяТаблица
Ответ #23 - 04. Февраля 2008 :: 10:00
Печать  
Да, пример же даже выложил
  

Кампутер, кофе и сигареты - это очень плохо для моего здоровья...
Наверх
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #24 - 04. Февраля 2008 :: 13:11
Печать  
Переделал еще по-другому запрос. Получилось вот так:
Код
Выбрать все
|SELECT
	|	Рег.Товар [Товар $Справочник.Товары],
	|	Рег.Партия [Партия $Документ.ПриходнаяКредит],
	|	Рег.Склад [Склад $Справочник.Склады],
	|	jr.iddocdef as Док_вид,
	|	jr.iddoc as [Док $Документ],
	|	Sum(Рег.ОстатокТовараНачальныйОстаток) НачКол,
	|	Sum(Рег.ОстатокТовараПриход) ПрихКол,
	|	Sum(Рег.ОстатокТовараРасход) РасхКол,
	|	Sum(Рег.ПереоценкаТовараРасход) ПереоценКол,
	|	Sum(Рег.ПродажаТовараРасход) ПродКол,
	|	Sum(Рег.ПерекидкиТовараРасход) ПерекидКол,
	|	Sum(Рег.ВозвратТовараРасход) ВозвКол,
	|	m(Рег.ПерекидкиТовараРасход) КонКол,
	|	Sum(Рег.РасходнаяСтоимостьНачальныйОстаток) НачСто,
	|	Sum(Рег.РасходнаяСтоимостьПриход) ПрихСто,
	|	Sum(Рег.РасходнаяСтоимостьРасход) РасСто,
	|	Sum(Рег.СтоимостьПереоценкиРасход) ПереоценСто,
	|	Sum(Рег.ПродажнаяСтоимостьРасход) ПродажСто,
	|	Sum(Рег.СтоимостьПерекидкиРасход) ПерекидСто,
	|	Sum(Рег.ВозвратнаяСтоимостьРасход) ВозвСто,
	|	атнаяСтоимостьРасход)-Sum(Рег.СтоимостьПерекидкиРасход) КонСто
	|FROM
	|	(SELECT
	|		$P.Товар AS Товар,
	|		$P.Партия AS Партия,
	|		$P.Склад AS Склад,
	|		null as Док_вид,
	|		null as Док,
	|		$P.ОстатокТовара As НачКол,
	|		0 as ПрихКол,
	|		0 as РасхКол,
	|		0 As ПереоценКол,
	|		0 As ПродКол,
	|		0 As ПерекидКол,
	|		0 As ВозвКол,
	|		0 As КонКол,
	|		$P.РасходнаяСтоимость As НачСто,
	|		0 As ПрихСто,
	|		0 As РасСто,
	|		0 As ПереоценСто,
	|		0 As ПродажСто,
	|		0 As ПерекидСто,
	|		0 As ВозвСто,
	|		0 As КонСто
	|	FROM
	|		$РегистрИтоги.ОстаткиТоваров as P
	|	WHERE
	|		(period = :ДатаОтчета)
	|	UNION ALL
	|	SELECT
	|		$P.Товар AS Товар,
	|		$P.Партия AS Партия,
	|		$P.Склад AS Склад,
	|		null as Док_вид,
	|		null as Док,
	|		$P.ОстатокТовара*(1-P.debkred*2) AS НачКол,
	|		0 as ПрихКол,
	|		0 as РасхКол,
	|		0 As ПереоценКол,
	|		0 As ПродКол,
	|		0 As ПерекидКол,
	|		0 As ВозвКол,
	|		0 As КонКол,
	|		$P.РасходнаяСтоимость*(1-P.debkred*2) AS НачСто,
	|		0 As ПрихСто,
	|		0 As РасСто,
	|		0 As ПереоценСто,
	|		0 As ПродажСто,
	|		0 As ПерекидСто,
	|		0 As ВозвСто,
	|		0 As КонСто
	|	FROM
	|		$Регистр.ОстаткиТоваров AS P
	|	INNER JOIN
	|		_1sjourn As jr ON (P.iddoc=jr.iddoc)
	|			AND (jr.DATE_TIME_IDDOC BETWEEN :ДатаОтчета AND :ДатаКон~)
	|	UNION ALL
	|
	|	SELECT
	|		$P.Товар AS Товар,
	|		$P.Партия AS Партия,
	|		$P.Склад AS Склад,
	|		null as Док_вид,
	|		null as Док,
	|		0 AS НачКол,
	|		(1-P.debkred)*$P.ОстатокТовара AS ПрихКол,
	|		(P.debkred)*$P.ОстатокТовара AS РасхКол,
	|		(P.debkred)*$P.ПереоценкаТовара AS ПереоценКол,
	|		(P.debkred)*$P.ПродажаТовара AS ПродКол,
	|		(P.debkred)*$P.ПерекидкиТовара AS ПерекидКол,
	|		(P.debkred)*$P.ВозвратТовара AS ВозвКол,
	|		0 AS КонКол,
	|		0 AS НачСто,
	|		(1-P.debkred)*$P.РасходнаяСтоимость AS ПрихСто,
	|		(P.debkred)*$P.РасходнаяСтоимость AS РасСто,
	|		(P.debkred)*$P.СтоимостьПереоценки AS ПереоценСто,
	|		(P.debkred)*$P.ПродажнаяСтоимость AS ПродажСто,
	|		(P.debkred)*$P.СтоимостьПерекидки AS ПерекидСто,
	|		(P.debkred)*$P.ВозвратнаяСтоимость AS ВозвСто,
	|		0 AS КонСто
	|	FROM
	|		$Регистр.ОстаткиТоваров AS P
	|	INNER JOIN
	|		_1sjourn As jr ON (P.iddoc=jr.iddoc)
	|			AND (jr.DATE_TIME_IDDOC BETWEEN :ДатаОтчета AND :ДатаКон~)
	|	) Рег
	|GROUP BY
	|	Товар, Партия, Склад, jr.iddoc";
 


        
В итоге получаю такую ошибку:
State 42000, native 107, message [Microsoft][ODBC SQL Server Driver][SQL Server]The column prefix 'jr' does not match with a table name or alias name used in the query.

Парсится нормально. Ошибка на этапе выполнения вылазит.
Где я опять накосячил, подскажите пожалуйста Печаль
  
Наверх
 
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #25 - 05. Февраля 2008 :: 14:37
Печать  
На всякий случай, ап Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ИндексированнаяТаблица
Ответ #26 - 05. Февраля 2008 :: 14:47
Печать  
Vadim писал(а) 04. Февраля 2008 :: 13:11:
Переделал еще по-другому запрос. Получилось вот так:
...

В итоге получаю такую ошибку:
State 42000, native 107, message [Microsoft][ODBC SQL Server Driver][SQL Server]The column prefix 'jr' does not match with a table name or alias name used in the query.

Парсится нормально. Ошибка на этапе выполнения вылазит.
Где я опять накосячил, подскажите пожалуйста Печаль


Ну так jr у тебя внутри вложенного - парсер же пишет
И group by не по всем полям ...

  
Наверх
 
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #27 - 06. Февраля 2008 :: 09:49
Печать  
С jr косяк понял. Как тогда вытащить документ? А что значит "Group by не по всем полям"? Указываю там нужные мне поля, разве не так надо? Улыбка
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: ИндексированнаяТаблица
Ответ #28 - 06. Февраля 2008 :: 15:23
Печать  
Vadim писал(а) 06. Февраля 2008 :: 09:49:
С jr косяк понял. Как тогда вытащить документ? А что значит "Group by не по всем полям"? Указываю там нужные мне поля, разве не так надо? Улыбка


1.Нет поля jr.iddocdef в группировке,
2.присоединить журнал можно во внешнем запросе,
3. группировать надо по полям Рег.Товар а не Товар, т.к. [Товар $Справочник.Товары] преобразует
к другому названию

Короче ошибок очень много - больше не готов комментировать
  
Наверх
 
IP записан
 
Vadim
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 29
Зарегистрирован: 27. Декабря 2007
Re: ИндексированнаяТаблица
Ответ #29 - 07. Февраля 2008 :: 07:06
Печать  
Спасибо и за это
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: [1] 
ОтправитьПечать