|
регистр сведений максимальное значение за период | ☑ | ||
---|---|---|---|---|
0
prtx
02.04.17
✎
19:08
|
Добрый вечер знатоки!
После экспериментов, проб и ошибок накатал запросик, который быстрее всего работает и хочу получить ваш совет насколько правильно сие и оптимально, подскажите более быстрые варианты. Задание: мне нужно получить максимальную цену номенклатуры за период. мой запрос: "ВЫБРАТЬ | НоменклатураКонтрагентов.Ссылка КАК Ссылка |ПОМЕСТИТЬ НоменклатураКонтрагентов |ИЗ | Справочник.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Номенклатура = &Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Ссылка |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | ЦеныНоменклатурыКонтрагента.Цена |ПОМЕСТИТЬ Цены |ИЗ | НоменклатураКонтрагентов КАК НоменклатураКонтрагентов | ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЦеныНоменклатурыКонтрагента КАК ЦеныНоменклатурыКонтрагента | ПО НоменклатураКонтрагентов.Ссылка = ЦеныНоменклатурыКонтрагента.НоменклатураКонтрагента | И (ЦеныНоменклатурыКонтрагента.Период МЕЖДУ &НачалоПериода И &КонецПериода) |; | |//////////////////////////////////////////////////////////////////////////////// |ВЫБРАТЬ | МИНИМУМ(Цены.Цена) КАК МинимальнаяЦена, | СРЕДНЕЕ(Цены.Цена) КАК СредняяЦена, | МАКСИМУМ(Цены.Цена) КАК МаксимальнаяЦена |ИЗ | Цены КАК Цены" по сомнения вызваны строкой: И (ЦеныНоменклатурыКонтрагента.Период МЕЖДУ &НачалоПериода И &КонецПериода) можно ли так соединять таблицы? данные меры оказались ГОРАЗДО ЭФФЕКТИВНЕЙ конструкции: ГДЕ ЦеныНоменклатурыКонтрагента.Период МЕЖДУ &НачалоПериода И &КонецПериода я понимаю почему конструкция ГДЕ работает медленно т.к. сначало тяним все записи а потом отбираем, а в моем варианте сначало отбираем а потом тяним нужные записи, НО ПРАВИЛЬНА ЛИ такая конструкция с левым соединением? спасибо. 1с уф 8.3 |
|||
1
prtx
02.04.17
✎
19:32
|
Любопытная ну хоть ты ответь как спец))
|
|||
2
Maniac
02.04.17
✎
19:36
|
Это у тебя по всем товарам ?
|
|||
3
mehfk
02.04.17
✎
19:36
|
ВЫБРАТЬ
| НоменклатураКонтрагентов.Ссылка КАК Ссылка |ПОМЕСТИТЬ НоменклатураКонтрагентов |ИЗ | Справочник.НоменклатураКонтрагентов КАК НоменклатураКонтрагентов |ГДЕ | НоменклатураКонтрагентов.Номенклатура = &Номенклатура | |ИНДЕКСИРОВАТЬ ПО | Ссылка копрокод |
|||
4
Maniac
02.04.17
✎
19:39
|
(3) ну и причем тут нафиг твой запрос со справочником?)))
|
|||
5
mehfk
02.04.17
✎
19:39
|
(4) Надень очки.
|
|||
6
prtx
02.04.17
✎
19:39
|
(2) этот запрос у мну вызывается при активизации строки в динамическом списке и тянутся только цены номенклатуры кот. сейчас активна.
|
|||
7
Maniac
02.04.17
✎
19:40
|
(0) у тебя выборка в прямой таблице данных периодического регистра сведений.
Имхо обращение к прямым таблицам регистра всегда будет медленное. Можешь попробовать - Самым эффективным будет это присоединить календарь - во временную таблицу. И соединить даты со срезом псоедних регистра на каждую дату. Во внутреннем запросе. А в верхнему просто МАКСИМУМ(Цена) |
|||
8
prtx
02.04.17
✎
19:41
|
(3) чет не догнал.... разжуй
|
|||
9
Maniac
02.04.17
✎
19:42
|
(5) может еще телескоп заказать? Приперся с каим то запросом по справочнику еще и умничает
|
|||
10
Джинн
02.04.17
✎
19:42
|
||||
11
Maniac
02.04.17
✎
19:43
|
+(7) кстати с таким запросом можно будет и ТЗ даже показать истории изменения цены.
У меня как минимум так и работает и летает. Для проверки понадобится. Потому что чую тебе дальше дадут задачу показать когда она была) |
|||
12
h-sp
02.04.17
✎
19:48
|
(9) это запрос автора из (0)
|
|||
13
Maniac
02.04.17
✎
19:50
|
ааа сорян)) ох уж эти эти плюсики)
|
|||
14
prtx
02.04.17
✎
19:53
|
(12) ну так а че нет, без этой части я смогу сделать и данныю конструкцию левого соединения и придется обращаться через "две точки"
|
|||
15
Maniac
02.04.17
✎
19:53
|
(14) нах тебе соединять еслди в регистре у тебя есть Номенклатура поставщика.
Берд какой то получается. Да еще и условие с одной номенклатурой |
|||
16
Maniac
02.04.17
✎
19:54
|
Это все равно что ты взял две одинаковые лопаты - и одной ногой на обе в землю давишь
|
|||
17
Maniac
02.04.17
✎
19:57
|
|ВЫБРАТЬ
| МИНИМУМ(Цены.Цена) КАК МинимальнаяЦена, | СРЕДНЕЕ(Цены.Цена) КАК СредняяЦена, | МАКСИМУМ(Цены.Цена) КАК МаксимальнаяЦена |ИЗ | РегистрСведений.ЦеныНоменклатурыКонтрагента КАК ЦеныНоменклатурыКонтрагента | ГДЕ ЦеныНоменклатурыКонтрагента.НоменклатураПоставщика.Номенклатура = &ВыбНоменклатура | И (ЦеныНоменклатурыКонтрагента.Период МЕЖДУ &НачалоПериода И &КонецПериода) |
|||
18
Maniac
02.04.17
✎
19:58
|
Могу сразу сказать - среднее будет каким то дерьмом.
|
|||
19
Maniac
02.04.17
✎
20:00
|
А самым быстрым будет
Даты календаря - соединение со срезом. |
|||
20
youalex
02.04.17
✎
20:19
|
(0)
первый запрос (помещение в вт) - лишний, ненужные расходы на создание вт/помещение в вт/индексацию непонятно зачем здесь вообще запрос к таблице Справочник.НоменклатураКонтрагентов ? Чтобы во втором запросе получить NULL если он есть? Но этот NULL все равно нивелируется агрегатными функциями третьего запроса. |
|||
21
kosts
02.04.17
✎
21:26
|
(0) А если в периоде нет ни одной записи, и цена действующая на начало периода не интересует?
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |