Помогите с соединением в запросе

1. Азверин 3 30.03.17 10:27 Сейчас в теме
Добрый день!
Затык с запросом. Подскажите, как сделать такое?
Есть две Таблицы:
РН.ПродажиОбороты...

вторая ВТ с ценой себестоимости:
Период
Номенклатура
Цена
(цена может отсутствовать на день продажи, тогда 0)
Цена устанавливается на все будущие продажи, но до следующей цены.
01.03.2017 Номенклатура1 13
03.03.2017 Номенклатура2 30
14.03.2017 Номенклатура2 35

Нужно получить в результате:
Номенклатура1 28.02.2017 0
Номенклатура1 01.03.2017 13
Номенклатура1 25.03.2017 13

Номенклатура2 01.03.2017 0
Номенклатура2 03.03.2017 30
Номенклатура2 10.03.2017 30
Номенклатура2 15.03.2017 35
+
По теме из базы знаний
Найденные решения
11. Азверин 3 30.03.17 12:23 Сейчас в теме
Вот что получил. Работает, как мне надо.
ВЫБРАТЬ
	Продажи.Период КАК Период,
	Продажи.Контрагент,
	Продажи.Номенклатура КАК Номенклатура,
	Продажи.КоличествоОборот КАК Количество,
	Продажи.СтоимостьОборот КАК Стоимость,
	ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Поле1
ИЗ
	РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Номенклатура В (&Номенклатура)) КАК Продажи
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И (ЦеныНоменклатуры.ТипЦен = &ТипЦен)
			И (ЦеныНоменклатуры.Период В
				(ВЫБРАТЬ ПЕРВЫЕ 1
					Цены.Период
				ИЗ
					РегистрСведений.ЦеныНоменклатуры КАК Цены
				ГДЕ
					Цены.Период <= Продажи.Период
					И Цены.Номенклатура = Продажи.Номенклатура
					И МЕСЯЦ(Цены.Период) = МЕСЯЦ(Продажи.Период)
					И Цены.ТипЦен = &ТипЦен
				УПОРЯДОЧИТЬ ПО
					Цены.Период УБЫВ))

УПОРЯДОЧИТЬ ПО
	Номенклатура,
	Период
Показать
+
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. a.ivanov 30.03.17 10:33 Сейчас в теме
Джойн по Номенклатура и Дата >= ?
+
3. Азверин 3 30.03.17 10:35 Сейчас в теме
(2) сейчас так и сделал, но есть задвоение в этом случае:

Номенклатура2 15.03.2017 30
Номенклатура2 15.03.2017 35
+
4. japopov 68 30.03.17 10:38 Сейчас в теме
(3)
Джойнать именно так, но включать не только поле "Дата продажи", но и поле "Дата установки цены"
Потом фильтровать отбором по полю "Дата установки цены" - выбирать минимальное значение.

Так не пойдёт?
+
7. a.ivanov 30.03.17 11:29 Сейчас в теме
(3) сверни потом с датой по минимуму
+
10. Азверин 3 30.03.17 11:43 Сейчас в теме
(7) я бы хотел в запросе получить нужный результат.
+
5. SyachinS 30.03.17 10:48 Сейчас в теме
Берете таблицу регистра сведений без среза, в условиях связи делаете запрос по типу:

РегистрСведений.Себестоимость.Период В(
ВЫБРАТЬ ПЕРВЫЕ 1
РегСвед.Период
ИЗ
РегистрСведений.Себестоимость КАК РегСвед
ГДЕ
РегСвед.Период <= [ПолеРегистраНакопления.Период])
Показать


Вроде бы ничего не напутал, конфы где это реализовывал нет под рукой.
Азверин; +1
6. Азверин 3 30.03.17 11:12 Сейчас в теме
(5) да, как-то так.
у меня временные таблицы. буду думать, как прикрутить это условие.
если не затруднит, показать живой пример.
+
8. SyachinS 30.03.17 11:29 Сейчас в теме
(6) Доступ в ту конфу крайне проблематичный. Через временные таблицы тот же самый принцип, тут вся суть в запросе внутри связи.
+
9. Азверин 3 30.03.17 11:39 Сейчас в теме
(8) не понял, что значит "в условиях связи делаете запрос".

накидал "с нуля" такой запрос:
ВЫБРАТЬ
	Продажи.Номенклатура КАК Номенклатура,
	Цены.Цена,
	Продажи.ДокументПродажи.Дата КАК ДокументПродажиДата,
	Продажи.КоличествоОборот
ИЗ
	РегистрНакопления.Продажи.Обороты(НАЧАЛОПЕРИОДА(&НачалоПериода, МЕСЯЦ), КОНЕЦПЕРИОДА(&КонецПериода, ДЕНЬ), , Номенклатура В (&Номенклатура)) КАК Продажи
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК Цены
		ПО Продажи.Номенклатура = Цены.Номенклатура
			И Продажи.ДокументПродажи.Дата >= Цены.Период
ГДЕ
	Цены.ТипЦен = &ТипЦен
	И Цены.Период В
			(ВЫБРАТЬ ПЕРВЫЕ 1
				Цены.Период КАК Период
			ИЗ
				РегистрСведений.ЦеныНоменклатуры КАК Цены
			ГДЕ
				Цены.Период <= Продажи.ДокументПродажи.Дата
				И МЕСЯЦ(Продажи.ДокументПродажи.Дата) = МЕСЯЦ(Цены.Период)
				И Продажи.Номенклатура = Цены.Номенклатура)
Показать
+
11. Азверин 3 30.03.17 12:23 Сейчас в теме
Вот что получил. Работает, как мне надо.
ВЫБРАТЬ
	Продажи.Период КАК Период,
	Продажи.Контрагент,
	Продажи.Номенклатура КАК Номенклатура,
	Продажи.КоличествоОборот КАК Количество,
	Продажи.СтоимостьОборот КАК Стоимость,
	ЕСТЬNULL(ЦеныНоменклатуры.Цена, 0) КАК Поле1
ИЗ
	РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, День, Номенклатура В (&Номенклатура)) КАК Продажи
		ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатуры КАК ЦеныНоменклатуры
		ПО Продажи.Номенклатура = ЦеныНоменклатуры.Номенклатура
			И (ЦеныНоменклатуры.ТипЦен = &ТипЦен)
			И (ЦеныНоменклатуры.Период В
				(ВЫБРАТЬ ПЕРВЫЕ 1
					Цены.Период
				ИЗ
					РегистрСведений.ЦеныНоменклатуры КАК Цены
				ГДЕ
					Цены.Период <= Продажи.Период
					И Цены.Номенклатура = Продажи.Номенклатура
					И МЕСЯЦ(Цены.Период) = МЕСЯЦ(Продажи.Период)
					И Цены.ТипЦен = &ТипЦен
				УПОРЯДОЧИТЬ ПО
					Цены.Период УБЫВ))

УПОРЯДОЧИТЬ ПО
	Номенклатура,
	Период
Показать
+
12. SyachinS 30.03.17 12:36 Сейчас в теме
(11)Рад что смог помочь
+
Внимание! Тема сдана в архив

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