| 
    
        
     
     | 
    
  | 
как получить первые записи по каждой номенклатуре в запросе | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        Alive    
     15.04.20 
            ✎
    08:14 
 | 
         
        Всем доброго времени суток! Есть такая задача, получить начальную цену закупа и конечную по каждой номенклатуре. Запросом выбрала из Регистра накопления минимальную дату и максимальную и по ним смотрю движения, но оказалось, что по некоторым позициям номенклатуры на одну и ту же дату есть движения по двум документам. Как в запросе выбрать только первый документ? 
 
        ВЫБРАТЬ ЗакупкиОбороты.Номенклатура, МИНИМУМ(ЗакупкиОбороты.Период) КАК Период ПОМЕСТИТЬ МинимальныйПериод ИЗ РегистрНакопления.Закупки.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ЗакупкиОбороты СГРУППИРОВАТЬ ПО ЗакупкиОбороты.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ЗакупкиОбороты.Номенклатура, ЗакупкиОбороты.КоличествоОборот, ЗакупкиОбороты.СтоимостьОборот, ЗакупкиОбороты.Период ИЗ РегистрНакопления.Закупки.Обороты(&НачалоПериода, &КонецПериода, Регистратор, ) КАК ЗакупкиОбороты ВНУТРЕННЕЕ СОЕДИНЕНИЕ МинимальныйПериод КАК МинимальныйПериод ПО ЗакупкиОбороты.Номенклатура = МинимальныйПериод.Номенклатура И ЗакупкиОбороты.Период = МинимальныйПериод.Период  | 
|||
| 
    1
    
        mzelensky    
     15.04.20 
            ✎
    08:46 
 | 
         
        (0) Выбрать "минимальный" по дате документ и потом внутренним соединением соединить с таблицей.     
         | 
|||
| 
    2
    
        Alive    
     15.04.20 
            ✎
    08:50 
 | 
         
        дело в том, что у нескольких документов одинаковая дата, если я буду брать минимальные, он выбирает несколько , у кого одинаковая дата     
         | 
|||
| 
    3
    
        mzelensky    
     15.04.20 
            ✎
    08:59 
 | 
         
        (2) По твоей задаче - " получить начальную цену закупа". Если В один момент есть 2 документа с разной ценой, то какой из них ты выберешь? Не запросом я имею ввиду, а в принципе, какой из них нужно взятЬ? Если ответить на этот вопрос не сможешь, то нет смысла дальше ковыряться с задачей, суть которой не ясна.
 
        Варианты: 1) Взять любую. Т.к. они в один "момент" 2) Взять из них "минимальную\максимальную"  | 
|||
| 
    4
    
        rsv    
     15.04.20 
            ✎
    09:09 
 | 
         
        (0) эти доки попытаться пронумеровать  в запросе  по дате и выбирать где номер равно 1     
         | 
|||
| 
    5
    
        mzelensky    
     15.04.20 
            ✎
    09:11 
 | 
         
        (4) в (2) написано - "у нескольких документов одинаковая дата"     
         | 
|||
| 
    6
    
        Alive    
     15.04.20 
            ✎
    09:22 
 | 
         
        (3) нужно смотреть документ с меньшим номером     
         | 
|||
| 
    7
    
        mzelensky    
     15.04.20 
            ✎
    09:32 
 | 
         
        (6) НУ вот и ответ на твой вопрос - получаешь минимальный номер, потом по нему делаешь внутреннее соединение.
 
        Но запрос будет ОЧЕНЬ тяжкий, т.к. еще придется получать реквизит "номер" Т.е. будет так Номенклатура1 Док1.номер_01 Цена1 Номенклатура1 Док2.номер_02 Цена2 Получаешь минимальный номер и тогда будет с группировкой по номенклатуре Номенклатура1 Док1.номер_01 Далее делаешь внутреннее соединение по Номенклатуре и номеры удет в итоге Номенклатура1 Док1.номер_01 Цена1  | 
|||
| 
    8
    
        Alive    
     15.04.20 
            ✎
    10:32 
 | 
         
        (7) Спасибо, попробую!!!     
         | 
|||
| 
    9
    
        Lama12    
     15.04.20 
            ✎
    10:46 
 | 
         
        (8) А может сразу по номеру брать минимум и не заморачиваться по дате?     
         | 
|||
| 
    10
    
        Simod    
     15.04.20 
            ✎
    11:49 
 | 
         
        Как то так:
 
        ВЫБРАТЬ РН_Закупки.Регистратор, РН_Закупки.Номенклатура, РН_Закупки.МоментВремени ПОМЕСТИТЬ ВТ_Закупки ИЗ РегистрНакопления.Закупки КАК РН_Закупки ГДЕ РН_Закупки.Активность И РН_Закупки.Период МЕЖДУ &НачалоПериода И &КонецПериода И РН_Закупки.Номенклатура <> ЗНАЧЕНИЕ(Справочник.Номенклатура.ПустаяСсылка) ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ РАЗЛИЧНЫЕ ВТ_Закупки.Номенклатура, ВТ_Закупки.Регистратор ИЗ ВТ_Закупки КАК ВТ_Закупки ГДЕ ВТ_Закупки.Регистратор В (ВЫБРАТЬ ПЕРВЫЕ 1 Отбор.Регистратор ИЗ ВТ_Закупки КАК Отбор ГДЕ Отбор.Номенклатура = ВТ_Закупки.Номенклатура УПОРЯДОЧИТЬ ПО Отбор.МоментВремени)  | 
|||
| 
    11
    
        Alive    
     15.04.20 
            ✎
    14:09 
 | 
         
        (10) все получилось, спасибо!     
         | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |