Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) Получить движения регистра по выбранному документу (число прочтений - 2937 )
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Получить движения регистра по выбранному документу
29. Мая 2008 :: 09:14
Печать  
Что не так? В запрос явно лезут чужие движения
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|   Рег.Товар  As [Товар $Справочник.Номенклатура],
|   SUM(Рег.РезервТовараРасход) as Резерв
|FROM
|   $РегистрОбороты.РезервыТоваров(:ПозДок,:ПозДок~,,INNER JOIN $ДокументСтроки.Счет as Сч ON (Сч.IDDOC = :ВыбСчет) AND ($Сч.Товар = Товар),,
|					   (Товар),(РезервТовара)) as Рег
|GROUP BY
|	Рег.Товар
|";
 

  

Константин
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #1 - 29. Мая 2008 :: 09:25
Печать  
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|   Рег.Товар  As [Товар $Справочник.Номенклатура],
|   SUM(Рег.РезервТовараРасход) as Резерв
|FROM
|   $Регистр.РезервыТоваров AS Рег
|   INNER JOIN $Документ.Счет AS Сч ON (Рег.IDDOC = Сч.IDDOC)
|WHERE Сч.IDDOC = :ВыбСчет
|GROUP BY
|	Рег.Товар
|";
  

  
Наверх
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #2 - 29. Мая 2008 :: 09:32
Печать  
А с виртуальными таблицами значит никак?
А этот код не работает
  

Константин
Наверх
 
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #3 - 29. Мая 2008 :: 09:44
Печать  
Цитата:
Что не так? В запрос явно лезут чужие движения
Код
Выбрать все
ТекстЗапроса = "
|SELECT
|   Рег.Товар  As [Товар $Справочник.Номенклатура],
|   SUM(Рег.РезервТовараРасход) as Резерв
|FROM
|   $РегистрОбороты.РезервыТоваров(:ПозДок,:ПозДок~,,INNER JOIN $ДокументСтроки.Счет as Сч ON (Сч.IDDOC = :ВыбСчет) AND ($Сч.Товар = Товар),,
|					   (Товар),(РезервТовара)) as Рег
|GROUP BY
|	Рег.Товар
|";
 


:ПозДок~ - это не конец документа, это конец дня, может выборку попробовать поставить (:ПозДок,:ПозДок, и т.д.
  
Наверх
ICQ  
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #4 - 29. Мая 2008 :: 09:54
Печать  
У меня:
Код
Выбрать все
	Запрос.УстановитьТекстовыйПараметр("ПозДок",   СформироватьПозициюДокумента(Счет.ТекущийДокумент()));
 

  

Константин
Наверх
 
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #5 - 29. Мая 2008 :: 10:18
Печать  
Вот рабочий вариант, но запрос выполняется долго
Код
Выбрать все
	Запрос.УстановитьТекстовыйПараметр("НачДок",   СформироватьПозициюДокумента(Счет.ТекущийДокумент()));
	Запрос.УстановитьТекстовыйПараметр("КонДок",   СформироватьПозициюДокумента(Счет.ТекущийДокумент(),+1));
	Запрос.УстановитьТекстовыйПараметр("ВыбСчет",  Счет.ТекущийДокумент());
	ТекстЗапроса = "
	|SELECT
	|	Рег.Товар  As [Товар $Справочник.Номенклатура],
	|   SUM(Рег.РезервТовараПриход) as Резерв
	|FROM
	|   $РегистрОбороты.РезервыТоваров(:НачДок,:КонДок~,Документ,,,
	|					   (Товар),(РезервТовара)) as Рег
	|WHERE
	|	RIGHT(Рег.ПозицияДокумента,9) = :ВыбСчет
	|GROUP BY
	|	Рег.Товар
	|";
 

Как бы оптимизировать?
  

Константин
Наверх
 
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #6 - 29. Мая 2008 :: 10:30
Печать  
SELECT
   Рег.Товар [Товар $Справочник.Номенклатура],
   SUM(Рег.РезервТовара) as Резерв
FROM $Регистр.РезервыТоваров AS Рег (nolock)
WHERE Рег.IDDOC = :ВыбСчет
GROUP BY Рег.Товар
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #7 - 29. Мая 2008 :: 11:02
Печать  
berezdetsky писал(а) 29. Мая 2008 :: 10:30:
SELECT
   Рег.Товар [Товар $Справочник.Номенклатура],
   SUM(Рег.РезервТовара) as Резерв
FROM $Регистр.РезервыТоваров AS Рег (nolock)
WHERE Рег.IDDOC = :ВыбСчет
GROUP BY Рег.Товар
Да, это работает быстрее, но здесь невозможно определить напраление движения (расход/приход), а в моем случае  в одном документе может  быть как приход, так и расход
  

Константин
Наверх
 
IP записан
 
pvase
God Member
*****
Отсутствует



Сообщений: 923
Местоположение: Киев
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #8 - 29. Мая 2008 :: 11:15
Печать  
Код
Выбрать все
SELECT
   Рег.Товар [Товар $Справочник.Номенклатура],
   SUM(Рег.РезервТовара*((DEBKRED+1)%2)) as РезервПриход,
   SUM(Рег.РезервТовара*DEBKRED) as РезервРасход

FROM $Регистр.РезервыТоваров AS Рег (nolock)
WHERE Рег.IDDOC = :ВыбСчет
GROUP BY Рег.Товар 

  
Наверх
IP записан
 
berezdetsky
1c++ power user
Отсутствует


barba non facit sisadminum

Сообщений: 1986
Местоположение: Москва
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #9 - 29. Мая 2008 :: 11:16
Печать  
Цитата:
Да, это работает быстрее, но здесь невозможно определить напраление движения (расход/приход), а в моем случае  в одном документе может  быть как приход, так и расход

SELECT
   $Рег.Товар [Товар $Справочник.Номенклатура],
   SUM($Рег.РезервТовара) as Резерв
FROM $Регистр.РезервыТоваров AS Рег (nolock)
WHERE Рег.IDDOC = :ВыбСчет
   AND Рег.DEBKRED = 1
GROUP BY $Рег.Товар
  

пароль как коньяк, чем больше звездочек, тем лучше
Наверх
IP записан
 
КилоГрамм
Senior Member
****
Отсутствует


Таити, Таити...

Сообщений: 434
Зарегистрирован: 14. Июня 2006
Пол: Мужской
Re: Получить движения регистра по выбранному докум
Ответ #10 - 29. Мая 2008 :: 11:39
Печать  
Всем спасибо, всё ОК
  

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