Верный запрос к рег.накопления.

1. Intercititude 27.01.20 16:15 Сейчас в теме
Есть запрос:

ВЫБРАТЬ
	ВЗ.Заказчик КАК Клиент,
	ВЗ.Заказчик.ОсновнойМенеджерПокупателя.Родитель КАК Канал,
	ВЗ.Ссылка,
	ВнутреннийЗаказТовары.Номенклатура КАК Номенклатура,
	ВЗ.ладГраницаРезерва КАК ДатаКонцаСрочногоРезерва,
	ВЗ.Дата КАК ДатаНачалаСрочногоРезерва,
	ВнутреннийЗаказТовары.Количество КАК ПервоначальноеЗначениеРезерва,
	ВнутреннийЗаказТовары.СерияНоменклатуры,
	ВнутреннийЗаказТовары.ХарактеристикаНоменклатуры
ПОМЕСТИТЬ ВЗаказ
ИЗ
	Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
		ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
	ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
	И ВЗ.Проведен = ИСТИНА
	И ВЗ.ПометкаУдаления = ЛОЖЬ
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЗаказ.Клиент,
	ВЗаказ.Канал,
	ВЗаказ.Ссылка КАК Заказ,
	ВЗаказ.Номенклатура,
	ВЗаказ.ДатаНачалаСрочногоРезерва КАК ДатаНачалаСрочногоРезерва,
	ВЗаказ.ДатаКонцаСрочногоРезерва КАК ДатаКонцаСрочногоРезерва,
	ВЗаказ.ПервоначальноеЗначениеРезерва КАК ПервоначальноеЗнач,
	ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток КАК ТекЗначение
ИЗ
	ВЗаказ КАК ВЗаказ
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрНакопления.ТоварыВРезервеНаСкладах.Остатки(&НаДату, ) КАК ТоварыВРезервеНаСкладахОстатки
		ПО ВЗаказ.Ссылка = ТоварыВРезервеНаСкладахОстатки.ДокументРезерва
			И ВЗаказ.Номенклатура = ТоварыВРезервеНаСкладахОстатки.Номенклатура

УПОРЯДОЧИТЬ ПО
	ДатаНачалаСрочногоРезерва,
	ДатаКонцаСрочногоРезерва
Показать



Интересуют два поля. ПервоначальноеЗнач и ТекЗначение.

В итоге выводится ПервоначальноеЗнач всегда такое же какое и в документе. А ТекЗначение у какой то номенклатуры "null".

Как сделать так, чтобы если ТекЗначение = null, то не выводить в принципе все поля и номенклатуры у которой текущий остаток null.
Или я может неправильно запрос сделал? спасибо заранее.
Вознаграждение за ответ
Показать полностью
Найденные решения
7. Art39_ 27.01.20 16:42 Сейчас в теме +0.5 $m
Дописать во втором запросе условие:
"ГДЕ ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, ЛОЖЬ)"

Хотя если это остаток, то логичнее проверять на равенство нулю.
"ГДЕ ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0"
Остальные ответы
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
2. vadim.semyonov.rzn 27.01.20 16:18 Сейчас в теме
(1)
Документ.ВнутреннийЗаказ.Товары КАК ВнутреннийЗаказТовары
ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка
ГДЕ
ВЗ.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВЗ.Проведен = ИСТИНА
И ВЗ.ПометкаУдаления = ЛОЖЬ
Такая конструкция будет работать только при внутреннем соединении.
5. Intercititude 27.01.20 16:28 Сейчас в теме
(2) Вроде и так работает. Как бы сделали Вы?!
9. vadim.semyonov.rzn 27.01.20 16:46 Сейчас в теме
(5) В обоих случаях заменил бы соединение на внутреннее. При этом в первом запросе на отбор по таблице товаров накладывались бы условия к внутреннему заказу, а во втором запросе уходили бы нулевые значения остатков, как отсутствующие в выборке остатков на дату.
12. Intercititude 27.01.20 16:48 Сейчас в теме
(9) А можете обьяснить почему ?
Потому что и так вроде корректно отображает всё.
15. vadim.semyonov.rzn 27.01.20 17:10 Сейчас в теме
(12)
и так вроде корректно отображает всё
Если всё корректно отображает, то к чему вопрос на форуме? Видимо, всё-таки не всё так, как хотелось бы. По пунктам: в первом запросе Вы выбираете таблицы товаров по ВСЕМ внутренним заказам, а потом к ним "прилепляете" данные из выбранных заказов. Как результат - часть записей из таблиц товаров не имеет соответствий в таблицах заказов и остаются с пустыми полями. Во втором запросе Вы производите выборку остатков на дату и опять же "прилепляете" эту выборку к результату предыдущего запроса. Таким образом, результирующая выборка содержит ВСЕ строки из первого запроса, включая неполные, НЕКОТОРЫЕ из которых содержат данные из второго запроса. В начальном условии было сказано, что отсутствующие в выборке остатков на дату строки не должны попадать в результирующую выборку.
16. Intercititude 27.01.20 17:16 Сейчас в теме
(15) ну по сути
ГДЕ ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) > 0

решило мою проблему с пустым значение ТекЗначения.
3. alex-l19041 8 27.01.20 16:20 Сейчас в теме
можно
ЕстьNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток,0) КАК ТекЗначение

а затем условие ТекЗначение <> 0
4. Intercititude 27.01.20 16:25 Сейчас в теме
(3) То есть я правильно понимаю, что в принципе такое возможно что ТекЗначение в итоге может быть Null ?
6. Intercititude 27.01.20 16:29 Сейчас в теме
(3) У меня скд. Где условие прописать там возможно после ?
7. Art39_ 27.01.20 16:42 Сейчас в теме +0.5 $m
Дописать во втором запросе условие:
"ГДЕ ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, ЛОЖЬ)"

Хотя если это остаток, то логичнее проверять на равенство нулю.
"ГДЕ ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток > 0"
8. Intercititude 27.01.20 16:44 Сейчас в теме
(7) Одно из двух то есть ?
10. Art39_ 27.01.20 16:46 Сейчас в теме
(8) "ГДЕ ЕСТЬNULL(ТоварыВРезервеНаСкладахОстатки.КоличествоОстаток, 0) > 0"
Лучше всего так написать, тогда точно не промахнешься с выборкой.
11. Intercititude 27.01.20 16:47 Сейчас в теме
(10) и правда. Это же азы. Понедельник день тяжёлый..

А в остальном запрос корректен?
13. Art39_ 27.01.20 16:52 Сейчас в теме
(11) В первом запросе я бы левое соединение заменил на внутреннее, т.к. сейчас условия из секции "ГДЕ" воздействуют только на таблицу "ВЗ", а в таблицу "ВнутреннийЗаказТовары" по прежнему попадают все данные.
Если копнуть глубже, то можно вообще не использовать соединение в первом запросе, а просто записать в условии:
"ГДЕ
ВнутреннийЗаказТовары.Ссылка.Дата МЕЖДУ &ДатаНач И &ДатаКон
И ВнутреннийЗаказТовары.Ссылка.Проведен = ИСТИНА
И ВнутреннийЗаказТовары.Ссылка.ПометкаУдаления = ЛОЖЬ"
Соответственно, удалив:
" ЛЕВОЕ СОЕДИНЕНИЕ Документ.ВнутреннийЗаказ КАК ВЗ
ПО ВнутреннийЗаказТовары.Ссылка = ВЗ.Ссылка"
14. Intercititude 27.01.20 17:07 Сейчас в теме
(13) Сделал так. Минут 10 формирует уже отчёт )
17. Art39_ 27.01.20 17:16 Сейчас в теме
(14) а до этого быстрее отрабатывал?
Похоже, он проверяет условие на каждой строке ТЧ, что является лишней работой.
В таком случае лучше использовать первую версию запроса (через соединение), просто заменив "левое" на "внутренее", чтобы вторая таблица ограничивала итоговую выборку.
18. Intercititude 27.01.20 17:17 Сейчас в теме
(17) Моментально выводил. Уже переделал.
Оставьте свое сообщение
Вакансии
Руководитель направления 1С
Москва
зарплата от 350 000 руб.
Полный день

1С Программист
Москва
зарплата от 180 000 руб.
Полный день

Программист 1С
Москва
зарплата от 180 000 руб. до 220 000 руб.
Полный день

Аналитик 1С / Бизнес-аналитик
Нижний Новгород
зарплата от 100 000 руб. до 250 000 руб.
Временный (на проект)

Программист 1С
Москва
зарплата от 250 000 руб.
Полный день