|
Почему не работает запрос? |
☑ |
0
atis30
01.11.13
✎
17:49
|
Запрос в динамическом списке.
В таком варианте данные есть :
ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Номер,
ЗаказПокупателя.Дата
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
А в таком пусто :
ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Номер,
ЗаказПокупателя.Дата,
ОтгрузкаЗаказы.Ссылка КАК Отгрузка
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Отгрузка.Заказы КАК ОтгрузкаЗаказы
ПО (ЗаказПокупателя.Ссылка = ОтгрузкаЗаказы.Заказ) И (ОтгрузкаЗаказы.Ссылка.ПометкаУдаления = ЛОЖЬ)
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
Хотя по идее отличаются одной колонкой. В чем причина?
|
|
1
Beduin
01.11.13
✎
17:55
|
(0) У тебя сначала соединение отработало, а потом отбор по этому соединению.
|
|
2
atis30
01.11.13
✎
17:58
|
ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Номер,
ЗаказПокупателя.Дата,
ОтгрузкаЗаказы.Ссылка КАК Отгрузка
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Отгрузка.Заказы КАК ОтгрузкаЗаказы
ПО (ЗаказПокупателя.Ссылка = ОтгрузкаЗаказы.Заказ) И (ОтгрузкаЗаказы.Ссылка.ПометкаУдаления = ЛОЖЬ) И
(ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания)
Ничего не меняет
|
|
3
Basilio
01.11.13
✎
18:01
|
проверь в консоли
|
|
4
vvp91
01.11.13
✎
18:01
|
>> (1) В чем причина?
Потому что (ОтгрузкаЗаказы.Ссылка.ПометкаУдаления = ЛОЖЬ) - это внутреннее соединение с ведущей таблицей.
После этого заказов, на которые нет ссылок в отгрузке, не будет в результате запросов.
Разыменование в запросе (через две точки) - это плохо, поскольку неявно, неуправляемо и неизвестно как будет отработано платформой.
Надо писать явно:
ВЫБРАТЬ
Заказы.Ссылка,
Заказы.Номер,
Заказы.Дата,
Отгрузки.Ссылка КАК Отгрузка
ИЗ
Документ.РеализацияТоваровУслуг КАК Отгрузки
ВНУТРЕННЕЕ СОЕДИНЕНИЕ Документ.РеализацияТоваровУслуг.Товары КАК СтрокиОтгрузок
ПО СтрокиОтгрузок.Ссылка = Отгрузки.Ссылка
И НЕ Отгрузки.ПометкаУдаления
ПРАВОЕ СОЕДИНЕНИЕ Документ.ЗаказКлиента КАК Заказы
ПО СтрокиОтгрузок.ЗаказКлиента = Заказы.Ссылка
ГДЕ
Заказы.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
|
5
vvp91
01.11.13
✎
18:02
|
>> (1) У тебя сначала соединение отработало, а потом отбор по этому соединению.
Это неверно.
Сообщение (4) - ответ на (0).
|
|
6
Beduin
01.11.13
✎
18:04
|
(5) Да, точно! Наложение условий на таблицу которая получается. В запросах последовательности нет.
|
|
7
atis30
01.11.13
✎
18:11
|
Да, вобщем-то так тоже не работает
ВЫБРАТЬ
ЗаказПокупателя.Ссылка,
ЗаказПокупателя.Номер,
ЗаказПокупателя.Дата,
ОтгрузкаЗаказы.Ссылка КАК Отгрузка
ИЗ
Документ.ЗаказПокупателя КАК ЗаказПокупателя
ЛЕВОЕ СОЕДИНЕНИЕ Документ.Отгрузка.Заказы КАК ОтгрузкаЗаказы
ПО (ЗаказПокупателя.Ссылка = ОтгрузкаЗаказы.Заказ)
ГДЕ
ЗаказПокупателя.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
|
|
8
Мимохожий Однако
01.11.13
✎
18:31
|
Вероятно, текст запроса не полный. Что является источником для второй таблицы?
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший