Имя: Пароль:
1C
1С v8
Выборка из результата запроса
0 kollers_vrn
 
16.04.15
17:54
Народ помогите пожалуйста что сделано не так.Нужно выводить ВСЕ автоматы которые есть у оператора, а выводит только те по которым прошла инвентаризация

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

СГРУППИРОВАТЬ ПО
    ОбслуживаниеАвтоматов.Автомат
    ИнвентаризацияТоваровНаСкладе.Ссылка,
    ВложенныйЗапрос.Сумма,
    ВложенныйЗапрос.СуммаУчет,
    ИнвентаризацияТоваровНаСкладе.Склад.Автомат.Наименование
1 Dmitrii
 
гуру
16.04.15
17:59
(0) Ну тык ты ж в условиях (в ГДЕ) написал, сто тебе непременно нужно чтобы были реквизиты (Дата, Ответсвенный) из таблицы ИнвентаризацияТоваровНаСкладе.
2 Dmitrii
 
гуру
16.04.15
18:00
(1) либо переноси эту ересь в условия соединения, либо предусмотри НЕ ЕСТЬ NULL
3 kollers_vrn
 
16.04.15
18:02
не пиняйте сильно, я новичок... там я пытаюсь прописать условия которые мне нужно выводить инвентаризацию (т.е. все автоматы у которых была инвентаризация в периоде у данного оператора
4 Dmitrii
 
гуру
16.04.15
18:06
(3) Ты уж определиь чего ты хочешь. А то в (0) ты пишешь: "Нужно выводить ВСЕ автоматы", в (3): "автоматы у которых была инвентаризация"

Так все или "только те по которым прошла инвентаризация" (цитата твоя)?
5 kollers_vrn
 
16.04.15
18:10
1) нужно выводить ВСЕ автоматы которые есть у оператора 2)если прошел инвентаризацию тогда заполнили ИнвентаризацияТоваровНаСкладе.Ссылка, а если нет документа тогда все равно вывели строку с автоматом, но с пустой строчкой по инвентаризации... вот и как так сделать?
6 Salimbek
 
16.04.15
18:14
(5) Поменяй слово "ГДЕ" на "И"
З.Ы. Меня одного бесит сначала описание соединяемых таблиц (внутреннее соединение... левое соединение...) а потом куча соединений внизу (по... по...), разбирайся потом - куда чего соединено...
7 sapphire
 
17.04.15
07:36
(6) Именно
(5),(0)
ВЫБРАТЬ
    ОбслуживаниеАвтоматов.Автомат КАК Автомат,
    ИнвентаризацияТоваровНаСкладе.Ссылка,
    ВложенныйЗапрос.Сумма,
    ВложенныйЗапрос.СуммаУчет,
    ИнвентаризацияТоваровНаСкладе.Склад.Автомат.Наименование
ИЗ
    РегистрСведений.ОбслуживаниеАвтоматов КАК ОбслуживаниеАвтоматов
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                СУММА(ИнвентаризацияТоваровНаСкладеТовары.Сумма) КАК Сумма,
                СУММА(ИнвентаризацияТоваровНаСкладеТовары.СуммаУчет) КАК СуммаУчет,
                ИнвентаризацияТоваровНаСкладеТовары.Ссылка КАК Ссылка
            ИЗ
                Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
            
            СГРУППИРОВАТЬ ПО
                ИнвентаризацияТоваровНаСкладеТовары.Ссылка) КАК ВложенныйЗапрос
            ПО ИнвентаризацияТоваровНаСкладе.Товары.Ссылка = ВложенныйЗапрос.Ссылка
        ПО ОбслуживаниеАвтоматов.Автомат.СкладАвтомата.Ссылка = ИнвентаризацияТоваровНаСкладе.Склад.Ссылка
        И
//ГДЕ
    ИнвентаризацияТоваровНаСкладе.Дата >= &ДатаН
    И ИнвентаризацияТоваровНаСкладе.Дата <= &ДатаК
    И ИнвентаризацияТоваровНаСкладе.Склад.Автомат.ПроцессАвтомата.Ответственный = &Оператор

СГРУППИРОВАТЬ ПО
    ОбслуживаниеАвтоматов.Автомат
    ИнвентаризацияТоваровНаСкладе.Ссылка,
    ВложенныйЗапрос.Сумма,
    ВложенныйЗапрос.СуммаУчет,
    ИнвентаризацияТоваровНаСкладе.Склад.Автомат.Наименование
8 kollers_vrn
 
17.04.15
12:55
и так поставил все равно не выводит все которые закреплены за оператором (выводит только те по которых прошла инвентаризация)
ВЫБРАТЬ
    ОбслужАвтоматы.Автомат.Автомат КАК Автомат,
    ИнвентаризацияТоваровНаСкладе.Ссылка
ИЗ
    РегистрСведений.ОбслуживаниеАвтоматов.СрезПоследних(&ДатаКонца, ) КАК ОбслужАвтоматы
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
        ПО ОбслужАвтоматы.Автомат.СкладАвтомата = ИнвентаризацияТоваровНаСкладе.Склад
            И (ОбслужАвтоматы.Пользователь = &Оператор)
            И ((НЕ ОбслужАвтоматы.Автомат.Автомат ЕСТЬ NULL ))
            И (ИнвентаризацияТоваровНаСкладе.Склад.Автомат.ПроцессАвтомата.Ответственный = &Оператор)
            И (ОбслужАвтоматы.Автомат.Ответственный = &Оператор)

СГРУППИРОВАТЬ ПО
    ОбслужАвтоматы.Автомат.Автомат,
    ИнвентаризацияТоваровНаСкладе.Ссылка

УПОРЯДОЧИТЬ ПО
    Автомат
9 kollers_vrn
 
17.04.15
15:57
о допетрил, другой вопрос как можно оптимизировать данный запрос по быстродействию
ВЫБРАТЬ
    ОбслужАвтоматы.Автомат.Автомат КАК Автомат,
    ИнвентаризацияТоваровНаСкладе.Ссылка,
    ВложенныйЗапрос.Сумма,
    ВложенныйЗапрос.СуммаУчет
ИЗ
    РегистрСведений.ОбслуживаниеАвтоматов.СрезПоследних(&ДатаКонца, ) КАК ОбслужАвтоматы
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ИнвентаризацияТоваровНаСкладе КАК ИнвентаризацияТоваровНаСкладе
            ВНУТРЕННЕЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
                СУММА(ИнвентаризацияТоваровНаСкладеТовары.Сумма) КАК Сумма,
                СУММА(ИнвентаризацияТоваровНаСкладеТовары.СуммаУчет) КАК СуммаУчет,
                ИнвентаризацияТоваровНаСкладеТовары.Ссылка КАК Ссылка
            ИЗ
                Документ.ИнвентаризацияТоваровНаСкладе.Товары КАК ИнвентаризацияТоваровНаСкладеТовары
            
            СГРУППИРОВАТЬ ПО
                ИнвентаризацияТоваровНаСкладеТовары.Ссылка) КАК ВложенныйЗапрос
            ПО ИнвентаризацияТоваровНаСкладе.Товары.Ссылка = ВложенныйЗапрос.Ссылка
        ПО ОбслужАвтоматы.Автомат.СкладАвтомата = ИнвентаризацияТоваровНаСкладе.Склад
        И ИнвентаризацияТоваровНаСкладе.Дата >= &ДатаН
        И ИнвентаризацияТоваровНаСкладе.Дата <= &ДатаК
ГДЕ
    ОбслужАвтоматы.Автомат.Ответственный = &Оператор
10 sapphire
 
17.04.15
16:29
(9) Убрать многоточия
11 asady
 
17.04.15
16:30
(9)
ПО ИнвентаризацияТоваровНаСкладе.Товары.Ссылка = ВложенныйЗапрос.Ссылка

тут косяк
надо

ПО ИнвентаризацияТоваровНаСкладе.Ссылка = ВложенныйЗапрос.Ссылка
12 kollers_vrn
 
17.04.15
16:38
(11) asady, огромное спасибо, все заработало, а можно объяснить на пальцах где моя ошибка? я же ссылаюсь на те товары которые в вложеном
13 Salimbek
 
17.04.15
16:55
(12) А какая алгоритимческая разница, если ты ссылаешься на Документ через его ссылку, или на его Табличную часть, из которой берешь ту же самую ссылку?
Второе просто тяжелее для СКЛ-а, т.к. доп. таблицу с большим количеством строк надо соединять.