Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Горячая тема (более 10 ответов) помогите выполнить запрос. (число прочтений - 2434 )
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
помогите выполнить запрос.
27. Декабря 2010 :: 14:17
Печать  
люди может кто подскажет.
есть запрос:...
|Товар                          = Регистр.ПартииТоваров.Товар;
|ГотоваяПродукция       = Регистр.ПартииТоваров.ГотоваяПродукция;
|Документ                     = Регистр.ПартииТоваров.ТекущийДокумент;
|Стоимость                    = Регистр.ПартииТоваров.Стоимость;
|Функция НачКол          = НачОст(Стоимость);
|Функция ПрихСклад    = Приход(Стоимость) Когда(Документ.Вид = "ПоступлениеТоваров");
в результате выполнения получается одна результирующая строка....

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

 

  
Наверх
ICQ  
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #1 - 27. Декабря 2010 :: 15:24
Печать  
Так ты бы свой вариант показал
  
Наверх
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #2 - 28. Декабря 2010 :: 06:30
Печать  
SELECT DISTINCT Подзапрос.Товар [Товар $Справочник.Номенклатура]
     , Подзапрос.СтоимостьНачальныйОстаток
FROM $РегистрОстаткиОбороты.ПартииТоваров (:НачДата,
           :КонДата,,,
           INNER JOIN $Регистр.ПартииТоваров AS ПартииТоваров ON Товар = $ПартииТоваров.Товар
           INNER JOIN _1SJOURN AS Журнал ON Журнал.DATE_TIME_IDDOC = ПартииТоваров.DATE_TIME_IDDOC AND Журнал.IDDOCDEF = ПартииТоваров.IDDOCDEF,
           (Cast(Left(ПартииТоваров.DATE_TIME_IDDOC, 8) AS datetime) >= :НачДата)
           AND (Cast(Left(ПартииТоваров.DATE_TIME_IDDOC, 8) AS datetime) <= :КонДата),
           Товар,) AS ПартииТоваровОстаткиОбороты
     RIGHT OUTER JOIN (SELECT ПартииТоваровОстаткиОбороты.Товар
                 , ПартииТоваровОстаткиОбороты.СтоимостьНачальныйОстаток
                 , ПартииТоваровОстаткиОбороты.СтоимостьПриход
           FROM $РегистрОстаткиОбороты.ПартииТоваров(:НачДата,
                       :КонДата,,,,,
                       Товар,) AS ПартииТоваровОстаткиОбороты) AS Подзапрос ON ПартииТоваровОстаткиОбороты.Товар = Подзапрос.Товар



В одном запросе по документам а во втором по остаткамИоборотам..... а как то можно что бы работало какое то левое/правое соединение было что бы в результирующую таблицу попадали данные о ОстаткахТоваров.....и по документам...


Что бы получалось что-то типо того.
Товар1----остатокПоТовару1-----документ1.
Товар2----остатокПоТовару2-----
Товар3----остатокПоТовару3-----документ2.
Товар4----остатокПоТовару4-----документ3.

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

__________.GIF ( 8 KB | Загрузки )
__________.GIF
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите выполнить запрос.
Ответ #3 - 28. Декабря 2010 :: 07:32
Печать  
(0) достаточно просто запрос к виртуальной табличке ОстанкиИОбороты с детализацией Документ.. и всё.

ЗЫ: а потом можешь фильтрануть на свой вид документа во внешнем запросе.
  
Наверх
 
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #4 - 28. Декабря 2010 :: 07:51
Печать  
ну в общем то да...но у меня на самом то деле не одна строка вычисляемая.......а их около 40.........И если делать как указано выше то всё получается по документам берется начальный остаток по каждому документу...

Получается что -то типо того........
товар1---------- документ1-------------остаток на дату документа1
товар1-----------документ2-------------остаток на дату документа2
товар1---------- документ3-------------остаток на дату документа3
товар2-----------документ4-------------остаток на дату документа4
товар2-----------документ5-------------остаток на дату документа5


а мне надо что бы остаток был такой...
товар1---------- документ1-------------остаток по товару1
товар1-----------документ2-------------остаток по товару1
товар1---------- документ3-------------остаток по товару1
товар2-----------документ4-------------остаток по товару2
товар2-----------документ5-------------остаток по товару2

или в числах....

товар1---------- Приход1-------------15
товар1-----------Приход2-------------15
товар1---------- Приход3-------------15
товар2-----------Приход4-------------20
товар2-----------Приход5-------------20

Вот так именно нужно.
  
Наверх
ICQ  
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #5 - 28. Декабря 2010 :: 08:01
Печать  
я хотел сделать объединением.......виртуальной таблицы с остаткими по документам и виртуальной таблицы за период по товарам..

Но получается что мне нужно объединять 40 полей в одной таблице с 40 полями в другой таблице...

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



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите выполнить запрос.
Ответ #6 - 28. Декабря 2010 :: 08:02
Печать  
Ну и  ? у тебя так и будет..
Внутренний запрос к ОстанкаиИОборотам вернёт все документы движения .. внешним, ты просто строки , которые не подходят по виду дока выкинешь и всё..
у тебя и будет табличка только из приходов..

Точнее, будут все документы, а вот сумма Прихода будет вычислена только там, где документ движения = "ПоступлениеЧегоТоТам"
  
Наверх
 
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #7 - 28. Декабря 2010 :: 08:22
Печать  
то есть ты предлогаешь сделать так....

SELECT Подзапрос.Товар [Товар $Справочник.Номенклатура]
     , Подзапрос.СтоимостьНачальныйОстаток
     , (      CASE WHEN Подзапрос.ВидДокумента = $ВидДокумента.ПоступлениеНаСклад THEN ПартииСырьяОстаткиОбороты.СтоимостьНачальныйОстаток END) Выражение
FROM $РегистрОстаткиОбороты.ПартииСырья(:НачДата,
           :КонДата,,,,,
           Товар,) AS ПартииСырьяОстаткиОбороты
     INNER JOIN ( ПартииСырьяОстаткиОбороты.Товар
                 , ПартииСырьяОстаткиОбороты.СтоимостьНачальныйОстаток
                 , ПартииСырьяОстаткиОбороты.СтоимостьПриход
                 , ПартииСырьяОстаткиОбороты.ПозицияДокумента
                 , ПартииСырьяОстаткиОбороты.ВидДокумента
           FROM $РегистрОстаткиОбороты.ПартииСырья(:НачДата,
                       :КонДата,
                       Документ,
                       Движения,,,,) AS ПартииСырьяОстаткиОбороты) AS Подзапрос ON ПартииСырьяОстаткиОбороты.Товар = Подзапрос.Товар


Но в итоге получается...
товар1---------- документ1-------------остаток на дату документа1
товар1-----------документ2-------------остаток на дату документа2
товар1---------- документ3-------------остаток на дату документа3
товар2-----------документ4-------------остаток на дату документа4
товар2-----------документ5-------------остаток на дату документа5

а мне так неподходит...........
  
Наверх
ICQ  
IP записан
 
Eprst
God Member
*****
Отсутствует



Сообщений: 3397
Зарегистрирован: 08. Октября 2007
Re: помогите выполнить запрос.
Ответ #8 - 28. Декабря 2010 :: 08:36
Печать  
Не так...
select
  Sum (Рег.НачОст) НачОст,
  Sum (case <тут условие на вид документа> Рег.Приход) Приход
 ...
   case (<тут условие на вид документа>  Рег.Документ ) Док
  from
       (select ОстанкиИОбороты(.... 'Документ' )
        ) as Рег
   Group by ....

Т.е полный аналог чорного запроса.

 
  
Наверх
 
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #9 - 28. Декабря 2010 :: 08:58
Печать  
SELECT Sum(Подзапрос.СтоимостьНачальныйОстаток) СтоимостьНачальныйОстаток
     , (      CASE WHEN Подзапрос.ВидДокумента = $ВидДокумента.ПоступлениеНаСклад THEN Sum(Подзапрос.СтоимостьНачальныйОстаток) END) Выражение
FROM (SELECT  ПартииСырьяОстаткиОбороты.Товар
                 , ПартииСырьяОстаткиОбороты.СтоимостьНачальныйОстаток
                 , ПартииСырьяОстаткиОбороты.ВидДокумента
           FROM $РегистрОстаткиОбороты.ПартииСырья(:НачДата,
                       :КонДата,
                       Документ,
                       Движения,,,,) AS ПартииСырьяОстаткиОбороты) AS Подзапрос
Group by Подзапрос.ВидДокумента

В общем типо этого????..
Но это тоже не правильно... или я запрос не правильно написал????
  
Наверх
ICQ  
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #10 - 28. Декабря 2010 :: 12:01
Печать  
народ помогите разобраться....
  
Наверх
ICQ  
IP записан
 
Salimbek
God Member
*****
Отсутствует



Сообщений: 862
Зарегистрирован: 06. Июня 2006
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #11 - 29. Декабря 2010 :: 05:47
Печать  
Sem_chik писал(а) 28. Декабря 2010 :: 07:51:
...

Получается что -то типо того........
товар1---------- документ1-------------остаток на дату документа1
товар1-----------документ2-------------остаток на дату документа2
товар1---------- документ3-------------остаток на дату документа3
товар2-----------документ4-------------остаток на дату документа4
товар2-----------документ5-------------остаток на дату документа5


а мне надо что бы остаток был такой...
товар1---------- документ1-------------остаток по товару1
товар1-----------документ2-------------остаток по товару1
товар1---------- документ3-------------остаток по товару1
товар2-----------документ4-------------остаток по товару2
товар2-----------документ5-------------остаток по товару2
...
Вот так именно нужно.

Тебе нужен "остаток по товару 1" на какой момент времени? Сейчас все логично - на каждый из моментов изменения остатка - выдается соответствующее количество.
  
Наверх
ICQ  
IP записан
 
Sem_chik
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 13
Местоположение: Саратов
Зарегистрирован: 11. Октября 2010
Пол: Мужской
Re: помогите выполнить запрос.
Ответ #12 - 29. Декабря 2010 :: 08:41
Печать  
А мне надо за период..
SELECT ПартииСырьяОстаткиОбороты.Товар [Товар $Справочник.Номенклатура]
     , ПартииСырьяОстаткиОбороты.СтоимостьНачальныйОстаток
FROM $РегистрОстаткиОбороты.ПартииСырья(,,,,,,
           Товар,
           Стоимость) AS ПартииСырьяОстаткиОбороты
  
Наверх
ICQ  
IP записан
 
Anatol
Senior Member
****
Отсутствует


тыц, пыц, тыц!!!

Сообщений: 412
Зарегистрирован: 24. Апреля 2009
Re: помогите выполнить запрос.
Ответ #13 - 29. Декабря 2010 :: 14:23
Печать  
Sem_chik писал(а) 29. Декабря 2010 :: 08:41:
А мне надо за период..


http://www.script-coding.com/Direct_queries.html#9.
  
Наверх
wwwICQ  
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать