Переключение на Главную Страницу Страницы: 1 [2]  ОтправитьПечать
Очень популярная тема (более 25 ответов) Запрос по документам (число прочтений - 6965 )
trad
1c++ power user
1c++ donor
1c++ moderator
Отсутствует



Сообщений: 3050
Местоположение: Киров
Зарегистрирован: 23. Мая 2006
Пол: Мужской
Re: Запрос по документам
Ответ #15 - 19. Апреля 2008 :: 06:58
Печать  
$Справочник.ПереченьРабот AS ПереченьРабот ON RIGHT($ТаблЧастьЗаказ.Номенклатура,9) = ПереченьРабот.ID
тут не опечатка?
  

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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос по документам
Ответ #16 - 19. Апреля 2008 :: 08:14
Печать  
Kondarat писал(а) 19. Апреля 2008 :: 06:55:
Огроменное спасибо за пинки и подсказки.
Вот так все работает.


Еще не до конца.
Возможна ситуация когда Номенклатура.ID и ПереченьРабот.ID совпадут - тогда результат будет неверен.
В соединении ON еще необходимо добавить условие что
$ТаблЧастьЗаказ.Номенклатура именно нужный справочник.

В принципе после этого можно будет обойтись вообще без соединения - а сразу прописать условие в ICASE
  
Наверх
 
IP записан
 
kiruha
1c++ power user
Отсутствует



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос по документам
Ответ #17 - 19. Апреля 2008 :: 08:15
Печать  
trad писал(а) 19. Апреля 2008 :: 06:58:
$Справочник.ПереченьРабот AS ПереченьРабот ON RIGHT($ТаблЧастьЗаказ.Номенклатура,9) = ПереченьРабот.ID
тут не опечатка?


У него реквизит табличной части "номенклатура" справочник неопределенного типа - либо
номенклатура либо работа
  
Наверх
 
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Запрос по документам
Ответ #18 - 21. Апреля 2008 :: 04:48
Печать  
kiruha писал(а) 19. Апреля 2008 :: 08:14:
Kondarat писал(а) 19. Апреля 2008 :: 06:55:
Огроменное спасибо за пинки и подсказки.
Вот так все работает.


Еще не до конца.
Возможна ситуация когда Номенклатура.ID и ПереченьРабот.ID совпадут - тогда результат будет неверен.
В соединении ON еще необходимо добавить условие что
$ТаблЧастьЗаказ.Номенклатура именно нужный справочник.

В принципе после этого можно будет обойтись вообще без соединения - а сразу прописать условие в ICASE


Да, блин, рано радовался. Видимо до высшей математики еще далеко.
Видимо $ТаблЧастьЗаказ.Номенклатура надо проверить на Вид. А вот как это сделать в соединении ON не могу догадаться.
Может подскажите?

Похоже догадался. Так:
Код
Выбрать все
|LEFT JOIN
|	$Справочник.Номенклатура AS Номенклатура ON RIGHT($ТаблЧастьЗаказ.Номенклатура,9) = Номенклатура.ID
|								 AND($ВидСправочника36.Номенклатура + Номенклатура.ID  = $ТаблЧастьЗаказ.Номенклатура)
|LEFT JOIN
|	$Справочник.ПереченьРабот AS ПереченьРабот ON RIGHT($ТаблЧастьЗаказ.Номенклатура,9) = ПереченьРабот.ID
|								  AND($ВидСправочника36.ПереченьРабот + ПереченьРабот.ID  = $ТаблЧастьЗаказ.Номенклатура)

 


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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос по документам
Ответ #19 - 21. Апреля 2008 :: 07:24
Печать  
так получше ...
Код
Выбрать все
|   SUM(ICASE(LEFT($ТаблЧастьЗаказ.Номенклатура,4)=$ВидСправочника36.ПереченьРабот   ,$ТаблЧастьЗаказ.Сумма, 0)) as СуммаЗЧ,
 

  
Наверх
 
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Запрос по документам
Ответ #20 - 21. Апреля 2008 :: 07:36
Печать  
kiruha писал(а) 21. Апреля 2008 :: 07:24:
так получше ...
Код
Выбрать все
|   SUM(ICASE(LEFT($ТаблЧастьЗаказ.Номенклатура,4)=$ВидСправочника36.ПереченьРабот   ,$ТаблЧастьЗаказ.Сумма, 0)) as СуммаЗЧ,
 



Спасибо, точно и работает быстрее. Только почему-то СуммаЗЧ выводится нормально, а СуммаРаб округляется до целого?
Вот мой код:
Код
Выбрать все
ТекстЗапроса = "
    |SELECT
    |   Жур.IDDoc as [Док $Документ.ЗаказНаряд],
    |	Жур.Date AS ДатаДок,
    |   SUM(ICASE(LEFT($ТаблЧастьЗаказ.Номенклатура,4) = $ВидСправочника36.Номенклатура
    |	,$ТаблЧастьЗаказ.Сумма
    |	,0)
    |	) as СуммаЗЧ,
    |   SUM(ICASE(LEFT($ТаблЧастьЗаказ.Номенклатура,4) = $ВидСправочника36.ПереченьРабот
    |	,$ТаблЧастьЗаказ.Сумма
    |	,0)
    |	) as СуммаРаб
    |FROM
    |   $ДокументСтроки.ЗаказНаряд as ТаблЧастьЗаказ
    |LEFT JOIN
    |   1SJourn as Жур ON Жур.IDDoc = ТаблЧастьЗаказ.IDDoc
    |WHERE
    |   Жур.Date BETWEEN :НачДата~~ AND :КонДата~~ AND
    |   Жур.IDDocDef = $ВидДокумента.ЗаказНаряд AND
    |   Жур.Closed = 1
    |GROUP BY
    |   Жур.IDDoc, Жур.Date
    |ORDER BY
    |	ДатаДок
    |";

 



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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Запрос по документам
Ответ #21 - 21. Апреля 2008 :: 07:44
Печать  
0 замени на 0.00 или в идеале столько нулей сколько размерность суммы, например 000000000.00000
  
Наверх
 
IP записан
 
Kondarat
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 83
Зарегистрирован: 21. Декабря 2007
Re: Запрос по документам
Ответ #22 - 21. Апреля 2008 :: 08:01
Печать  
kiruha писал(а) 21. Апреля 2008 :: 07:44:
0 замени на 0.00 или в идеале столько нулей сколько размерность суммы, например 000000000.00000


kiruha, ты мегачеловек. Теперь все хорошо.
Ты от меня еще не устал? Ну, если нет, подскажи еще одну фишку:
как бы сразу сумму умножить на Курс документа, если он конечно есть.
Курс - общий реквизит документа.
  
Наверх
 
IP записан
 
Андрюха
Junior Member
**
Отсутствует



Сообщений: 74
Местоположение: Красноярск
Зарегистрирован: 19. Марта 2008
Пол: Мужской
Re: Запрос по документам
Ответ #23 - 03. Июня 2008 :: 03:58
Печать  
Почему у меня на Жур.Date AS ДатаДок ругается Invalid column name 'Date'?
  
Наверх
 
IP записан
 
GEORG
Junior Member
**
Отсутствует


I Love YaBB 2!

Сообщений: 43
Зарегистрирован: 15. Мая 2008
Re: Запрос по документам
Ответ #24 - 03. Июня 2008 :: 05:16
Печать  
     |,      CAST(LEFT(Жур.Date_Time_IDDoc, 8) as DateTime) as ДатаДок
  
Наверх
 
IP записан
 
Андрюха
Junior Member
**
Отсутствует



Сообщений: 74
Местоположение: Красноярск
Зарегистрирован: 19. Марта 2008
Пол: Мужской
Re: Запрос по документам
Ответ #25 - 03. Июня 2008 :: 08:07
Печать  
Я знаю что так можно, но у человека-то в запросе Жур.Date работает
  
Наверх
 
IP записан
 
JohnyDeath
1c++ power user
1c++ donor
Отсутствует



Сообщений: 3050
Местоположение: Волгоград
Зарегистрирован: 19. Мая 2006
Пол: Мужской
Re: Запрос по документам
Ответ #26 - 03. Июня 2008 :: 08:15
Печать  
У этого человека - ДБФ
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1 [2] 
ОтправитьПечать