Имя: Пароль:
1C
1С v8
запрос: вывести номенклатуру по дате
0 vux13
 
18.07.24
17:50
нужно из таблицы получить цену номенклатуры на ДатаЗаказа

таблица:
Номенклатура  |Цена | Дата
-----------------------------------------
Гидроизоляция |  352| 23.11.2021 10:14:13
Гидроизоляция |  560| 03.05.2022 16:30:06
Гидроизоляция |  478| 19.04.2023 12:00:00
Грунтовка     |  900| 04.04.2022 16:33:34
Грунтовка     | 1084| 21.07.2021 0:00:00
Грунтовка     | 1157| 25.02.2022 23:54:53
Грунтовка     | 1199| 19.04.2023 0:00:00
Светильник    | 1361| 15.06.2022 0:00:00
Светильник    | 1148| 17.11.2021 17:40:15


например на дату 15.06.2022:

Гидроизоляция |  560| 03.05.2022 16:30:06
Грунтовка     |  900| 04.04.2022 16:33:34
Светильник    | 1361| 15.06.2022 0:00:00


делаю такой запрос, но с полем "Цена" не работает
но нужно с ценой

ВЫБРАТЬ
        Таблица.Номенклатура КАК Номенклатура,
	Таблица.Цена КАК Цена,
        МАКСИМУМ(Таблица.Дата) КАК Дата
ИЗ
        Таблица
ГДЕ
        Таблица.Дата <= &ДатаЗаказа

СГРУППИРОВАТЬ ПО
        Таблица.Номенклатура,
	Таблица.Цена
1 Ёпрст
 
18.07.24
17:56
(0) в начале номенклатура и максимум дата, во втором уже запросе фильтр по первому внутренним соединением по дате и номенклатуре
2 vux13
 
18.07.24
18:24
(1) вот так правильно понял ?

ВЫБРАТЬ
        Таблица.Номенклатура КАК Номенклатура,
        МАКСИМУМ(Таблица.Дата) КАК Дата
ПОМЕСТИТЬ ВТ
ИЗ
        Таблица
ГДЕ
        Таблица.Дата <= &ДатаЗаказа

СГРУППИРОВАТЬ ПО
        Таблица.Номенклатура

;

ВЫБРАТЬ 
	Таблица.Номенклатура КАК Номенклатура,
	Таблица.Цена КАК Цена,
	Таблица.Дата КАК Дата
ИЗ
        Таблица
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ КАК ВТ
        	ПО Таблица.Номенклатура = ВТ.Номенклатура
        	И Таблица.Дата = ВТ.Дата
3 rphosts
 
18.07.24
18:24
(2) +1
4 Ёпрст
 
18.07.24
18:25
(2) ага..ну, и если вдруг выйдет что в одной дате есть 2 разные ценыдля одной номенклатуры, можно во втором запросе брать еще максимум цены.
5 vux13
 
18.07.24
18:28
(4) спасибо
а в теории соединения по не индексированным полям может тормозить запрос если много записей будет да ?
6 vux13
 
18.07.24
18:29
(3) 👍
7 rphosts
 
18.07.24
18:37
(5) молодец! Всё так и есть: много записей - индексируй. Не уверен на 100% что в будущем записей не станет много - индексируй.

С другой стороны если ты знаешь заранее список номенклатур по которым требуется получить даты - это позволяет резко ограничить массив обрабатываемых данных в запросе
8 vux13
 
18.07.24
21:22
(7) 👍👍👍
9 Волшебник
 
18.07.24
22:12
(8) Не надо имитации
AdBlock убивает бесплатный контент. 1Сергей