Имя: Пароль:
1C
1С v8
Запрос.
0 Vladislava-smile
 
26.01.15
03:59
Не правильно работает запрос.
Помогите разобраться, пжлст.
Есть 3 связанных документа - Планирование, расчет, корректировка.
Если все 3 документа созданы, то запрос работает, если же корректировки просто нет, док-т планирования он не выводит.

ВЫБРАТЬ
    ДЭМ_ПланированиеЗаказаИзделия.Ссылка.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.Количество,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.ИтогоТрудоемкость,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Ссылка КАК Ссылка1,
    СУММА(ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.СуммарнаяТрудоемкость) КАК СуммарнаяТрудоемкость,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.Количество * ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.ИтогоТрудоемкость КАК Поле1
ИЗ
    Документ.ДЭМ_ПланированиеЗаказа.Изделия КАК ДЭМ_ПланированиеЗаказаИзделия
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДЭМ_КорректировкаСтоимостиИзделия.Трудозатраты КАК ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты
        ПО (ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка = ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка)
ГДЕ
    ДЭМ_ПланированиеЗаказаИзделия.Ссылка.Проведен = ИСТИНА
    И ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Проведен = ИСТИНА
    И ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    ДЭМ_ПланированиеЗаказаИзделия.Ссылка.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.Количество,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.ИтогоТрудоемкость,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Ссылка,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка
1 SeraFim
 
26.01.15
04:19
Условие "ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Проведен = ИСТИНА"
поставь в условие соединения
2 Escander
 
26.01.15
04:21
(1) +1, ГДЕ отрабатывает после соединение, Неопределено != Истина.
3 SeraFim
 
26.01.15
04:27
Кстати:
1) Нужна фотка!
2) Нужно больше Ссылок!!!
4 Vladislava-smile
 
26.01.15
04:29
(1) - не помогло
ИЗ
    Документ.ДЭМ_КорректировкаСтоимостиИзделия.Трудозатраты КАК ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДЭМ_ПланированиеЗаказа.Изделия КАК ДЭМ_ПланированиеЗаказаИзделия
        ПО (ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Проведен = ИСТИНА)
            И (ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка = ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка)
5 SeraFim
 
26.01.15
04:36
(4) Таблицы местами поменяй)
Что к чему присоединяешь-то?)))
6 Vladislava-smile
 
26.01.15
04:38
Ну да, просто от незнания в чем проблема уже и так экспериментировала. Все равно не работает.

ИЗ
    Документ.ДЭМ_КорректировкаСтоимостиИзделия.Трудозатраты КАК ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДЭМ_ПланированиеЗаказа.Изделия КАК ДЭМ_ПланированиеЗаказаИзделия
        ПО (ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Проведен = ИСТИНА)
            И (ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка = ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка)
7 SeraFim
 
26.01.15
04:39
эээ... и что поменялось?)
8 SeraFim
 
26.01.15
05:01
Ладно, фотку вроде бы нашел, поэтому попробую объяснить,  в чем проблема)
Ты берешь записи одной таблицы (ДЭМ_ПланированиеЗаказа.Изделия) и присоединяешь другую (ДЭМ_КорректировкаСтоимостиИзделия.Трудозатраты).
ЛЕВОЕ соединение означает, что берутся ВСЕ записи из первой и только НЕКОТОРЫЕ (соответствующие условию) из второй.
Поэтому очень важно какая таблица к какой присоединяется.

Далее, ошибка в (0) заключается в следующем:
Ты берешь ПланированиеЗаказа, но корректировки у тебя нету. Поэтому в ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Проведен
у тебя нету ничего! Это "Ничего" обозначается NULL
И потом у тебя проверяется NULL = ИСТИНА - ложное утверждение, поэтому в итоговой выборке ничего не получается.
ВЫБРАТЬ
    ДЭМ_ПланированиеЗаказаИзделия.Ссылка.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.Количество,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.ИтогоТрудоемкость,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Ссылка КАК Ссылка1,
    СУММА(ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.СуммарнаяТрудоемкость) КАК СуммарнаяТрудоемкость,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.Количество * ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.ИтогоТрудоемкость КАК Поле1
ИЗ
    Документ.ДЭМ_ПланированиеЗаказа.Изделия КАК ДЭМ_ПланированиеЗаказаИзделия
        ЛЕВОЕ СОЕДИНЕНИЕ Документ.ДЭМ_КорректировкаСтоимостиИзделия.Трудозатраты КАК ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты
        ПО (ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка = ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка)
    И ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Проведен = ИСТИНА
ГДЕ
    ДЭМ_ПланированиеЗаказаИзделия.Ссылка.Проведен = ИСТИНА
    И ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Проведен = ИСТИНА

СГРУППИРОВАТЬ ПО
    ДЭМ_ПланированиеЗаказаИзделия.Ссылка.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.Количество,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.Ссылка,
    ДЭМ_ПланированиеЗаказаИзделия.РасчетСтоимости.ИтогоТрудоемкость,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.Ссылка,
    ДЭМ_КорректировкаСтоимостиИзделияТрудозатраты.Ссылка.ДокРасчетСтоимостиИзделия.Ссылка
9 Vladislava-smile
 
26.01.15
05:39
Ааа, спасибо за объяснение большое, теперь понятно.
10 Vladislava-smile
 
26.01.15
05:49
А если нам нужно сравнить поле по трудоемкости в расчете и корректировке, и если они различны, выбирать данные из корректировки через что нужно делать? Я просто создаю отчет через СКД и там соответственно все через запрос надо писать. Намекните хотя бы в какую сторону шагать?
11 SeraFim
 
26.01.15
06:02
ВЫБОР
    КОГДА <УСЛОВИЕ ЧТО РАЗЛИЧНЫЕ>
       ТОГДА <ПОЛЕ ИЗ КОРРЕКТИРОВКИ>
    ИНАЧЕ <ПОЛЕ ИЗ РАСЧЕТА>
КОНЕЦ
12 Vladislava-smile
 
26.01.15
06:08
Он же вставляется после ГДЕ? На примерах тоже самое нашла, но он ругается, синтаксическая ошибка пишет
13 Vladislava-smile
 
26.01.15
08:41
Спасибо, разобралась.