gifts2017

Выборка для каждого документа - предыдущего.

Опубликовал Виталий Волчелюк (ready1C) в раздел Программирование - Практика программирования

Реализация запросом в условии соединения.

Столкнулся с задачкой поиска для списка документов ссылок на предыдущие исходным документы. Для использования в динамическом списке требовался простой запрос. В итоге вышел он не совсем простой :)

По оптимальной производительности в отдельных случаях может уступать обычному подбору при выводе данных, например. Так же имеется ограничение - предыдущий документ подбирается с датой не менее чем на минуту ранней, чем исходный документ. Но как цельное решение для динамического списка - аналогичного решения не нашел. Может плохо искал? Laughing

Конкретный пример к Рарусовской Альфе, но применим может к любому документу.

ВЫБРАТЬ
	ЗаказНаряд.Ссылка,
	ЗаказНарядПредыдущий.Ссылка КАК СсылкаПредыдущий
ИЗ
	Документ.ЗаказНаряд КАК ЗаказНаряд
		ЛЕВОЕ СОЕДИНЕНИЕ Документ.ЗаказНаряд КАК ЗаказНарядПредыдущий
		ПО ЗаказНаряд.Контрагент = ЗаказНарядПредыдущий.Контрагент
			И (ЗаказНарядПредыдущий.Дата В
				(ВЫБРАТЬ РАЗЛИЧНЫЕ
					МАКСИМУМ(УстановкаПараметров.Дата)
				ИЗ
					Документ.ЗаказНаряд КАК УстановкаПараметров
				ГДЕ
					УстановкаПараметров.Дата < ЗаказНаряд.Дата
					И УстановкаПараметров.Контрагент = ЗаказНаряд.Контрагент))

См. также

Подписаться Добавить вознаграждение
Комментарии
1. rasswet (rasswet) 04.06.14 08:27
а зачем вообще МИНУТА? если можно написать просто УстановкаПараметров.дата<
2. Виталий Волчелюк (ready1C) 05.06.14 08:42
(1) rasswet, да, излишнее условие из конкретного случая. Универсально конечно так:

УстановкаПараметров.Дата < ЗаказНаряд.Дата


Спасибо.
3. Борис (soap) 05.06.14 10:34