Переключение на Главную Страницу Страницы: 1 ОтправитьПечать
Обычная тема Запрос по регистру с отбором по полям документа (число прочтений - 1134 )
DropDown
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 30. Октября 2009
Запрос по регистру с отбором по полям документа
09. Ноября 2009 :: 07:15
Печать  
Цель выбрать все остатки на дату по регистру также добавив в соответсвии с условием на поле документа. Документ заявка реквизит регистра.
SELECT
  Рег.Товар as [Товар $Справочник.Номенклатура],
  SUM(Рег.Остаток) as Остаток,
   SUM(Рег.ВО_Внутренние) as ВО_Внутренние,
SUM(Рег.ВО_НаЭкспорт) as ВО_НаЭкспорт,
SUM(Рег.ВО_Внешние) as ВО_Внешние
FROM (
     SELECT
           РегЗаявки.Товар as Товар,
           РегЗаявки.Заявка as Заявка,
           ДокЗаявка.ВидЗаявки as ВидЗаявки,
           РегЗаявки.ОстатокОстаток as Остаток,
            case when ДокЗаявка.ВидЗаявки = :Внутренние then РегЗаявки.ОстатокОстаток else 0 END as ВО_Внутренние,
case when ДокЗаявка.ВидЗаявки = :НаЭкспорт then РегЗаявки.ОстатокОстаток else 0 END as ВО_НаЭкспорт,
case when ДокЗаявка.ВидЗаявки = :Внешние then РегЗаявки.ОстатокОстаток else 0 END as ВО_Внешние
     FROM $РегистрОстатки.ЗакрытиеЗаявок(:ДатаПериода~,LEFT JOIN $Документ.ЛистЗаказ as ДокЗаявка On (ДокЗаявка.IDDOC = Заявка), Склад in (SELECT VAL FROM #СписСклад) ,(Товар,Заявка),Остаток) as РегЗаявки
     ) as Рег
Group by Рег.Товар

Отказывается работать и все.
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Запрос по регистру с отбором по полям документа
Ответ #1 - 09. Ноября 2009 :: 10:49
Печать  
DropDown писал(а) 09. Ноября 2009 :: 07:15:
Отказывается работать и все.

И правильно делаетУлыбка
1.То, что заджойнено внутри ВТ нельзя вытянуть наружу. Нужно джойнить снаружи.
2. Как можно получить остатки из регистра с условием по реквизиту? В таблице остатков(rgxxx) нет полей с реквизитами. Движения - можно.
  
Наверх
 
IP записан
 
DropDown
YaBB Newbies
*
Отсутствует


1C++ rocks!

Сообщений: 7
Зарегистрирован: 30. Октября 2009
Re: Запрос по регистру с отбором по полям документа
Ответ #2 - 09. Ноября 2009 :: 16:53
Печать  
Вобщето пробол джойнить с наружи но толку ни какого оптимизатор не преобразовует имена полей также проблема с IIF не пошел пришлось перепесать на case, а чего может кто знает.
Подскажите пожайлуста.

SELECT
          РегЗаявки.Товар as Товар,
          РегЗаявки.Заявка as Заявка,
          ДокЗаявка.ВидЗаявки as ВидЗаявки,
          РегЗаявки.ОстатокОстаток as Остаток,
           case when ДокЗаявка.ВидЗаявки = :Внутренние then РегЗаявки.ОстатокОстаток else 0 END as ВО_Внутренние,
case when ДокЗаявка.ВидЗаявки = :НаЭкспорт then РегЗаявки.ОстатокОстаток else 0 END as ВО_НаЭкспорт,
case when ДокЗаявка.ВидЗаявки = :Внешние then РегЗаявки.ОстатокОстаток else 0 END as ВО_Внешние
     FROM $РегистрОстатки.ЗакрытиеЗаявок(:ДатаПериода~,, Склад in (SELECT VAL FROM #СписСклад) ,(Товар,Заявка),Остаток) as РегЗаявки
INNER JOIN $Документ.ЛистЗаказ as ДокЗаявка On (ДокЗаявка.IDDOC = РегЗаявки.Заявка)
  
Наверх
 
IP записан
 
alexdd
Senior Member
****
Отсутствует


I Love YaBB 2!

Сообщений: 347
Зарегистрирован: 25. Июня 2007
Re: Запрос по регистру с отбором по полям документа
Ответ #3 - 10. Ноября 2009 :: 09:47
Печать  
Заявка это измерение регистра или реквизит? Если измерение, тогда просто заменить ДокЗаявка.ВидЗаявки на $ДокЗаявка.ВидЗаявки. Если реквизит, то так не получится. IIF нет в MSSQL
Код
Выбрать все
SELECT
	РегЗаявки.Товар as Товар,
	РегЗаявки.Заявка as Заявка,
	$ДокЗаявка.ВидЗаявки as ВидЗаявки,
	РегЗаявки.ОстатокОстаток as Остаток,
	  case when $ДокЗаявка.ВидЗаявки = :Внутренние then РегЗаявки.ОстатокОстаток else 0 END as ВО_Внутренние,
	case when $ДокЗаявка.ВидЗаявки = :НаЭкспорт then РегЗаявки.ОстатокОстаток else 0 END as ВО_НаЭкспорт,
	case when $ДокЗаявка.ВидЗаявки = :Внешние then РегЗаявки.ОстатокОстаток else 0 END as ВО_Внешние
FROM
 $РегистрОстатки.ЗакрытиеЗаявок(:ДатаПериода~,, Склад in (SELECT VAL FROM #СписСклад) ,(Товар,Заявка),Остаток) as РегЗаявки
INNER JOIN
 $Документ.ЛистЗаказ as ДокЗаявка On (ДокЗаявка.IDDOC = РегЗаявки.Заявка)  


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