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


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 19. Декабря 2007
Прямой запрос к SQL, фильтр - список значений.
19. Декабря 2007 :: 11:46
Печать  
Добрый день.
Буду очень признателен, если поможите с фильтром по СЗ.


ТекстЗапроса = "
     |SELECT
     |  $ДокС.Товар as [Товар $Справочник.Goods],
     |  SUM($ДокС.Кво) as Количество
     |FROM
     |  $ДокументСтроки.ЧекПоТоварам as ДокС
     |INNER JOIN
     |  $Документ.ЧекПоТоварам as Док ON Док.IDDoc = ДокС.IDDoc
     |INNER JOIN
     |  _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                     Жур.Closed & 1 = 1
//      |WHERE
//      |  $ДокС.Товар = :ВыбТовар
     |GROUP BY
     |  $ДокС.Товар";
   
     RS.УстановитьТекстовыйПараметр("НачДата", НачДата);
     RS.УстановитьТекстовыйПараметр("КонДата", КонДата);
     RS.УстановитьТекстовыйПараметр("ВыбТовар", ВыбТовар);
     
     ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);

:ВыбТовар - это список значений на форме отчета, с элементами из справочника Goods


Спасибо.
  
Наверх
 
IP записан
 
mvgfirst
Full Member
***
Отсутствует


В борьбе бобра с ослом
всегда побеждает бобро!

Сообщений: 152
Местоположение: Украина г. Кривой Рог
Зарегистрирован: 17. Августа 2007
Пол: Мужской
Re: Прямой запрос к SQL, фильтр - список значений.
Ответ #1 - 19. Декабря 2007 :: 11:48
Печать  
Читай документацию к 1С++ особенно в сторону процедуры УложитьСписокЗначений()
  
Наверх
ICQ  
IP записан
 
Mole1980
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 19. Декабря 2007
Re: Прямой запрос к SQL, фильтр - список значений.
Ответ #2 - 19. Декабря 2007 :: 11:55
Печать  
Спасибо! Нашел!  Улыбка
  
Наверх
 
IP записан
 
Mole1980
YaBB Newbies
*
Отсутствует


I Love YaBB 2!

Сообщений: 3
Зарегистрирован: 19. Декабря 2007
Re: Прямой запрос к SQL, фильтр - список значений.
Ответ #3 - 20. Декабря 2007 :: 11:09
Печать  
Можно еще одно уточнение?
Запрос работает, выводит в таблицу данные по колонкам: Товар, СуммаСНДС, Количество
А как вывести имя документа, его дату и номер?


ТекстЗапроса = "
     
     |SELECT                                    
     |  $ДокС.Товар as [Товар $Справочник.Goods],
     |  SUM($ДокС.СуммаСНДС) as СуммаСНДС,
     |  SUM($ДокС.Кво) as Количество
     |FROM
     |  $ДокументСтроки.ЧекПоТоварам as ДокС
     |INNER JOIN
     |  _1SJourn as Жур ON Жур.IDDoc = ДокС.IDDoc AND
     |                     Жур.Date_Time_IDDoc BETWEEN :НачДата AND :КонДата~ AND
     |                     Жур.Closed & 1 = 1
     |WHERE
           |  $ДокС.Товар IN (SELECT Val FROM #ВыбТовар)
     |GROUP BY
     |  $ДокС.Товар";
     
     RS.УстановитьТекстовыйПараметр("НачДата", НачДата);
     RS.УстановитьТекстовыйПараметр("КонДата", КонДата);
     RS.УстановитьТекстовыйПараметр("ВыбТовар", ВыбТовар);
     RS.УложитьСписокОбъектов(ВыбТовар, "#ВыбТовар", "Goods");
     
     ТЗ = RS.ВыполнитьИнструкцию(ТекстЗапроса);


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



Сообщений: 820
Местоположение: Пятигорск
Зарегистрирован: 22. Апреля 2007
Пол: Мужской
Re: Прямой запрос к SQL, фильтр - список значений.
Ответ #4 - 20. Декабря 2007 :: 11:51
Печать  
Код
Выбрать все
     | ДокС.IDDOC as [СамДокумент $Документ.ЧекПоТоварам],
///Тут твой кусочек
     |GROUP BY
     | ДокС.IDDOC, $ДокС.Товар";
 


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



Сообщений: 1249
Зарегистрирован: 11. Апреля 2007
Re: Прямой запрос к SQL, фильтр - список значений.
Ответ #5 - 20. Декабря 2007 :: 12:20
Печать  
Дополнение для дат, номера и для документа, когда неизвестно какого он вида
Код
Выбрать все
|     ,Жур.IDDOCDEF AS  Док_вид
|     ,Жур.IDDoc AS [Док $Документ]
|     ,CAST(LEFT(Жур.date_time_iddoc,8) as datetime) as ДатаДок
|     ,Жур.DOCNO as НомерДок   



Имя вида докумета сложнее, в простейшем случае когда только несколько
Код
Выбрать все
| ,CASE WHEN Жур.IDDOCDEF=$ВидДокумента.ЧекПоТоварам THEN 'Чек   '
|	ELSE '	'
| END AS ВидДокумента  



если заинтересует общий случай - поиск по форуму
А вообще, номера, даты лучше извлекать сразу в запросе, чтобы не было сотен лишних обращений к базе,
а сам документ(Док) при необходимости вставлять только в расшифровку.
  
Наверх
 
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать