Имя: Пароль:
1C
1С v8
Как объединить два запроса?
0 serg-lom89
 
30.03.15
10:07
Добрый день.Прошу помощи в запросе


Есть выборка справочника Ном-ра.

ВЫБРАТЬ
    Номенклатура.Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)


Есть запрос который выбирает количество дней на точке

ВЫБРАТЬ  первые 1
    РАЗНОСТЬДАТ(ТоварыНаСкладах.Регистратор.Дата, &ТекущаяДата, ДЕНЬ) КАК ВремяНаТочке,
    ТоварыНаСкладах.Регистратор.Дата КАК РегистраторДата,
    ТоварыНаСкладах.Склад КАК Склад,
    ТоварыНаСкладах.Номенклатура,
    ТоварыНаСкладах.Номенклатура.НоменклатурнаяГруппа
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    ТоварыНаСкладах.Номенклатура = &Номенклатура
    И ТоварыНаСкладах.Склад.Подразделение = &Подразделение
    И (ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Розничный)
            ИЛИ ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Оптовый))
    И ТоварыНаСкладах.Склад.ТипСклада <> ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.Виртуальный)
    И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
    И ТоварыНаСкладах.Склад = &Склад

УПОРЯДОЧИТЬ ПО
    РегистраторДата УБЫВ

как объеденить эти два запроса что бы была табличка

Ном КолводнейНаТочке

Прошу помощи ))
1 GROOVY
 
модератор
30.03.15
10:09
(0) Смотри, как я здорово переименовал твою тему, вместо того, чтобы ее закрыть по причине "тема не отражает суть сообщения".
2 serg-lom89
 
30.03.15
10:09
(1) Спасибо большое.учту след раз
3 GROOVY
 
30.03.15
10:10
По теме одного понять не могу. Нафига первый запрос?
4 Dmitriy_76
 
30.03.15
10:12
(3) чтоб выбрать даже те позиции, по которым не было движения)
5 Dmitriy_76
 
30.03.15
10:12
(0) левым соединением по номнеклатуре.
6 Spyke
 
30.03.15
10:14
7 smitru
 
30.03.15
10:15
(0) Только в выборке номенклатуры поставь "Выбрать различные", иначе из-за "в Иерархии" поймаешь кучу дублей.
8 serg-lom89
 
30.03.15
10:18
(7) Это для проверки я делал просто,что бы выборку ссформировать
9 smitru
 
30.03.15
10:19
(8) Пиши сразу "правильно" (ведь изначально вставить "Различные" - это не трудно) :-)
10 serg-lom89
 
30.03.15
10:22
Когда объеденил 2 запроса через левое соед. по ном-ре,что то результата никакого.хотя когда 2- запрос выполняю то результат есть(данные)
11 smitru
 
30.03.15
10:23
(10) А что у тебя "слева" и как объединяешь?

Приведи полный код своего запроса
12 smitru
 
30.03.15
10:24
(10) Ты убрал при этом из ГДЕ
  ТоварыНаСкладах.Номенклатура = &Номенклатура
    И ТоварыНаСкладах.Склад.Подразделение = &Подразделение
13 User_Agronom
 
30.03.15
10:29
ОБЪЕДИНИТЬ ВСЕ не предлагали еще? Всё объединяет))
14 serg-lom89
 
30.03.15
10:29
ВЫБРАТЬ
    ВложенныйЗапрос.Ссылка,
    ДнейОсталосьНаТочке.ВремяНаТочке,
    ДнейОсталосьНаТочке.РегистраторДата,
    ДнейОсталосьНаТочке.Склад,
    ДнейОсталосьНаТочке.Номенклатура
ИЗ
    (ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка
    ИЗ
        Справочник.Номенклатура КАК Номенклатура
    ГДЕ
        Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)) КАК ВложенныйЗапрос
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            РАЗНОСТЬДАТ(ТоварыНаСкладах.Регистратор.Дата, &ТекущаяДата, ДЕНЬ) КАК ВремяНаТочке,
            ТоварыНаСкладах.Регистратор.Дата КАК РегистраторДата,
            ТоварыНаСкладах.Склад КАК Склад,
            ТоварыНаСкладах.Номенклатура КАК Номенклатура
        ИЗ
            РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        ГДЕ
            ТоварыНаСкладах.Склад.Подразделение = &Подразделение
            И (ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Розничный)
                    ИЛИ ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Оптовый))
            И ТоварыНаСкладах.Склад.ТипСклада <> ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.Виртуальный)
            И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                        И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
            И ТоварыНаСкладах.Склад = &Склад
        
        УПОРЯДОЧИТЬ ПО
            РегистраторДата УБЫВ) КАК ДнейОсталосьНаТочке
        ПО ВложенныйЗапрос.Ссылка = ДнейОсталосьНаТочке.Номенклатура
ГДЕ
    (НЕ ДнейОсталосьНаТочке.ВремяНаТочке ЕСТЬ NULL )
15 serg-lom89
 
30.03.15
10:30
вот запрос мой..для выбранной ном-ры срабатываетЮдля ном которая в папке нет
16 serg-lom89
 
30.03.15
10:30
(НЕ ДнейОсталосьНаТочке.ВремяНаТочке ЕСТЬ NULL )-эта строчка не нужна
17 hhhh
 
30.03.15
10:33
ВЫБРАТЬ ПЕРВЫЕ 1  - значит, одна строчка у вас будет. Почему вы тогда о табличке говорите?
18 serg-lom89
 
30.03.15
10:38
как тогда объеденить таблицу спр номенклатуры,и таблицу из 2 запроса..(те.е создать таблицу с последними данными(как выбрать первые ),для моей ном-ры)?
19 smitru
 
30.03.15
11:13
(14) Убери условие
И ТоварыНаСкладах.Склад = &Склад
А так же
   (НЕ ДнейОсталосьНаТочке.ВремяНаТочке ЕСТЬ NULL )
20 smitru
 
30.03.15
11:16
(14) Вместо "ВЫБРАТЬ ПЕРВЫЕ 1" поставь "ВЫБРАТЬ различные"

И так же вместо

ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка

Укажи
ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка,
        IsNULL(ДнейОсталосьНаТочке.ВремяНаТочке,0)
21 serg-lom89
 
01.04.15
13:35
Прошу еще помощи


вот один запрс по которому выб ном

ВЫБРАТЬ
    Номенклатура.Ссылка КАК Ссылка
ИЗ
    Справочник.Номенклатура КАК Номенклатура
ГДЕ
    Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)

2 запрос.

ВЫБРАТЬ ПЕРВЫЕ 1
    РАЗНОСТЬДАТ(ТоварыНаСкладах.Регистратор.Дата, &ТекущаяДата, ДЕНЬ) КАК ВремяНаТочке,
    ТоварыНаСкладах.Регистратор.Дата КАК РегистраторДата,
    ТоварыНаСкладах.Склад КАК Склад,
    ТоварыНаСкладах.Номенклатура КАК Номенклатура
ИЗ
    РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
ГДЕ
    (ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Розничный)
            ИЛИ ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Оптовый))
    И ТоварыНаСкладах.Склад.ТипСклада <> ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.Виртуальный)
    И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
            ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
    И ТоварыНаСкладах.Склад = &Склад

УПОРЯДОЧИТЬ ПО
    РегистраторДата УБЫВ

их я соеденил

ВЫБРАТЬ
    НОМ.Ссылка,
    ВложенныйЗапрос.ВремяНаТочке,
    ВложенныйЗапрос.РегистраторДата,
    ВложенныйЗапрос.Склад,
    ВложенныйЗапрос.Номенклатура
ИЗ
    (ВЫБРАТЬ
        Номенклатура.Ссылка КАК Ссылка
    ИЗ
        Справочник.Номенклатура КАК Номенклатура
    ГДЕ
        Номенклатура.Ссылка В ИЕРАРХИИ(&Ссылка)) КАК НОМ
        ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1
            РАЗНОСТЬДАТ(ТоварыНаСкладах.Регистратор.Дата, &ТекущаяДата, ДЕНЬ) КАК ВремяНаТочке,
            ТоварыНаСкладах.Регистратор.Дата КАК РегистраторДата,
            ТоварыНаСкладах.Склад КАК Склад,
            ТоварыНаСкладах.Номенклатура КАК Номенклатура
        ИЗ
            РегистрНакопления.ТоварыНаСкладах КАК ТоварыНаСкладах
        ГДЕ
            (ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Розничный)
                    ИЛИ ТоварыНаСкладах.Склад.ВидСклада = ЗНАЧЕНИЕ(Перечисление.ВидыСкладов.Оптовый))
            И ТоварыНаСкладах.Склад.ТипСклада <> ЗНАЧЕНИЕ(Перечисление.ТипыСкладов.Виртуальный)
            И (ТоварыНаСкладах.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПеремещениеТоваров
                        И ТоварыНаСкладах.ВидДвижения = ЗНАЧЕНИЕ(ВидДвиженияНакопления.Приход)
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ПоступлениеТоваровУслуг
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОприходованиеТоваров
                    ИЛИ ТоварыНаСкладах.Регистратор ССЫЛКА Документ.ОтчетОРозничныхПродажах)
            И ТоварыНаСкладах.Склад = &Склад
        
        УПОРЯДОЧИТЬ ПО
            РегистраторДата УБЫВ) КАК ВложенныйЗапрос
        ПО НОМ.Ссылка = ВложенныйЗапрос.Номенклатура

и результат нету в графе на время на точке
хотя если выполнить запрос 2 по ном-ре с отбором,результат есть?
подскажите пожалуйста что не так?
22 serg-lom89
 
01.04.15
13:40
что бы для выборки из справочники выводилось время на точке если есть,или было поле пустое если нету его
23 serg-lom89
 
01.04.15
13:45
в запросе 2 был еще отбор по ном-ре
24 hhhh
 
01.04.15
13:49
(22) ну уберите ВЫБРАТЬ ПЕРВЫЕ 1. Оно у вас выбирает одну (самую первую) номенклатуру. Она не совпадает с номенклатурой из первого запроса.
25 serg-lom89
 
01.04.15
13:51
(24) так мне из запроса 2 нужен последняя его запись
26 serg-lom89
 
01.04.15
13:51
нужна*