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

1. Netker 24.03.24 12:36 Сейчас в теме
Добрый день. Помогите понять почему в запросе выводимое значение получается не между условиями ргПутевойЛистУслуги.ДатаВыполненияМП > ВложенныйЗапрос.Поле2 И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле3, а с начала периода отбора?

СУММА(ВЫБОР
		КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП > НАЧАЛОПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ)
				И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле1
			ТОГДА ргПутевойЛистУслуги.КоличествоМП
		ИНАЧЕ 0
	КОНЕЦ)

по этому условию получаю нужное количество.

По второму условию, получается количество в сумме с первым условием
СУММА(ВЫБОР
		КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП МЕЖДУ ВложенныйЗапрос.Поле1 И ВложенныйЗапрос.Поле2
			ТОГДА ргПутевойЛистУслуги.КоличествоМП
		ИНАЧЕ 0
	КОНЕЦ)

Или по такому условию
СУММА(ВЫБОР
		КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП > ВложенныйЗапрос.Поле2
				И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле3
			ТОГДА ргПутевойЛистУслуги.КоличествоМП
		ИНАЧЕ 0
	КОНЕЦ)

Весь запрос
ВЫБРАТЬ
	ргПутевойЛист.Автомашина КАК Автомашина,
	СУММА(ргПутевойЛистУслуги.КоличествоМП) КАК КоличествоМП,
	СУММА(ргПутевойЛистУслуги.Количество) КАК Количество,
	ргПутевойЛист.Дата КАК Дата,
	НАЧАЛОПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ) КАК Дата1,
	КОНЕЦПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ) КАК Дата2,
	СУММА(ВЫБОР
			КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП > НАЧАЛОПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ)
					И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле1
				ТОГДА ргПутевойЛистУслуги.КоличествоМП
			ИНАЧЕ 0
		КОНЕЦ) КАК Выгрузка1,
	СУММА(ВЫБОР
			КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП МЕЖДУ ВложенныйЗапрос.Поле1 И ВложенныйЗапрос.Поле2
				ТОГДА ргПутевойЛистУслуги.КоличествоМП
			ИНАЧЕ 0
		КОНЕЦ) КАК Выгрузка2,
	СУММА(ВЫБОР
			КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП > ВложенныйЗапрос.Поле2
					И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле3
				ТОГДА ргПутевойЛистУслуги.КоличествоМП
			ИНАЧЕ 0
		КОНЕЦ) КАК Выгрузка3,
	СУММА(ВЫБОР
			КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП > ВложенныйЗапрос.Поле3
					И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле4
				ТОГДА ргПутевойЛистУслуги.КоличествоМП
			ИНАЧЕ 0
		КОНЕЦ) КАК Выгрузка4,
	СУММА(ВЫБОР
			КОГДА ргПутевойЛистУслуги.ДатаВыполненияМП > ВложенныйЗапрос.Поле4
					И ргПутевойЛистУслуги.ДатаВыполненияМП < ВложенныйЗапрос.Поле5
				ТОГДА ргПутевойЛистУслуги.КоличествоМП
			ИНАЧЕ 0
		КОНЕЦ) КАК Выгрузка5,
	ВложенныйЗапрос.Поле1 КАК Поле1,
	ВложенныйЗапрос.Поле2 КАК Поле2,
	ВложенныйЗапрос.Поле3 КАК Поле3,
	ВложенныйЗапрос.Поле4 КАК Поле4,
	ВложенныйЗапрос.Поле5 КАК Поле5
ИЗ
	Документ.ргПутевойЛист КАК ргПутевойЛист
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ргПутевойЛист.Услуги КАК ргПутевойЛистУслуги
		ПО ргПутевойЛист.Ссылка = ргПутевойЛистУслуги.Ссылка
		ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ
			ргПутевойЛист.Ссылка КАК Ссылка,
			ргПутевойЛистЗахоронение.НомерСтроки КАК НомерСтроки,
			ргПутевойЛистЗахоронение.ДатаЗаезда КАК ДатаЗаезда,
			ВЫБОР
				КОГДА ргПутевойЛистЗахоронение.НомерСтроки = 1
					ТОГДА ргПутевойЛистЗахоронение.ДатаЗаезда
				ИНАЧЕ 0
			КОНЕЦ КАК Поле1,
			ВЫБОР
				КОГДА ргПутевойЛистЗахоронение.НомерСтроки = 2
					ТОГДА ргПутевойЛистЗахоронение.ДатаЗаезда
				ИНАЧЕ 0
			КОНЕЦ КАК Поле2,
			ВЫБОР
				КОГДА ргПутевойЛистЗахоронение.НомерСтроки = 3
					ТОГДА ргПутевойЛистЗахоронение.ДатаЗаезда
				ИНАЧЕ 0
			КОНЕЦ КАК Поле3,
			ВЫБОР
				КОГДА ргПутевойЛистЗахоронение.НомерСтроки = 4
					ТОГДА ргПутевойЛистЗахоронение.ДатаЗаезда
				ИНАЧЕ 0
			КОНЕЦ КАК Поле4,
			ВЫБОР
				КОГДА ргПутевойЛистЗахоронение.НомерСтроки = 5
					ТОГДА ргПутевойЛистЗахоронение.ДатаЗаезда
				ИНАЧЕ 0
			КОНЕЦ КАК Поле5
		ИЗ
			Документ.ргПутевойЛист КАК ргПутевойЛист
				ЛЕВОЕ СОЕДИНЕНИЕ Документ.ргПутевойЛист.Захоронение КАК ргПутевойЛистЗахоронение
				ПО ргПутевойЛист.Ссылка = ргПутевойЛистЗахоронение.Ссылка) КАК ВложенныйЗапрос
		ПО ргПутевойЛист.Ссылка = ВложенныйЗапрос.Ссылка
ГДЕ
	НАЧАЛОПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ) >= &НачалоПериода
	И КОНЕЦПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ) <= &КонецПериода

СГРУППИРОВАТЬ ПО
	ргПутевойЛист.Автомашина,
	ргПутевойЛист.Дата,
	НАЧАЛОПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ),
	КОНЕЦПЕРИОДА(ргПутевойЛист.Дата, ДЕНЬ),
	ВложенныйЗапрос.Поле1,
	ВложенныйЗапрос.Поле2,
	ВложенныйЗапрос.Поле3,
	ВложенныйЗапрос.Поле4,
	ВложенныйЗапрос.Поле5
ИТОГИ
	СУММА(КоличествоМП),
	СУММА(Количество)
ПО
	Автомашина,
	Дата,
	Дата1,
	Дата2
Показать
Прикрепленные файлы:
По теме из базы знаний
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. starjevschik 24.03.24 16:29 Сейчас в теме
не вникая в детали, я бы спросил, что предполагает получить автор, если дата равна одной из границ. Условия почти везде больше и меньше, а равно как-то не учтено.
Кроме условия между, которое, как я понимаю, включает обе свои границы, что тоже вызывает вопрос, куда должен попасть результат, когда даты равны, и почему только один интервал обе границы включает, и что вообще надо получить, и зачем так...
Как-то выглядит бессистемно.
3. Netker 24.03.24 16:32 Сейчас в теме
(2) хочу получить из ТЗ значение количествоМП, где ДатаВыполненияМП находится между интервалами. По каждой строке тз
4. starjevschik 24.03.24 17:31 Сейчас в теме
(2)
что предполагает получить автор, если дата равна одной из границ

(3) ????
5. Netker 25.03.24 05:57 Сейчас в теме
(2) У документы есть 2 таблицы значения. Услуги и Захоронение.
В услугах есть колонки время выполнения и количество.
В захоронении Время заезда.

Необходимо посчитать количество из ТЗ Услуги во временных рамках:
1. От начала дня до первого ВремяЗаезда из ТЗ Захоронение
2. Между первым ВремяЗаезда и вторым ВремяЗаезда
3. и т.д.

Скриншоты во вложении
Прикрепленные файлы:
6. romulanin 25.03.24 10:44 Сейчас в теме
очевидно что вложенный запрос содержит дату на начало периода.
наверно нужно
МЕЖДУ НачалоПериода(ВложенныйЗапрос.Поле1) И КонецПериода(ВложенныйЗапрос.Поле2)
7. Netker 25.03.24 11:09 Сейчас в теме
(6) нет, так не пойдет, данные в течении одного дня. 10:59, 13:20 и между ними нужно найти количество.
При маем запросе он выводит не между этим времен, а с начала дня и до ВложенныйЗапрос.Поле2
Оставьте свое сообщение

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