Простой запрос с левым соединением #578909


#0 by BOFFKA
ПартииТоваровНаСкладах.Номенклатура = &Номенклатура    И ПартииТоваровНаСкладах.Период МЕЖДУ &Период И &кон    И ПартииТоваровНаСкладах.КодОперации = &КодОперации    И Продажи.Период МЕЖДУ &Период И &кон Почему он выводит в два раза больше движений, чем есть в регистре продаж?
#1 by shuhard
сгруппируй
#2 by Нуф-Нуф
ужаснах. параметры виртуальных таблиц нам неизвестны?
#3 by BOFFKA
а какая из этих таблиц виртуальная???
#4 by Нуф-Нуф
а не, беру слова обратно.
#5 by BOFFKA
группировка не подойдёт. Это кусок запроса, дальше хуже, поэтому с группировкой не получится.
#6 by BOFFKA
Разве я не правильно понимаю, что левое соединение, это записи из одной таблицы плюс те поля которые есть во второй?
#7 by DEVIce
На количество селеклисте сумму применить и сгруппировать по номенклатуре.
#8 by Не Печенкин
а Продажи регистратором ограничивать не надо?
#9 by shuhard
вынеси в подзапрос и сгруппируй, у тебя две записи  в партиях на одну в продажах
#10 by Evpatiy
может быть каждой строке регистра "Продажи" соответствует несколько строк регистра "партии" по указанной связи?
#11 by DEVIce
. Зачем еще подзапрос? Сгруппировать можно и так.
#12 by Evpatiy
При группировке у него сумма увеличится
#13 by BOFFKA
документ оформлен двумя строками. по регистрам прошёл тоже двумя. всё из одной партии
#14 by DEVIce
. Ну все правильно.
#15 by Не Печенкин
ты ответишь на ?
#16 by DEVIce
Вообще, как-бы принято в условии первыми пихать выражения по основной таблице. Это я так, поворчал. :)
#17 by shuhard
тебе большими буквами группировка написать ?
#18 by Михаил Козлов
Группировать нужно до соединения, чтобы была 1 строка на номенклатуру.
#19 by shuhard
#20 by Evpatiy
Так у него суммы будут удвоены и утроены
#21 by Evpatiy
+ Не о том, видимо, подумал.
#22 by BOFFKA
Итак: есть номенклатура1, из одной партии, продано в реализации 8 штук (4+4), при таком раскладе группировка ВЫБРАТЬ    ПартииТоваровНаСкладах.Номенклатура = &Номенклатура    И ПартииТоваровНаСкладах.Период МЕЖДУ &Период И &кон    И ПартииТоваровНаСкладах.КодОперации = &КодОперации    И Продажи.Период МЕЖДУ &Период И &кон выдаёт 16 штук
#23 by DEVIce
И таки да, выше совершенно справедливо заметили: надо связывать таблицы по регистратору. А то на один документ соберешь движения всех по номенклатуре.
#24 by BOFFKA
группировать вложенную Продажи ?
#25 by DEVIce
. Смотри .
#26 by shuhard
все верно, нет подзапроса - херовый результат неожиданно ?
#27 by DEVIce
ВЫБРАТЬ        ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ПартииТоваровНаСкладах КАК ПартииТоваровНаСкладах        ПО Продажи.Номенклатура = ПартииТоваровНаСкладах.Номенклатура И        Продажи.Регистратор = ПартииТоваровНаСкладах.Регистратор    ПартииТоваровНаСкладах.Номенклатура = &Номенклатура    И ПартииТоваровНаСкладах.Период МЕЖДУ &Период И &кон    И ПартииТоваровНаСкладах.КодОперации = &КодОперации    И Продажи.Период МЕЖДУ &Период И &кон
#28 by DEVIce
. У него нет связи по регистратору. Подзапрос тут нафиг не нужен.
#29 by BOFFKA
ВЫБРАТЬ    ПартииТоваровНаСкладах.Номенклатура = &Номенклатура    И ПартииТоваровНаСкладах.Период МЕЖДУ &Период И &кон    И ПартииТоваровНаСкладах.КодОперации = &КодОперации    И Продажи.Период МЕЖДУ &Период И &кон 16
#30 by BOFFKA
По регистратору тоже связывал. не помогает
#31 by Не Печенкин
чукча не читатель?
#32 by Evpatiy
Сунь партиТоваровНаСкладах в подзапрос и сгруппируй по номенклатуре
#33 by Не Печенкин
покажи, наверняка строки с одинаковой номенклатурой
#34 by shuhard
вроде до пятницы ещё дожить надо
#35 by DEVIce
. Ты блин вообще убери из ГДЕ ПартииТоваровНаСкладах.Регистратор и напиши Продажи.Регистратор. Ты запрос строишь корне неверно. У тебя таблицы местами перепутаны похоже. :)
#36 by BOFFKA
это я в 22 написал. Да строки с одинаковой номенклатурой.
#37 by DEVIce
Кстати, обратите внимание, он данные берет только из Продажи, а соединяет партии, только чтобы наложить условия. Короче, запрос написан через *опу.
#38 by shuhard
прикольно ответ дан сразу группировка в подзапросе
#39 by DEVIce
Накера ставить услоие на период, если выборка идет по регистратору? В индекс попасть что-ли хочет? И много всяких других косяков.
#40 by BOFFKA
#41 by DEVIce
Автор. Напиши словами что хочешь получить.
#42 by shuhard
автор ты читать умеешь ?
#43 by Evpatiy
ОФФ: В лоб от архитектора :))
#44 by BOFFKA
пишу отчет по Валовой. Запрос для продаж такой ВЫБРАТЬ РАЗРЕШЕННЫЕ    Продажи.Номенклатура КАК Номенклатура,    ПартииТоваровНаСкладах.Количество КАК КоличествоПар, ГДЕ    Продажи.Период МЕЖДУ &ДатаНач И &ДатаКон    И Продажи.Количество > 0    И Продажи.Регистратор ССЫЛКА Документ.РеализацияТоваровУслуг И столкнулся с тем что в доках с одинаковой номенклатурой двоится инфа
#45 by DEVIce
. Хыыыы. Не это конечно тоже словами написано, но имел в виду письменную речь, а не код. :)
#46 by BOFFKA
я решил развернуто ответить)))
#47 by DEVIce
. С этим кодом понятно, ты чего хочешь чтобы он стал делать?
#48 by BOFFKA
мне нужно чтобы он мне дал две записи по 4 шт. Либо одну 8.
#49 by BOFFKA
Я не понимаю почему двоит. Такая группировка ВЫБРАТЬ    ПродажиТаб.Номенклатура,    ПродажиТаб.Количество ИЗ    И ПартииТоваровНаСкладах.Период МЕЖДУ &Период И &кон
#50 by shuhard
ни чё, что вложенный запрос должен идти по партиям ?
#51 by BOFFKA
ВЫБРАТЬ            ПартииТоваровНаСкладах.Номенклатура = &Номенклатура            И ПартииТоваровНаСкладах.Период МЕЖДУ &Период И &кон КОличество продажи правильное, но партии задвоены
#52 by shuhard
пациент безнадёжен
#53 by BOFFKA
покажи как нужно. вдруг пациент прозреет
#54 by DEVIce
. Щас сделаю: ВЫБРАТЬ ПЕРВЫЕ 1
#55 by DEVIce
А не, вот так надо: ВЫБРАТЬ ПЕРВЫЕ 1    &Номенклатура КАК Номенклатура,    8 КАК Количество ИЗ    РегистрНакопления.Продажи КАК Продажи
#56 by Buster007
дык и по Период надо тоже связывать.
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям