Запрос к нескольким регистрам

1. pilot_Danik 21.08.24 20:26 Сейчас в теме
Привет, помогите разобраться. Вот такой запрос. Если в регистрах есть значение, то всё хорошо. А если в каком-нибудь пусто, то результат запроса тоже пустой. Мой план такой, получаю список складов, к нему присоединяю Наличие и Резерв и еще сколько отгружается по каждому складу.
ВЫБРАТЬ
	Склады.Представление КАК Представление,
	ЗапасыИПотребностиОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
	ЗапасыИПотребностиОстатки.РезервироватьНаСкладеОстаток КАК РезервироватьНаСкладеОстаток,
	ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток
ИЗ
	Справочник.Склады КАК Склады
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыИПотребности.Остатки КАК ЗапасыИПотребностиОстатки
		ПО (Склады.Представление = ЗапасыИПотребностиОстатки.Склад.Представление)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке.Остатки КАК ТоварыКОтгрузкеОстатки
		ПО (ТоварыКОтгрузкеОстатки.Склад.Представление = Склады.Представление)
ГДЕ 
	ТоварыКОтгрузкеОстатки.Номенклатура = &Номенклатура
    И	ЗапасыИПотребностиОстатки.Номенклатура = &Номенклатура
Показать


Подскажите что почитать или как правильно сделать. Спасибо.
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
3. Zevzm 21.08.24 21:28 Сейчас в теме
(1) Зачем вам левые соединения если отбора по складу все равно нет. Сделайте два запроса к остаткам, отбор по Номенклатуре укажите в параметрах ВТ, объедините и сгруппируйте по складу.
5. pilot_Danik 21.08.24 22:50 Сейчас в теме
(3)
 ВЫБРАТЬ
	Склады.Представление КАК Представление,
	ЗапасыИПотребностиОстатки.ВНаличииОстаток КАК ВНаличииОстаток,
	ЗапасыИПотребностиОстатки.РезервироватьНаСкладеОстаток КАК РезервироватьНаСкладеОстаток,
	ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток КАК КОтгрузкеОстаток,
	РазмещениеНоменклатурыПоСкладскимЯчейкам.Ячейка КАК Ячейка
ИЗ
	Справочник.Склады КАК Склады
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыКОтгрузке.Остатки КАК ТоварыКОтгрузкеОстатки
		ПО (Склады.Представление = ТоварыКОтгрузкеОстатки.Склад.Представление
			И ТоварыКОтгрузкеОстатки.Номенклатура = &Номенклатура)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ЗапасыИПотребности.Остатки КАК ЗапасыИПотребностиОстатки
		ПО (Склады.Представление = ЗапасыИПотребностиОстатки.Склад.Представление
			И ЗапасыИПотребностиОстатки.Номенклатура = &Номенклатура)
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РазмещениеНоменклатурыПоСкладскимЯчейкам КАК РазмещениеНоменклатурыПоСкладскимЯчейкам
		ПО (Склады.Представление = РазмещениеНоменклатурыПоСкладскимЯчейкам.Склад.Представление
			И РазмещениеНоменклатурыПоСкладскимЯчейкам.Номенклатура = &Номенклатура)
Показать


Вот так передал.
В консоли работает корректно, а в расширении почему-то по товару в резерве дубль строчка появляется. Сейчас попробую по вашей схеме.
Если делать два запроса и объединять, то получается результат с несколькими строками по одному складу.
2. DENSKR 16 21.08.24 21:12 Сейчас в теме
4. pilot_Danik 21.08.24 22:48 Сейчас в теме
(2) Это не работает если делать так.
ЕСТЬNULL (ТоварыКОтгрузкеОстатки.КОтгрузкеОстаток, "Нет") КАК КОтгрузкеОстаток
6. user1880116 21.08.24 22:51 Сейчас в теме
(4)
Это не работает
Потому что твое условие по номенклатуре превращает левые соединения во внутрение. За подробностями, будь добр, сходи в учебник сам.
7. pilot_Danik 21.08.24 22:59 Сейчас в теме
8. DENSKR 16 21.08.24 23:03 Сейчас в теме
(4) Тогда почитай на других ресурсах...
9. pilot_Danik 21.08.24 23:21 Сейчас в теме
(8) Ну так я и почитал. В этом регистре на остатке если ничего не будет, то и заменять нечего нулем
10. DENSKR 16 21.08.24 23:23 Сейчас в теме
11. pilot_Danik 21.08.24 23:36 Сейчас в теме
(10) Да и этот тут тоже ни причем. Потому что запрос к регистру в котором нет записи ничего не вернет.
12. user2033930 22.08.24 00:47 Сейчас в теме
(11)
Потому что запрос к регистру в котором нет записи ничего не вернет.
На ящик конины забьёмся, что ты гонишь?
13. Jontao 23.08.24 17:24 Сейчас в теме
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот