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


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Спецификация документа
12. Марта 2009 :: 07:14
Печать  
Столкнулся со следующим:
ТекстЗапроса="
     |SELECT
     |      ЗаказНаряд.IDDOC [Наряд $Документ.ЗаказНаряд]
     |      , ''  as Накладная
     |      , CAST(LEFT(Журнал.DATE_TIME_IDDOC, 8) as DateTime) as ДатаДок
     |      , Журнал.DOCNO НомерДок
     |      , Sum($ЗаказНарядСтроки.Сумма) Сумма
     |FROM _1SJOURN AS Журнал With (NOLOCK)
     |      INNER JOIN $Документ.ЗаказНаряд AS ЗаказНаряд With (NOLOCK) ON Журнал.IDDOC = ЗаказНаряд.IDDOC
     |      INNER JOIN $ДокументСтроки.ЗаказНаряд AS ЗаказНарядСтроки With (NOLOCK) ON Журнал.IDDOC = ЗаказНарядСтроки.IDDOC
     |WHERE (Журнал.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ((Журнал.CLOSED & 1) = 1)
     |GROUP BY Журнал.DATE_TIME_IDDOC, Журнал.DOCNO, ЗаказНаряд.IDDOC
     |UNION ALL
     |SELECT
     |      '' as Наряд
     |      , РасходнаяНакладная.IDDOC [Накладная $Документ.РасходнаяНакладная]
     |      , CAST(LEFT(Журнал.DATE_TIME_IDDOC, 8) as DateTime) as ДатаДок
     |      , Журнал.DOCNO НомерДок
     |      , Sum($РасходнаяНакладнаяСтроки.Сумма) Сумма
     |FROM _1SJOURN AS Журнал With (NOLOCK)
     |      INNER JOIN $Документ.РасходнаяНакладная AS РасходнаяНакладная With (NOLOCK) ON Журнал.IDDOC = РасходнаяНакладная.IDDOC
     |      INNER JOIN $ДокументСтроки.РасходнаяНакладная AS РасходнаяНакладнаяСтроки With (NOLOCK) ON Журнал.IDDOC = РасходнаяНакладнаяСтроки.IDDOC
     |WHERE (Журнал.DATE_TIME_IDDOC BETWEEN :НачДата AND :КонДата~)
     |      AND ((Журнал.CLOSED & 1) = 1)";

Накладная из второго запроса не специфицируется, пришлось ставить ''  as [Накладная $Документ.РасходнаяНакладная] в первом запросе.
Да и разнес по разным переменным только для правильной спецификации.
Как явно указать, что возвращаемое значение в ячейке таблицы может быть разного типа? Это нужно для объединения запросов по разным документам
  
Наверх
 
IP записан
 
leshik
1c++ donor
Отсутствует



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Спецификация документа
Ответ #1 - 12. Марта 2009 :: 07:27
Печать  
Обернуть в запрос и в "верхнем" запросе типизировать
  
Наверх
IP записан
 
Вадимко
God Member
*****
Отсутствует


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

Сообщений: 1048
Местоположение: Минск
Зарегистрирован: 24. Мая 2006
Пол: Мужской
Re: Спецификация документа
Ответ #2 - 12. Марта 2009 :: 07:33
Печать  
Думается что лучше писать тогда
$ВидДокумента36.ЗаказНаряд + ЗаказНаряд.IDDOC Док
Ну и по аналогии, а дальше как Лешик сказал Улыбка
  

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


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Спецификация документа
Ответ #3 - 12. Марта 2009 :: 07:34
Печать  
leshik писал(а) 12. Марта 2009 :: 07:27:
Обернуть в запрос и в "верхнем" запросе типизировать


Если оставлять в разных переменных, то можно оставлять так, хотелось бы, чтобы документы разных типов хранились в одном стобце возвращаемой таблицы, а при этом типизировать в верхнем запросе не получится, хотя сорри, если вид документа брать из журнала то ...(буду пробовать)
  
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Спецификация документа
Ответ #4 - 12. Марта 2009 :: 07:36
Печать  
Вадимко писал(а) 12. Марта 2009 :: 07:33:
Думается что лучше писать тогда
$ВидДокумента36.ЗаказНаряд + ЗаказНаряд.IDDOC Док
Ну и по аналогии, а дальше как Лешик сказал Улыбка


Спасибо
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Спецификация документа
Ответ #5 - 12. Марта 2009 :: 08:24
Печать  
если есть итог по колонке Сумма

Код
Выбрать все
ТекстЗапроса="
|select
|  Журнал.iddoc [Док $Документ],
|  Журнал.iddocdef Док_вид,
|  cast(left(Журнал.date_time_iddoc, 8) as datetime) ДатаДок,
|  rtrim(ltrim(Журнал.docno)) НомерДок,
|  isnull($ЗаказНаряд.Сумма, $РасходнаяНакладная.Сумма) Сумма
|
|from _1sjourn Журнал (nolock)
|left join $Документ.ЗаказНаряд ЗаказНаряд (nolock) on ЗаказНаряд.iddoc = Журнал.iddoc
|left join $Документ.РасходнаяНакладная РасходнаяНакладная (nolock) on РасходнаяНакладная.iddoc = Журнал.iddoc
|where Журнал.date_time_iddoc between :НачДата and :КонДата~
|  and Журнал.iddocdef in ($ВидДокумента.ЗаказНаряд, $ВидДокумента.РасходнаяНакладная)
|  and Журнал.closed&1 = 1
|
|order by Журнал.date_time_iddoc
|";
 

  

1&&2&&3
Наверх
 
IP записан
 
mov68
Full Member
***
Отсутствует


I Love YaBB 2!

Сообщений: 180
Зарегистрирован: 21. Декабря 2007
Re: Спецификация документа
Ответ #6 - 12. Марта 2009 :: 08:28
Печать  
Спасибо, интересная конструкция, сейчас испытаю
  
Наверх
 
IP записан
 
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3051
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Спецификация документа
Ответ #7 - 12. Марта 2009 :: 08:31
Печать  
mov68 писал(а) 12. Марта 2009 :: 08:28:
интересная конструкция
имхо, самая очевидная
  

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