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


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Получить ост по скл и всем складам в одном запросе
04. Мая 2008 :: 13:29
Печать  

В этом запросе я собираю остатки и резервы по конкретному складу:

================================================================
     |(SELECT
     |Рег.Товар as [Товар],
     |Рег.Склад as [Склад],
     |Sum(Рег.ОстатокТовараОстаток) as Количество,
     |0 Резерв,
     |Sum(Рег.ВалютнаяСтоимостьОстаток) as ВалСтоим
     |FROM
     яСтоимость)) as Рег";
     
     Если ВыбСклад.Выбран()=1 Тогда
           Recordset.УстановитьТекстовыйПараметр("ВыбСклад",ВыбСклад);
           ТекстЗапроса=ТекстЗапроса+" WHERE Рег.Склад=:ВыбСклад";
           ПечУсловия=ПечУсловия+"  "+" По складу  "+СокрЛП(ВыбСклад.Наименование);
     КонецЕсли;
     
     ТекстЗапроса=ТекстЗапроса+"
     |GROUP BY
     |Рег.Склад, Рег.Товар
     |
     |UNION ALL
     |
     |SELECT
     |РегРез.Товар as Товар,
     |РегРез.Склад as Склад,
     |0 Количество,
     |Sum(РегРез.РезервТовараОстаток) as Резерв,
     |0 ВалСтоим
     |FROM
     |$РегистрОстатки.РезервыТоваров(:КонДата~,,,(Товар,Склад),(РезервТовара)) as РегРез";
     
     Если ВыбСклад.Выбран()=1 Тогда
           Recordset.УстановитьТекстовыйПараметр("ВыбСклад",ВыбСклад);
           ТекстЗапроса=ТекстЗапроса+" WHERE РегРез.Склад=:ВыбСклад";
     КонецЕсли;
     
     ТекстЗапроса=ТекстЗапроса+"
     |GROUP BY
     |РегРез.Склад, РегРез.Товар)
     |as ВложЗапрос

===========================================================

???  Озадачен

А можно ли как-то в этой запрос ввести еще пару столбцов, где выводить остатки и стоимость по всем складам?

Как-нибудь так:

Товар  Склад  Количество  Резерв  ВалСтоим  ОбщОстаток  ОбщСтоимость
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Получить ост по скл и всем складам в одном зап
Ответ #1 - 04. Мая 2008 :: 13:48
Печать  
да, прицепить к твоему запросу левым соединением остатки по номенклатуре без учета склада
а вообще-то надо на мой взгляд не UNION пользовать, а именно левое соединение.
  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Получить ост по скл и всем складам в одном зап
Ответ #2 - 04. Мая 2008 :: 16:51
Печать  
Если структура регистров не совпадает то лучше имхо через юнион
Вопрос в другом... зачем имея остатки в разрезе склад-товар еще получать и по всем складам? Улыбка
Можно попробовать grouping-with rollup
  

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


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Получить ост по скл и всем складам в одном зап
Ответ #3 - 05. Мая 2008 :: 11:00
Печать  
Через UNION не вышло, через LEFT JOIN все О.К.  Улыбка

=====================================================

|LEFT JOIN
     |(SELECT
     |РегО.Товар as [Товар],
     |Sum(РегО.ОстатокТовараОстаток) as ОбщОст,
     |Sum(РегО.ВалютнаяСтоимостьОстаток) as ОбщСтоим
     |FROM
     яСтоимость)) as РегО
     |LEFT JOIN $Справочник.Склады as СпрСкл With (NOLOCK) ON РегО.Склад=СпрСкл.ID
     |WHERE $СпрСкл.ВЗаказ=1
     |GROUP BY
     |РегО.Товар) as ВложЗапросДоп ON ВложЗапрос.Товар=ВложЗапросДоп.Товар
  
Наверх
 
IP записан
 
Neo
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 327
Зарегистрирован: 12. Ноября 2007
Re: Получить ост по скл и всем складам в одном зап
Ответ #4 - 05. Мая 2008 :: 11:03
Печать  
> Вопрос в другом... зачем имея остатки в разрезе склад-товар еще получать и по всем складам?

- Надо еще получить стоимость резерва - по себестоимости со всех складов с признаком "ВЗаказ"  Класс
  
Наверх
 
IP записан
 
FAM
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 16
Зарегистрирован: 19. Мая 2006
Re: Получить ост по скл и всем складам в одном зап
Ответ #5 - 06. Мая 2008 :: 02:45
Печать  
а не проще было сделать что-то типа:

Sum(Case РегО.Склад When :ВыбСклад Then РегО.ОстатокТовараОстаток Else 0 End) as СкладОст,
Sum(РегО.ОстатокТовараОстаток) as ОбщОст
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать