Имя: Пароль:
1C
1С v8
Запрос по остаткам на каждый день
0 Seeker
 
31.10.13
10:06
Добрый день
Пытаюсь в консоле запросов получить запрос который выдаст остатки на каждый день выбранного периода, связывал календарь и остатки и т.д. ничего не получается.
Может кто делал?

Всякие СКД и дополнения периодов и итоги по группировкам с ГруппировкиДляЗначенийГруппировок не предлагать, т.к. нужен результат имено в запросе.
1 PR
 
31.10.13
10:07
Детализация день.
2 Нуф-Нуф
 
31.10.13
10:07
не хочешь скд - свяжи календарь и остатки
3 Necessitudo
 
31.10.13
10:13
ОстаткиИОбороты
4 GANR
 
31.10.13
10:15
(0) Простейший способ - (3). Можно еще накопительный итог по движениям по регистру / оборотам подсчитать - но этого без нужды делать не советую - такие запросы в 1С запросто могут сервер завалить http://www.sql-ex.ru/help/select19.php?Lang=0.
5 Seeker
 
31.10.13
10:24
(2)(3) - если нет движений по остаткам за какой либо день, то остаток по этому дню будет пустой.
6 Bober
 
31.10.13
10:28
(5) в СКД делаешь у поля период дополнение и СКД сама подставит остаток
7 Seeker
 
31.10.13
10:31
(6) кто нить читает стартовую тему?
черным по русскому написал, СКД и прочее от антихриста не предлагать...
8 vhl
 
31.10.13
10:37
(0) Справа вверху красная буква "Я"
9 GANR
 
31.10.13
10:49
(5) Тогда нужно сгенерировать последовательность дат, а для этого надо сгенерировать числовую последовательность http://kb.mista.ru/article.php?id=704. Если нужно запросом -  а н а л и з и р у й   это сообщение и (4).
10 BuHu
 
31.10.13
10:50
(5) если свяжешь календарь и остатки , то как может какой то день не попасть в результат запроса?
11 neckto
 
31.10.13
10:55
(5) >>если нет движений по остаткам за какой либо день, то остаток по этому дню будет пустой.
Если нет движений за день, то остаток волшебным образом обнуляется?
12 Seeker
 
31.10.13
10:57
(10) ВЫБРАТЬ
    ВложенныйЗапрос.ДатаГрафика,
    ТоварыНаСкладахОстаткиИОбороты.Номенклатура,
    ТоварыНаСкладахОстаткиИОбороты.Склад,
    ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток
ИЗ
    (ВЫБРАТЬ
        КалендарныеГрафики.ДатаГрафика КАК ДатаГрафика
    ИЗ
        РегистрСведений.КалендарныеГрафики КАК КалендарныеГрафики
    ГДЕ
        КалендарныеГрафики.Календарь = &Календарь
        И КалендарныеГрафики.ДатаГрафика МЕЖДУ &Дата1 И &Дата2) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
                &Дата1,
                &Дата2,
                День,
                ,
                Склад = &Склад
                    И Номенклатура = &Номенклатура) КАК ТоварыНаСкладахОстаткиИОбороты
        ПО ВложенныйЗапрос.ДатаГрафика = ТоварыНаСкладахОстаткиИОбороты.Период

такой запрос выдает NULL в те дни когда не было движений
13 vittany
 
31.10.13
11:00
(12) Так если мешает толь NULL, то ставишь ЕСТЬNULL(ТоварыНаСкладахОстаткиИОбороты.ВНаличииНачальныйОстаток,0) и у тебя будут нули
14 Seeker
 
31.10.13
11:02
да не нужен мне ноль, мне нужен реальный остаток
15 Seeker
 
31.10.13
11:13
(9) задача похожа, но реализация.... проще уж в цикле каждый раз получать остаток, чем разобраться в этом.
16 hhhh
 
31.10.13
11:16
(15)         ПО ВложенныйЗапрос.ДатаГрафика >= ТоварыНаСкладахОстаткиИОбороты.Период
17 anaed
 
31.10.13
11:28
(15) а собрать циклом текст запроса религия не позволяет?
18 GANR
 
31.10.13
12:02
(15) Вот то-то и оно. Но вот в МС СКЛ 2012 можно и в запросе достаточно просто и незатрано накопительный итог подсчитать.
19 Seeker
 
31.10.13
12:02
(17) религия то позволяет, просто этот запрос как часть большого запроса, и как все это дело туда вклинить ума не приложу.
20 Seeker
 
31.10.13
12:15
(16) вообще какая то хеза получается, но как только сформировался запрос показалось что все получилось....
значения остатка заполнены, но не корректными значениями.
21 ptiz
 
31.10.13
12:22
22 GANR
 
31.10.13
12:33
(20) Да даже если запрос и получится - он будет громоздким и медленным. Так что делай кодом и не тревожь мозг.
23 kochurovg
 
31.10.13
12:53
попробуй вот так :
ВЫБРАТЬ
    Графики.ДатаГрафика КАК ДатаГрафика
    МАКСИМУМ(ОстаткиИ.Период) КАК ПериодОстатка
ПОМЕСТИТЬ _ДатыОстатков    
ИЗ
   РегистрСведений.КалендарныеГрафики КАК Графики
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
        &Дата1,
        &Дата2,
        День,
        ,
        Склад = &Склад
        И Номенклатура = &Номенклатура) КАК ОстаткиИ
    ПО ОстаткиИ.Период<=ДатаГрафика
ГДЕ
   КалендарныеГрафики.Календарь = &Календарь
   И КалендарныеГрафики.ДатаГрафика МЕЖДУ &Дата1 И &Дата2
;
ВЫБРАТЬ
    ДатыОстатков.ДатаГрафика КАК ДатаГрафика,
    ОстаткиИ.Номенклатура,
    ОстаткиИ.Склад,
    ОстаткиИ.ВНаличииНачальныйОстаток
ИЗ
    _ДатыОстатков КАК ДатыОстатков
   ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыНаСкладах.ОстаткиИОбороты(
        &Дата1,
        &Дата2,
        День,
        ,
        Склад = &Склад
        И Номенклатура = &Номенклатура) КАК ОстаткиИ
    ПО ДатыОстатков.ПериодОстатка = ОстаткиИ.Период
24 GANR
 
31.10.13
17:50
Да кстати, любителям сложных запросов советую http://sql-ex.ru/
Кaк может человек ожидaть, что его мольбaм о снисхождении ответит тот, кто превыше, когдa сaм он откaзывaет в милосердии тем, кто ниже его? Петр Трубецкой