|   |   | 
| 
 | как в запросе отобрать максимальные значения? | ☑ | ||
|---|---|---|---|---|
| 0
    
        Александр111 12.02.20✎ 13:31 | 
        Есть документы поступления номенклатуры
 Необходимо за указанный период получить для заданного набора номенклатуры максимальные цены и ссылки на документы поступления Запрос вида "ВЫБРАТЬ | ПоступлениеТоваровУслугТовары.Ссылка КАК Документ, | ПоступлениеТоваровУслугТовары.Номенклатура КАК Номенклатура, | МАКСИМУМ(ПоступлениеТоваровУслугТовары.Цена) КАК Цена |ИЗ | Документ.ПоступлениеТоваровУслуг.Товары КАК ПоступлениеТоваровУслугТовары |ГДЕ | ПоступлениеТоваровУслугТовары.Ссылка.Дата >= &ДатаНачала | И ПоступлениеТоваровУслугТовары.Ссылка.Дата <= &ДатаОкончания | И ПоступлениеТоваровУслугТовары.Ссылка.Проведен = &Проведен | И НЕ ПоступлениеТоваровУслугТовары.Ссылка.НомерВходящегоДокумента ЕСТЬ NULL | И НЕ ПоступлениеТоваровУслугТовары.Ссылка.ДатаВходящегоДокумента ЕСТЬ NULL | И ПоступлениеТоваровУслугТовары.Номенклатура В(&Список) |СГРУППИРОВАТЬ ПО | ПоступлениеТоваровУслугТовары.Номенклатура, | ПоступлениеТоваровУслугТовары.Ссылка |УПОРЯДОЧИТЬ ПО | Номенклатура, | Цена УБЫВ"; Выдает все документы,например Поступление 0000-007598 от 28.11.2018 Соединитель СР 50-748 ФВ 692,09 Поступление 0000-005599 от 12.09.2018 Соединитель СР 50-748 ФВ 649,20 Поступление 0000-002538 от 24.05.2019 Соединитель СР50-074 ПВ 639,00 Поступление 0000-001156 от 11.03.2019 Соединитель СР50-074 ПВ 597,00 Нужно чтобы было Поступление 0000-007598 от 28.11.2018 Соединитель СР 50-748 ФВ 692,09 Поступление 0000-002538 от 24.05.2019 Соединитель СР50-074 ПВ 639,00 Как это сделать? | |||
| 1
    
        Ненавижу 1С гуру 12.02.20✎ 13:34 | 
        получить сначала по каждой номенклатуре максимальные цены
 потом соединить с исходной таблицей по номенклатуре и цене результат для конкретной номенклатуры может оказаться неоднозначным (несколько документов с одинаковой ценой) | |||
| 2
    
        Александр111 12.02.20✎ 13:38 | 
        Я могу обработать таблицу значений полученную в запросе, но что будет быстрей?     | |||
| 3
    
        Александр111 12.02.20✎ 13:40 | 
        может можно прикрутить 
 " ВЫБРАТЬ первые 1 | |||
| 4
    
        RomanYS 12.02.20✎ 13:43 | 
        (3) Теоретически можно. "Коррелированный запрос"     | |||
| 5
    
        Александр111 12.02.20✎ 13:54 | 
        (3) Теоретически можно. "Коррелированный запрос" - не понятно.     | |||
| 6
    
        RomanYS 12.02.20✎ 13:59 | ||||
| 7
    
        Александр111 12.02.20✎ 14:01 | 
        из  http://www.gilev.ru/выбрать-в-запросе-одну-запись-из-неско/
 При использовании коррелированных запросов нельзя забывать о подводных камнях этого механизма, в частности о том, что он может служить причиной падения производительности запроса. | |||
| 8
    
        RomanYS 12.02.20✎ 14:05 | 
        (7) поэтому "теоретически". Если ты не тиражку пишешь, то скорей всего это будет норм вариант.     | |||
| 9
    
        Александр111 12.02.20✎ 14:19 | 
        сделал так
 Запрос.УстановитьПараметр("ДатаНачала", НачалоДня(ДатаНачала)); Запрос.УстановитьПараметр("ДатаОкончания", КонецДня(ДатаОкончания)); Запрос.УстановитьПараметр("Проведен", Истина); Запрос.УстановитьПараметр("Список", Список); Таблица20=Запрос.Выполнить().Выгрузить(); Таблица20.Колонки.Добавить("Отбор"); Ном=Справочники.Номенклатура.ПустаяСсылка(); Для каждого КД20 из Таблица20 цикл Если КД20.Номенклатура<>Ном тогда КД20.Отбор=1; ном=КД20.Номенклатура; КонецЕсли; КонецЦикла; Отбор = Новый Структура("Отбор"); Отбор.Вставить("Отбор",1 ); ТабОтбор=Таблица20.Скопировать(Отбор); | |||
| 10
    
        Greeen 12.02.20✎ 14:47 | 
        (9) Ловко =)     | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |