|   |   | 
| 
 | регистр сведений максимальное значение за период | ☑ | ||
|---|---|---|---|---|
| 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) А если в периоде нет ни одной записи, и цена действующая на начало периода не интересует?     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |