Имя: Пароль:
1C
1С v8
Помогите с запросом.
, ,
0 Andreyyy
 
10.02.12
12:52
ТекстЗапроса = "ВЫБРАТЬ
                      |    ВложенныйЗапрос.Автомашина КАК Автомашина,
                      |    СУММА(ВложенныйЗапрос.КоличествоКонечныйОстаток) КАК КоличествоКонечныйОстаток,
                      |    СУММА(ВложенныйЗапрос.СуммаАмортизации) КАК СуммаАмортизации,
                      |    д_ПутевыеЛисты.Ссылка КАК ПутевойЛист
                      |ИЗ
                      |    (ВЫБРАТЬ
                      |        д_ОстаткиГСМОстаткиИОбороты.Автомашина КАК Автомашина,
                      |        д_ОстаткиГСМОстаткиИОбороты.КоличествоКонечныйОстаток КАК КоличествоКонечныйОстаток,
                      |        ТаблицаАмортизации.СуммаАмортизации КАК СуммаАмортизации
                      |    ИЗ
                      |        РегистрНакопления.д_ОстаткиГСМ.ОстаткиИОбороты(
                      |                &ДатаНач,
                      |                &ДатаКон,
                      |                Регистратор,
                      |                ,
                      |                ВидРасхода = ЗНАЧЕНИЕ(Перечисление.д_ВидыРасходов.Запчасти)
                      |                    ИЛИ ВидРасхода = ЗНАЧЕНИЕ(Перечисление.д_ВидыРасходов.Услуги)) КАК д_ОстаткиГСМОстаткиИОбороты
                      |            ПОЛНОЕ СОЕДИНЕНИЕ ТаблицаАмортизации КАК ТаблицаАмортизации
                      |            ПО д_ОстаткиГСМОстаткиИОбороты.Автомашина = ТаблицаАмортизации.Автомашина
                      |    ГДЕ
                      |        д_ОстаткиГСМОстаткиИОбороты.КоличествоКонечныйОстаток > 0
                      |        И д_ОстаткиГСМОстаткиИОбороты.Регистратор.Дата >= &ДатаНач
                      |        И д_ОстаткиГСМОстаткиИОбороты.Регистратор.Дата <= &ДатаКон) КАК ВложенныйЗапрос
                      |        ПОЛНОЕ СОЕДИНЕНИЕ Документ.д_ПутевыеЛисты КАК д_ПутевыеЛисты
                      |        ПО ВложенныйЗапрос.Автомашина = д_ПутевыеЛисты.Автомашина
                      |ГДЕ
                      |    д_ПутевыеЛисты.Дата >= &ДатаНач
                      |    И д_ПутевыеЛисты.Дата <= &ДатаКон
                      |    И д_ПутевыеЛисты.ВидОперации = ЗНАЧЕНИЕ(Перечисление.д_ВидыОперацийПутевыеЛисты.ПринудительноеРаспределение)
                      |
                      |СГРУППИРОВАТЬ ПО
                      |    ВложенныйЗапрос.Автомашина,
                      |    д_ПутевыеЛисты.Ссылка
                      |ИТОГИ
                      |    СУММА(КоличествоКонечныйОстаток),
                      |    СУММА(СуммаАмортизации)
                      |ПО
                      |    Автомашина,
                      |    ПутевойЛист";

Дело в том, что если таблица "д_ПутевыеЛисты" пустая, то запрос пустой, а мне нужно чтобы в таком случае поле "ПутевойЛист" имело значение Null. Что делаю не так, соединение как бы полное и таблица "ВложенныйЗапрос" должна попадать в результат запроса.
1 depthzer0
 
10.02.12
12:58
а если удалить д_ПутевыеЛисты, то как результат?
2 Andreyyy
 
10.02.12
13:05
(1) Все в шоколаде тогда.
3 depthzer0
 
10.02.12
13:08
а левое если соединение?
4 Griffin
 
10.02.12
13:11
(0) Забейте данные с условиями в отдельные временные таблицы и только потом соединяйте
5 Andreyyy
 
10.02.12
13:15
(3) Нельзя ни левое ни правое, в обоих таблицах могут быть (и нужны) значения Null
(4) Можно конечно, но интересно почему так не хочет работать.
6 depthzer0
 
10.02.12
13:16
(5) можно в качестве проверки сделать?
7 Griffin
 
10.02.12
13:30
(0) Попробуйте убрать условие на всю выборку, т.к. если "д_ПутевыеЛисты" пустая, то условие не выполнится
8 Andreyyy
 
10.02.12
13:30
(6) С левым соединением тоже пусто, если таблицу "д_ПутевыеЛисты" совсем удаляю, то записи есть.
9 depthzer0
 
10.02.12
13:35
условие

ГДЕ
                      |    д_ПутевыеЛисты.Дата >= &ДатаНач
                      |    И д_ПутевыеЛисты.Дата <= &ДатаКон
                      |    И д_ПутевыеЛисты.ВидОперации = ЗНАЧЕНИЕ(Перечисление.д_ВидыОперацийПутевыеЛисты.ПринудительноеРаспределение)

нужно перенести в связи
10 Andreyyy
 
10.02.12
13:39
(9) Спасибо, видимо так и нужно сделать.
У меня уже через вложенный запрос получилось.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший