1. Tailor_Made 11.09.19 13:38 Сейчас в теме

Проверка наличия товара

Здравствуйте. У меня есть запрос, который вытаскивает количество продаж товара и его остаток на складе. Эти данные я вытаскиваю с разных регистров, поэтому Соединение моё "отсекает" товары с нулевым остатком. Как сделать так, чтобы если товара в остатках, то его всё чтобы выводило?
Вот сам запрос
ВЫБРАТЬ
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры.Номенклатура КАК Номенклатура,
	ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры.Номенклатура.Артикул КАК Артикул,
	ВыручкаИСебестоимостьПродаж.Склад,
	ВыручкаИСебестоимостьПродаж.Количество КАК Количество,
	ЕСТЬNULL(ТоварыНаСкладахОстатки.ВНаличииОстаток, "0") КАК Остаток
ИЗ
	РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
		ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
		ПО ТоварыНаСкладахОстатки.Номенклатура.Код = ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры.Номенклатура.Код
ГДЕ
	ВыручкаИСебестоимостьПродаж.Период МЕЖДУ &НачалоПериода И &КонецПериода
	И ВыручкаИСебестоимостьПродаж.Склад = &Склад
Показать
Найденные решения
2. danjer74 1 11.09.19 13:52 Сейчас в теме
ПО ТоварыНаСкладахОстатки.Номенклатура = ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры.Номенклатура
соединение левое
Дело в том, что при обращении через точку идет дополнительный запрос к базе данных. Можно соединить с справочником Номенклатура. Тогда буду показаны остатки по всей номенклатуре, в том числе нулевые.
user614822; +1 Ответить
Остальные ответы
Избранное Подписка Сортировка: Древо
2. danjer74 1 11.09.19 13:52 Сейчас в теме
ПО ТоварыНаСкладахОстатки.Номенклатура = ВыручкаИСебестоимостьПродаж.АналитикаУчетаНоменклатуры.Номенклатура
соединение левое
Дело в том, что при обращении через точку идет дополнительный запрос к базе данных. Можно соединить с справочником Номенклатура. Тогда буду показаны остатки по всей номенклатуре, в том числе нулевые.
user614822; +1 Ответить
3. Tailor_Made 11.09.19 13:58 Сейчас в теме
(2)А как это правильно соединить с справочником Номенклатура? Буду очень благодарен
5. danjer74 1 11.09.19 14:08 Сейчас в теме
(3)Завернуть этот запрос во временную таблицу, потом выбрать номенклатуру из справочника с условием НЕ во временной таблице ну и левым соеднинением соединить с этой выборкой. Как-то так.
Tailor_Made; +1 Ответить
4. shatunovs 11.09.19 14:04 Сейчас в теме
...
ИЗ РегистрНакопления.ВыручкаИСебестоимостьПродаж КАК ВыручкаИСебестоимостьПродаж
        ЛЕВОЕ СОЕДИНЕНИЕ 
РегистрНакопления.ТоварыНаСкладах.Остатки КАК ТоварыНаСкладахОстатки
...

Если я правильно понял что требуется
6. user614822 29 11.09.19 14:26 Сейчас в теме
(4) Неверно вы поняли...
Нужны все а не только ненулевые остатки товара с их объемами продаж...
Ваш вариант не покажет товары по которым не было продаж....
7. shatunovs 11.09.19 18:37 Сейчас в теме
(6) "Все остатки я и читаю, как "все остатки". Так что, скорее "неправильно написали", а не "поняли". Небольшая разница есть. Попробуйте перечитать свой вопрос.
А если вам нужны и те, где не нуль или продажи, или остатки, для этого, теоретически, существует "Полное соединение". Которое настоятельно рекомендуется заменять на объединить+сгруппировать по соображениям оптимизации производительности, особенно для виртуальных таблиц. Выбираете нужные поля остатков, добавляете нули в поля для продаж. Добавляете объединение с запросом по продажам, в котором нули на месте полей остатков. Заворачиваете все это во вложенный запрос и делаете ему группировку по измерениям и сумму по числам.
Соединение с номенклатурой покажет ВСЮ номенклатуру. Хотя, можно добавить условие ГДЕ не ноль либо то, либо это - тоже вариант. У любой задачи обычно несколько правильных решений.
Вариант с объединением сильно быстрее отработает при малых оборотах / остатках. Вариант с соединением номенклатуры будет перебирать всю номенклатуру независимо от количества остатков и оборотов в вашем регистре, но хорош, например, для отображения в форме списка справочника номенклатуры.
Tailor_Made; +1 Ответить
8. Tailor_Made 11.09.19 20:05 Сейчас в теме
(7)спасибо вам, вы отлично объяснили, что даже я понять смог :)
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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


Программисты 1С УТ / БУЗ/ЗУП / БИТ ФИНАНС
Москва
зарплата от 100 000 руб. до 180 000 руб.
Полный день

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

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству