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


1C++ rocks!

Сообщений: 3
Зарегистрирован: 16. Ноября 2019
v7: Помогите с запросом остатки по дням (v7.7)
16. Ноября 2019 :: 09:05
Печать  
Доброго дня!
Помогите с запросом, для получения остатков на каждый день. Есть интервал нужно получить остаток на каждый день этого интервала. С прямыми запросами познакомился относительно недавно.
Сейчас у меня такой запрос, но не могу побороть ошибку : Недопустимое имя столбца "Номенклатура"

Текст запроса :
     |declare @@curDate datetime
    |declare @@endDate datetime
    |
    |set @@curDate = cast('"+НачДатаПрод+"' AS datetime) 
    |set @@endDate = cast('"+КонДатаПрод+"' AS datetime)
    |
    |set nocount on
    |while @@curDate<=cast('"+КонДатаПрод+"' AS datetime)
    |begin
    |     insert into #DateTable([Номенклатура],[Количество],[Расход],[Дата])
     |
    |     SELECT
    |       Рег.Номенклатура    [Номенклатура],
    |       SUM(Рег.Количество) [Количество], 
    |       SUM(Рег.Расход)     [Расход], 
    |       @@curDate           [Дата]
    |     FROM
    |        ( 
    |           SELECT
    |             $rg.Номенклатура [Номенклатура],
    |             $rg.Количество   [Количество],   
    |             0                [Расход]   
    |           FROM
    |             $РегистрИтоги.ОстаткиТМЦ AS rg (nolock)
    |           WHERE
    |              rg.period = dateadd(m,-1,dateadd(dd,-day(@@curDate)+1,@@curDate))
    |AND $rg.Номенклатура IN (SELECT val FROM #TempTable)
    |           UNION ALL
    |           SELECT
    |             $ra.Номенклатура                       [Номенклатура],
    |             $ra.Количество*(1-ra.debkred*2)        [Количество], 
    |             0                                      [Расход] 
    |           FROM
    |             $Регистр.ОстаткиТМЦ ra (nolock)
    |           INNER JOIN
    |             _1sjourn j (nolock) on j.iddoc = ra.iddoc
    |           WHERE
    |              cast(left(j.date_time_iddoc,8) AS datetime) between dateadd(dd,-day(@@curDate)+1,@@curDate) AND @@curDate
    |AND $ra.Номенклатура IN (SELECT val FROM #TempTable)
    |           UNION ALL   
    |           SELECT
    |             $ra2.Номенклатура                      [Номенклатура],
    |             0                                      [Количество], 
    |             $ra2.Количество*ra2.DEBKRED            [Расход] 
    |           FROM
    |             $Регистр.ОстаткиТМЦ ra2 (nolock)
    |           INNER JOIN
    |             _1sjourn j (nolock) on j.iddoc = ra2.iddoc
    |           WHERE
    |              cast(left(j.date_time_iddoc,8) AS datetime) = @@curDate
    |AND $ra2.Номенклатура IN (SELECT val FROM #TempTable)
    |           UNION ALL
    |           SELECT
    |             $ra3.Номенклатура                      [Номенклатура],
    |             0                                      [Количество], 
    |             0                                      [Расход] 
    |           FROM
    |             $Регистр.ОстаткиТМЦ ra3 (nolock)
    |           INNER JOIN
    |             _1sjourn j (nolock) on j.iddoc = ra3.iddoc
    |           WHERE
    |              cast(left(j.date_time_iddoc,8) AS datetime) between @@curDate AND @@endDate
    |AND $ra3.Номенклатура IN (SELECT val FROM #TempTable)
    |        ) Рег 
    |     GROUP BY
    |     Рег.Номенклатура
    |     set @@curDate = dateadd(dd,1,@@curDate)
    |  end
  
Наверх
 
IP записан
 
DartVader
Junior Member
**
Отсутствует


1C++ rocks!

Сообщений: 29
Зарегистрирован: 13. Марта 2015
Re: v7: Помогите с запросом остатки по дням (v7.7)
Ответ #1 - 16. Ноября 2019 :: 19:05
Печать  
насколько я вижу, ты часть пишешь правильно $rg.Номенклатура, а часть неправильно rg.Номенклатура и типизируй переменные , $rg.Номенклатура [Номенклатура $справочник.Номенклатура ]
  
Наверх
 
IP записан
 
alyuev
God Member
*****
Отсутствует


Гражданин Вселенной

Сообщений: 850
Местоположение: Одесса
Зарегистрирован: 07. Декабря 2007
Пол: Мужской
Re: v7: Помогите с запросом остатки по дням (v7.7)
Ответ #2 - 16. Ноября 2019 :: 22:10
Печать  
Типизацию нужно делать на самом верхнем уровне. Во вложенных SELECTах типизацию не делать.
  

1C 7.7.025; 1C++ 3.2.4.3; Formex 2.0.5.94; 1sqlite
Наверх
IP записан
 
Переключение на Главную Страницу Страницы: 1
ОтправитьПечать