| 
    
            
         
         | 
    
  | 
Проблема с запросом | ☑ | ||
|---|---|---|---|---|
| 
    0
    
        jamesgold    
     28.04.15 
            ✎
    09:40 
 | 
         
        Добрый день, прошу помочь!
 
        Имеется две таблицы: Регистр накопленния и табличная часть документа. Примерно выглядит так, скрин: http://s018.radikal.ru/i523/1504/26/67abc859a88e.jpg Необходимо в итоговой таблице к номенклатуре с количеством подставлять цену с самой поздней датой из табличной части документа Написал такой запрос, скажите в чем ошибка: ВЫБРАТЬ ОстаткиИнструментовИРасходниковОстаткиИОбороты.Организация, ОстаткиИнструментовИРасходниковОстаткиИОбороты.Номенклатура, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоНачальныйОстаток, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоПриход, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоРасход, ОстаткиИнструментовИРасходниковОстаткиИОбороты.КоличествоКонечныйОстаток, ВложенныйЗапрос.Цена ИЗ РегистрНакопления.ОстаткиИнструментовИРасходников.ОстаткиИОбороты(&ДатаНач, &ДатаКон, , , ) КАК ОстаткиИнструментовИРасходниковОстаткиИОбороты ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПЕРВЫЕ 1 ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.НоменклатураЗаказа КАК НоменклатураЗаказа, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары УПОРЯДОЧИТЬ ПО Дата УБЫВ) КАК ВложенныйЗапрос ПО ОстаткиИнструментовИРасходниковОстаткиИОбороты.Номенклатура = ВложенныйЗапрос.Номенклатура ГДЕ ОстаткиИнструментовИРасходниковОстаткиИОбороты.Организация = &Организация Скрин: http://s018.radikal.ru/i517/1504/69/ff08d06776a4.jpg  | 
|||
| 
    1
    
        jsmith82    
     28.04.15 
            ✎
    09:43 
 | 
         
        ну, тут надо писать вложенный запрос с максимум
 
        а вообще лучше запили регистр сведений, который заполняется при проведении документа  | 
|||
| 
    2
    
        jamesgold    
     28.04.15 
            ✎
    09:45 
 | 
         
        Поподробней можно насчет максимум?     
         | 
|||
| 
    3
    
        zak555    
     28.04.15 
            ✎
    09:45 
 | 
         
        > Необходимо в итоговой таблице к номенклатуре с количеством подставлять цену с самой поздней датой из табличной части документа 
 
        клеит движения рн с тч по регистратору, номенклатуре и количеству отсюда достаём цену  | 
|||
| 
    4
    
        Drac0    
     28.04.15 
            ✎
    09:52 
 | 
         
        (1) +1     
         | 
|||
| 
    5
    
        jamesgold    
     28.04.15 
            ✎
    09:56 
 | 
         
        Как это будет примерно выглядеть с максумум? Можно схематично набросать?     
         | 
|||
| 
    6
    
        zak555    
     28.04.15 
            ✎
    09:58 
 | 
         
        (5) ты лучше определись -- может ли быть в одном документе прихода две одинаковые строки в количественном выражении, но с разной ценной ?
 
        если нет -- делай 3 -- без всяких там вложенных запросов  | 
|||
| 
    7
    
        jsmith82    
     28.04.15 
            ✎
    09:59 
 | 
||||
| 
    8
    
        jamesgold    
     28.04.15 
            ✎
    11:27 
 | 
         
        Переписал запрос с функцией максимум:
 
        ВЫБРАТЬ МАКСИМУМ(ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата) КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ГДЕ ПоступлениеИнструментаИРасходниковТовары.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена Скрин: http://s017.radikal.ru/i442/1504/d1/d80f3ff93f34.jpg Подскажите, что допилить в запросе, чтобы получалась одна строчка где дата максимальная?  | 
|||
| 
    9
    
        jsmith82    
     28.04.15 
            ✎
    11:36 
 | 
         
        цену убери, потом левое с ТЧ по дата и номенклатура, там цену выдернешь     
         | 
|||
| 
    10
    
        jamesgold    
     28.04.15 
            ✎
    12:22 
 | 
         
        (9) В итоге получился следующий запрос:
 
        ВЫБРАТЬ МАКСИМУМ(ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата) КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ВложенныйЗапрос.Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ЛЕВОЕ СОЕДИНЕНИЕ (ВЫБРАТЬ ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары) КАК ВложенныйЗапрос ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура = ВложенныйЗапрос.Номенклатура И ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата = ВложенныйЗапрос.Дата ГДЕ ПоступлениеИнструментаИРасходниковТовары.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура, ВложенныйЗапрос.Цена Но результат тотже, теже 3 строки  | 
|||
| 
    11
    
        anaed    
     28.04.15 
            ✎
    12:41 
 | 
         
        Но в (7) же ссылка...
 
        Проблема в том, что для каждого сочетания номенклатура+цена Дата максимальна, а вам нужен максимум только для номенклатуры. 1) Загоняете выборку со всеми сочетаниями номенклатура-цена-дата в 1ую временную таблицу. 2) Во 2ую временную таблицу выбираете записи с максимальными датами из 1ой таблицу группируя только по номенклатуре. Таким образом получаете табличку в которой для каждой номенклатуры указана последняя дата. Теперь нужно из 1 таблицы отобрать нужные записи, для этого: 3) Внутреннем соединением соединяете 1 и 2 таблицу по номенклатуре и датам. Ваши "исправленные" запросы ерунда какая-то. В первую временную таблицу попробуйте поместить выборку из (0), только уберите во вложенном запросе упорядочивание и "первые", чтобы все даты получить.  | 
|||
| 
    12
    
        jamesgold    
     28.04.15 
            ✎
    12:52 
 | 
         
        Спасибо за развернутый ответ, сейчас попробую и обязательно отпишусь (11)     
         | 
|||
| 
    13
    
        jsmith82    
     28.04.15 
            ✎
    13:06 
 | 
         
        (10) я сказал цену убрать     
         | 
|||
| 
    14
    
        jsmith82    
     28.04.15 
            ✎
    13:06 
 | 
         
        а, сорри     
         | 
|||
| 
    15
    
        jamesgold    
     28.04.15 
            ✎
    15:32 
 | 
         
        (11) Большое спасибо, все получилось!
 
        Вот итоговый правильный запрос: ВЫБРАТЬ МАКСИМУМ(ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата) КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура ПОМЕСТИТЬ ВТ_НомПоследняяДата ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ГДЕ ПоступлениеИнструментаИРасходниковТовары.Номенклатура = &Номенклатура СГРУППИРОВАТЬ ПО ПоступлениеИнструментаИРасходниковТовары.Номенклатура ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ПоступлениеИнструментаИРасходниковТовары.Ссылка.Дата КАК Дата, ПоступлениеИнструментаИРасходниковТовары.Номенклатура КАК Номенклатура, ПоступлениеИнструментаИРасходниковТовары.Цена КАК Цена ПОМЕСТИТЬ ВТ_Общий_ДатаНоменклатураЦена ИЗ Документ.ПоступлениеИнструментаИРасходников.Товары КАК ПоступлениеИнструментаИРасходниковТовары ; //////////////////////////////////////////////////////////////////////////////// ВЫБРАТЬ ВТ_НомПоследняяДата.Номенклатура, ВТ_НомПоследняяДата.Дата, ВТ_Общий_ДатаНоменклатураЦена.Цена ИЗ ВТ_НомПоследняяДата КАК ВТ_НомПоследняяДата ВНУТРЕННЕЕ СОЕДИНЕНИЕ ВТ_Общий_ДатаНоменклатураЦена КАК ВТ_Общий_ДатаНоменклатураЦена ПО ВТ_НомПоследняяДата.Дата = ВТ_Общий_ДатаНоменклатураЦена.Дата И ВТ_НомПоследняяДата.Номенклатура = ВТ_Общий_ДатаНоменклатураЦена.Номенклатура  | 
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |