Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Почему выполняется не тот запрос, который написан в 1С ?

Почему выполняется не тот запрос, который написан в 1С ?
Я
   Flutt1
 
08.05.21 - 10:39
Здравствуйте, запрос:

ВЫБРАТЬ
    ТоварыНаСервере.*
ПОМЕСТИТЬ ТоварыНаСервере
ИЗ
    &ТоварыНаСервере КАК ТоварыНаСервере
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Товары.*
ПОМЕСТИТЬ Товары
ИЗ
    &Товары КАК Товары
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ТоварыНаСервере.Номенклатура КАК Номенклатура,
    ТоварыНаСервере.Характеристика КАК Характеристика,
    ТоварыНаСервере.Серия КАК Серия,
    ТоварыНаСервере.Упаковка КАК Упаковка,
    ТоварыНаСервере.КоличествоУпаковок КАК Количество,
    ТоварыНаСервере.КоличествоУпаковок КАК КоличествоУпаковок,
    ТоварыНаСервере.СтатусУказанияСерий КАК СтатусУказанияСерий,
        ТоварыНаСервере.НомерСтрокиВДокументе КАК НомерСтрокиВДокументе
ИЗ
    ТоварыНаСервере КАК ТоварыНаСервере
        ЛЕВОЕ СОЕДИНЕНИЕ Товары КАК Товары
        ПО ТоварыНаСервере.Номенклатура = Товары.Номенклатура
            И ТоварыНаСервере.Характеристика = Товары.Характеристика

По какой-то причине результат запроса получается такой, как будто у меня идет ПОЛНОЕ СОЕДИНЕНИЕ, а не ЛЕВОЕ.
Попробовал вместо звездочки (.*) прописать поля таблиц полностью, тогда результатом запроса получается временная таблица ТоварыНаСервере. Причем, временная таблица Товары куда-то пропала (проверяю через Запрос.МенеджерВременныхТаблиц.Таблицы). Как такое может быть? Минус мозг.
   brainguard
 
1 - 08.05.21 - 10:49
(0) Как определили, что ПОЛНОЕ?
   Flutt1
 
2 - 08.05.21 - 10:54
(1) В первой таблице 8 строк, а во второй 2 строки. В результате получается 16 строк
   brainguard
 
3 - 08.05.21 - 10:59
(2) Неправильный метод. Такое может быть и при левом и при внутреннем соединении. Полное соединение - это левое плюс правое.
И зачем вам левое соединение, если вы используете только поля левой таблицы? В этом нет никакого смысла
   Flutt1
 
4 - 08.05.21 - 11:05
(3) Извините, да, я убрал поле
ЕСТЬNULL(ТоварыНаСервере.КоличествоУпаковокФакт, Товары.КоличествоУпаковокФакт) КАК КоличествоУпаковокФакт
, именно для этого нужна вторая таблица
   Flutt1
 
5 - 08.05.21 - 11:08
Аа, стоп, этого поля же нет в итоговом тексте запроса.. Тогда действительно, вторая таблица не нужна. Видимо из-за этого запрос неправильно в sql преобразуется. Спасибо
   brainguard
 
6 - 08.05.21 - 11:10
(4) ТоварыНаСервере.КоличествоУпаковокФакт никогда не примет значение NULL
А что касается произведения таблиц. Концептуально любое соединение есть произведение таблиц с последующим фильтрованием результата

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.