Имя: Пароль:
1C
1С v8
параметры виртуальной таблицы регистра накоплений
0 SergeySergIT
 
15.05.14
13:14
есть 2 запроса и надо чтоб результаты первого стали параметрами виртуальной таблицы второго

первый

ВЫБРАТЬ
    ДОБАВИТЬКДАТЕ(&НачалоПериода, ДЕНЬ, aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d) КАК Период
{ВЫБРАТЬ
    Период}
ИЗ
    (ВЫБРАТЬ
        0 КАК a
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        1
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        2
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        3
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        4
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        5
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        6
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        7
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        8
    
    ОБЪЕДИНИТЬ
    
    ВЫБРАТЬ
        9) КАК aa
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК b
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК bb
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК c
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК cc
        ПО (ИСТИНА)
        ПОЛНОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
            0 КАК d
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            1
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            2
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            3
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            4
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            5
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            6
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            7
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            8
        
        ОБЪЕДИНИТЬ
        
        ВЫБРАТЬ
            9) КАК dd
        ПО (ИСТИНА)
ГДЕ
    aa.a * 1000 + bb.b * 100 + cc.c * 10 + dd.d <= РАЗНОСТЬДАТ(&НачалоПериода, &КонецПериода, ДЕНЬ)

второй

ВЫБРАТЬ РАЗРЕШЕННЫЕ
    &Период КАК Период,
    СУММА(ВложенныйЗапрос.Количество) КАК Количество,
    ВложенныйЗапрос.Номенклатура
{ВЫБРАТЬ
    Период}
ИЗ
    (ВЫБРАТЬ
        &Период КАК Период,
        ТоварыНаСкладах.Склад КАК Склад,
        ТоварыНаСкладах.Номенклатура КАК Номенклатура,
        ВЫБОР
            КОГДА ТоварыНаСкладах.КоличествоОстаток > 0
                ТОГДА 1
            ИНАЧЕ 0
        КОНЕЦ КАК Количество
    {ВЫБРАТЬ
        Период,
        Склад.*,
        Номенклатура.*,
        Количество}
    ИЗ
        РегистрНакопления.ТоварыНаСкладах.Остатки(&Период, ) КАК ТоварыНаСкладах
    {ГДЕ
        ТоварыНаСкладах.Склад.*,
        ТоварыНаСкладах.Номенклатура.*,
        ТоварыНаСкладах.КоличествоОстаток КАК Количество}) КАК ВложенныйЗапрос

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.Номенклатура


в первом результат "период" он и должен встать как параметр виртуальной таблицы во втором
1 Лаврентий Берия
 
15.05.14
13:19
неа
2 Shurjk
 
15.05.14
13:19
Ну и запихай это запрос в параметр.
3 SergeySergIT
 
15.05.14
13:21
(2) как?
4 Shurjk
 
15.05.14
13:22
(3) А не с датой не получиться.
5 Shurjk
 
15.05.14
13:23
+(4) Если только изратиться и дату как то в строку преобразовать.
6 SergeySergIT
 
15.05.14
13:24
(5) да не это херня выйдет
7 agorbunov
 
15.05.14
13:26
Используй ОстаткиИОбороты. Тогда и первый запрос не понадобится.
8 Jokero
 
15.05.14
13:27
а передать результат как параметр: &РезультатПервогоЗапроса
9 Shurjk
 
15.05.14
13:29
(8) Если значение не одно то не поможет.
10 Shurjk
 
15.05.14
13:33
(6) Почему?
11 Рэйв
 
15.05.14
13:33
(0)Сделай два отдельных запроса. Чего мучаешься? По скорости - одинаково с пакетным
12 SergeySergIT
 
15.05.14
13:34
(10) итог мне нужен сколько дней товар был на остатках
13 SergeySergIT
 
15.05.14
13:35
(7) остатки и оборот даже с периодичностью в день показывают только когда есть движения если движений нет ничего не получиться
14 SergeySergIT
 
15.05.14
13:42
(4) а с числом если список чисел как в параметр загнать?
15 hhhh
 
15.05.14
13:44
(13) а мужики-то и не знают.
16 SergeySergIT
 
15.05.14
13:45
(15) чего?
17 Shurjk
 
15.05.14
13:46
(12) Его из нормального значения посчитаешь.
18 Shurjk
 
15.05.14
13:47
(15) Подозреваю что мужики еще много не знают об истинных целях этого запроса.
19 SergeySergIT
 
15.05.14
13:49
(18) цель получить количество дней сколько товар присутствовал на остатках в заданном периоде
20 agorbunov
 
15.05.14
14:33
Тогда бери остатки и обороты с параметром "ДвиженияИГраницы" и периодичностью ДЕНЬ. Помешай во временную таблицу. Потом цепляешь ее к себе же по нужным измерениям, ищешь следующий период (через МИНИМУМ и условия в ЛЕВОМ соединении). Получаешь интервалы между движениями. и смотришь, сколько было в этом интервале. Если 0 - тогда отсутствовал, если > 0 - присутсвовал, длину интервала через разностьдат считаешь. А потом суммируешь по номенклатуре.