Задвоение количества при левом соединении в запросе

1. user2119814 19.12.24 15:20 Сейчас в теме
Всем привет. Хотелось бы разобраться с запросом. Я хочу выбрать по поступлениям количество заказанного товара. При условии что у одного заказа есть более одного поступления количество начинает повторяться.

Сам запрос:

ВЫБРАТЬ
	ПриобретениеТоваровУслугТовары.Ссылка.Партнер КАК Контрагент,
	ПриобретениеТоваровУслугТовары.Ссылка.Дата КАК ДатаПоступления,
	ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
	ПриобретениеТоваровУслугТовары.Характеристика КАК Характеристика,
	ВЫБОР
		КОГДА ПриобретениеТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА ПриобретениеТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения
		ИНАЧЕ ПриобретениеТоваровУслугТовары.Упаковка
	КОНЕЦ КАК ЕдИзм,
	СУММА(ПриобретениеТоваровУслугТовары.Количество) КАК КоличествоПоступило,
	СУММА(ПриобретениеТоваровУслугТовары.Сумма) КАК СуммаПоступило,
	СУММА(ЕСТЬNULL(ЗаказПоставщикуТовары.Количество, 0)) КАК КоличествоЗаказано,
	СУММА(ЕСТЬNULL(ЗаказПоставщикуТовары.Сумма, 0)) КАК СуммаЗаказано,
	ПриобретениеТоваровУслугТовары.Ссылка КАК Поступление,
	ЕСТЬNULL(ЗаказПоставщикуТовары.Ссылка, ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)) КАК ЗаказПоставщику,
	ПриобретениеТоваровУслугТовары.Характеристика.Наименование КАК ХарактеристикаНаименование
ПОМЕСТИТЬ ВТ_Поступления
ИЗ
	Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказПоставщику.Товары КАК ЗаказПоставщикуТовары
		ПО ПриобретениеТоваровУслугТовары.ЗаказПоставщику = ЗаказПоставщикуТовары.Ссылка
			И ПриобретениеТоваровУслугТовары.Номенклатура = ЗаказПоставщикуТовары.Номенклатура
			И ПриобретениеТоваровУслугТовары.Характеристика = ЗаказПоставщикуТовары.Характеристика
ГДЕ
	ПриобретениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания
	И ПриобретениеТоваровУслугТовары.ЗаказПоставщику = &ЗаказПоставщику
{ГДЕ
	(ПриобретениеТоваровУслугТовары.Ссылка.Дата > ПриобретениеТоваровУслугТовары.ЗаказПоставщику.ЖелаемаяДатаПоступления) КАК ТолькоПросроченные,
	(ПриобретениеТоваровУслугТовары.Ссылка.Дата МЕЖДУ &ДатаНачала И &ДатаОкончания) КАК Поле2}

СГРУППИРОВАТЬ ПО
	ПриобретениеТоваровУслугТовары.Ссылка.Партнер,
	ПриобретениеТоваровУслугТовары.Ссылка.Дата,
	ПриобретениеТоваровУслугТовары.Номенклатура,
	ПриобретениеТоваровУслугТовары.Характеристика,
	ВЫБОР
		КОГДА ПриобретениеТоваровУслугТовары.Упаковка = ЗНАЧЕНИЕ(Справочник.УпаковкиЕдиницыИзмерения.ПустаяСсылка)
			ТОГДА ПриобретениеТоваровУслугТовары.Номенклатура.ЕдиницаИзмерения
		ИНАЧЕ ПриобретениеТоваровУслугТовары.Упаковка
	КОНЕЦ,
	ПриобретениеТоваровУслугТовары.Ссылка,
	ПриобретениеТоваровУслугТовары.Характеристика.Наименование,
	ЕСТЬNULL(ЗаказПоставщикуТовары.Ссылка, ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка))
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Поступления.Номенклатура КАК Номенклатура,
	ВТ_Поступления.Характеристика КАК Характеристика,
	ВТ_Поступления.ЗаказПоставщику КАК ЗаказПоставщику
ПОМЕСТИТЬ ВТ_ПоступленияГрупп
ИЗ
	ВТ_Поступления КАК ВТ_Поступления
ГДЕ
	НЕ ВТ_Поступления.ЗаказПоставщику = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)

СГРУППИРОВАТЬ ПО
	ВТ_Поступления.Номенклатура,
	ВТ_Поступления.Характеристика,
	ВТ_Поступления.ЗаказПоставщику
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ПриобретениеТоваровУслугТовары.Номенклатура КАК Номенклатура,
	ПриобретениеТоваровУслугТовары.Характеристика КАК Характеристика,
	СУММА(ПриобретениеТоваровУслугТовары.Количество) КАК Количество,
	СУММА(ПриобретениеТоваровУслугТовары.Сумма) КАК Сумма,
	ПриобретениеТоваровУслугТовары.ЗаказПоставщику КАК ЗаказПоставщику
ПОМЕСТИТЬ ВТ_ПоступленияДоДатыНачала
ИЗ
	Документ.ПриобретениеТоваровУслуг.Товары КАК ПриобретениеТоваровУслугТовары
ГДЕ
	(ПриобретениеТоваровУслугТовары.ЗаказПоставщику, ПриобретениеТоваровУслугТовары.Номенклатура, ПриобретениеТоваровУслугТовары.Характеристика) В
			(ВЫБРАТЬ
				ВТ_ПоступленияГрупп.ЗаказПоставщику КАК ЗаказПоставщику,
				ВТ_ПоступленияГрупп.Номенклатура КАК Номенклатура,
				ВТ_ПоступленияГрупп.Характеристика КАК Характеристика
			ИЗ
				ВТ_ПоступленияГрупп КАК ВТ_ПоступленияГрупп)
	И ПриобретениеТоваровУслугТовары.Ссылка.Дата < &ДатаНачала

СГРУППИРОВАТЬ ПО
	ПриобретениеТоваровУслугТовары.Номенклатура,
	ПриобретениеТоваровУслугТовары.Характеристика,
	ПриобретениеТоваровУслугТовары.ЗаказПоставщику
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВЫБОР
		КОГДА ТИПЗНАЧЕНИЯ(ВЫБОР
				КОГДА ВТ_Поступления.ЗаказПоставщику = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
					ТОГДА ВТ_Поступления.Поступление
				ИНАЧЕ ВТ_Поступления.ЗаказПоставщику
			КОНЕЦ) = ТИП(Документ.ПриобретениеТоваровУслуг)
			ТОГДА "Без заказа"
		ИНАЧЕ ВТ_Поступления.Контрагент
	КОНЕЦ КАК Контрагент,
	ВТ_Поступления.ДатаПоступления КАК ДатаПоступления,
	ВТ_Поступления.Номенклатура КАК Номенклатура,
	ВТ_Поступления.Характеристика КАК Характеристика,
	ВТ_Поступления.ЕдИзм КАК ЕдИзм,
	ВТ_Поступления.КоличествоПоступило КАК КоличествоПоступило,
	ВТ_Поступления.СуммаПоступило КАК СуммаПоступило,
	ВТ_Поступления.КоличествоЗаказано КАК КоличествоЗаказано,
	ВТ_Поступления.СуммаЗаказано КАК СуммаЗаказано,
	ВЫБОР
		КОГДА ВТ_Поступления.ЗаказПоставщику = ЗНАЧЕНИЕ(Документ.ЗаказПоставщику.ПустаяСсылка)
			ТОГДА ВТ_Поступления.Поступление
		ИНАЧЕ ВТ_Поступления.ЗаказПоставщику
	КОНЕЦ КАК ДокументДвижения,
	ВТ_Поступления.Поступление КАК Поступление,
	ЕСТЬNULL(ПоступленияДоДатыНачала.Количество, 0) КАК КоличествоПрошлыйПериод,
	ЕСТЬNULL(ПоступленияДоДатыНачала.Сумма, 0) КАК СуммаПрошлыйПериод
ПОМЕСТИТЬ ВТ_Промежуточная
ИЗ
	ВТ_Поступления КАК ВТ_Поступления
		ЛЕВОЕ СОЕДИНЕНИЕ ВТ_ПоступленияДоДатыНачала КАК ПоступленияДоДатыНачала
		ПО ВТ_Поступления.Номенклатура = ПоступленияДоДатыНачала.Номенклатура
			И ВТ_Поступления.Характеристика = ПоступленияДоДатыНачала.Характеристика
			И ВТ_Поступления.ЗаказПоставщику = ПоступленияДоДатыНачала.ЗаказПоставщику
;

////////////////////////////////////////////////////////////­////////////////////
ВЫБРАТЬ
	ВТ_Промежуточная.Контрагент КАК Контрагент,
	ВТ_Промежуточная.ДатаПоступления КАК ДатаПоступления,
	ВТ_Промежуточная.Номенклатура КАК Номенклатура,
	ВТ_Промежуточная.Характеристика КАК Характеристика,
	ВТ_Промежуточная.ЕдИзм КАК ЕдИзм,
	ВТ_Промежуточная.КоличествоПоступило КАК КоличествоПоступило,
	ВТ_Промежуточная.СуммаПоступило КАК СуммаПоступило,
	ВТ_Промежуточная.КоличествоЗаказано КАК КоличествоЗаказано,
	ВТ_Промежуточная.СуммаЗаказано КАК СуммаЗаказано,
	ВТ_Промежуточная.ДокументДвижения КАК ДокументДвижения,
	ВТ_Промежуточная.Поступление КАК Поступление,
	ВТ_Промежуточная.КоличествоПрошлыйПериод КАК КоличествоПрошлыйПериод,
	ВТ_Промежуточная.СуммаПрошлыйПериод КАК СуммаПрошлыйПериод
ИЗ
	ВТ_Промежуточная КАК ВТ_Промежуточная

Результат выполнения прикрепил.
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Sashares 35 19.12.24 15:29 Сейчас в теме
(1) Так работает соединение таблиц.
user2107191; karamazoff; +2 Ответить
3. user2119814 19.12.24 15:34 Сейчас в теме
(2) Я понимаю. Но все же может есть способ вывести количество только по одному поступлению если оно повторяется.
4. user2107191 19.12.24 15:39 Сейчас в теме
(3) Есть. Использовать объединение. Или не использовать суммовые агрегаты для левой таблицы.
6. user2119814 19.12.24 17:28 Сейчас в теме
(4) А можно пожалуйста поподробнее как объединить так чтобы количество не двоилось?
7. user2107191 19.12.24 17:35 Сейчас в теме
(6) Чтобы объединить, надо ОБЪЕДИНИТЬ ВСЕ.
Так понятнее намёк?
8. user2119814 19.12.24 17:37 Сейчас в теме
(7) А можно пожалуйста без намеков. Я совсем не представляю как так должно сработать.
9. user2107191 19.12.24 17:40 Сейчас в теме
(8)
Я совсем не представляю как так должно сработать.
Вероятно, тогда стоит изучить основы запросов, чтобы разговаривать на одном языке и понимать друг друга.
10. user2119814 19.12.24 17:41 Сейчас в теме
(9) Я объединил запросы через "объединить все" и в итоге у меня записей еще больше появилось. Неужели так трудно написать решение?
11. user2107191 19.12.24 17:46 Сейчас в теме
(10)
Неужели так трудно написать решение?
Я подаю только больным, немощным и артистам.
Я объединил запросы через "объединить все" и в итоге у меня записей еще больше появилось.
Значит, неправильно построил запросы, или забыл после объединения сгруппировать.
5. nomad_irk 79 19.12.24 15:41 Сейчас в теме
(3) сгруппировать по всем полям, но решение - так себе
Оставьте свое сообщение

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