Имя: Пароль:
1C
1С v8
Запрос, и работа только с первыми документами
0 Грызлик
 
16.12.14
21:08
Суть задачи Получить в запросе отбор по минимальной дате. Столько раз делал. А теперь не могу решить. Есть поступления. От разных контрагентов. И дата отчета. Мне нужно выбрать поступления которые максимально приближены к дате отчета. т.е. окнтрагент-одни документ, а получается контрагент, и все документы до даты отчета. А не один документ. Делаю через вложенный запрос. И в нем все равно выходят все документы до этой даты.. а не только самый последний.
1 Windyhead
 
16.12.14
21:10
вложенным отобрать все до даты, отсортировать, верхним запросом выбрать ТОЛЬКО ПЕРВЫЕ
2 kosts
 
16.12.14
21:12
Выборку по документам/контрагентам соедини с вложенной выборкой по дата,документ,контрагент. Во внутренней выборке есть группировка по контрагент/документ и минимуму дате. Во внутренней выборке других полей не должно быть.
3 Ник второй
 
16.12.14
21:14
(1) Прошу больше никогда не писать такой глупости....
4 Ник второй
 
16.12.14
21:15
(2) + Фактически это называется срез первых/последних через запрос
5 kosts
 
16.12.14
21:18
(2)+ писал в торопях, возможно во внутренней выборке и поле документа лишнее. Контрагент и дата.
6 Грызлик
 
16.12.14
21:23
(2) У меня во вложенном запросе где я делаю группировку по Контрагенту и Минимум(дата документа) все равно отображаются все документы.
7 Dionis Sergeevich
 
16.12.14
21:28
имеющие дата = минимум(дата)
8 Dionis Sergeevich
 
16.12.14
21:33
или по такому принципу "WHERE date = (SELECT max(date) FROM table)"
9 kosts
 
16.12.14
21:45
(6) Ну выложи запрос, может ктонить , чтонить подскажет
10 Грызлик
 
16.12.14
22:18
Все. Решил.. Две ошибки были. Указал во вложенном запросе количество и регистратор.
Вот код.. моего решения готового.

ВЫБРАТЬ
    ВложенныйЗапрос.ОбъектКонтрагента,
    ВложенныйЗапрос.Изделие,
    ВложенныйЗапрос.ХарактеристикаИзделия,
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры,
    ВложенныйЗапрос.ЗаявкаПредполагаемаяДатаОтгурзки КАК ЗаявкаПредполагаемаяДатаОтгурзки,
    СУММА(ЕСТЬNULL(ЗаявкиНаОтгрузкуОбороты.Количество, 0)) КАК КолМаксимальнойПриближеннойДатыОтгрузки
ПОМЕСТИТЬ ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество
ИЗ
    (ВЫБРАТЬ
        ЗаявкиНаОтгрузкуОбороты.ОбъектКонтрагента КАК ОбъектКонтрагента,
        ЗаявкиНаОтгрузкуОбороты.Изделие КАК Изделие,
        ЗаявкиНаОтгрузкуОбороты.ХарактеристикаИзделия КАК ХарактеристикаИзделия,
        ЗаявкиНаОтгрузкуОбороты.Номенклатура КАК Номенклатура,
        ЗаявкиНаОтгрузкуОбороты.ХарактеристикаНоменклатуры КАК ХарактеристикаНоменклатуры,
        МИНИМУМ(ЗаявкиНаОтгрузкуОбороты.Заявка.ПредполагаемаяДатаОтгурзки) КАК ЗаявкаПредполагаемаяДатаОтгурзки
    ИЗ
        РегистрСведений.ЗаявкиНаОтгрузкуОбороты КАК ЗаявкиНаОтгрузкуОбороты
    ГДЕ
        ЗаявкиНаОтгрузкуОбороты.Заявка.ПредполагаемаяДатаОтгурзки >= &Дата
    
    СГРУППИРОВАТЬ ПО
        ЗаявкиНаОтгрузкуОбороты.ОбъектКонтрагента,
        ЗаявкиНаОтгрузкуОбороты.Изделие,
        ЗаявкиНаОтгрузкуОбороты.ХарактеристикаИзделия,
        ЗаявкиНаОтгрузкуОбороты.Номенклатура,
        ЗаявкиНаОтгрузкуОбороты.ХарактеристикаНоменклатуры) КАК ВложенныйЗапрос
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявкиНаОтгрузкуОбороты КАК ЗаявкиНаОтгрузкуОбороты
        ПО ВложенныйЗапрос.ОбъектКонтрагента = ЗаявкиНаОтгрузкуОбороты.ОбъектКонтрагента
            И ВложенныйЗапрос.Изделие = ЗаявкиНаОтгрузкуОбороты.Изделие
            И ВложенныйЗапрос.ХарактеристикаИзделия = ЗаявкиНаОтгрузкуОбороты.ХарактеристикаИзделия
            И ВложенныйЗапрос.Номенклатура = ЗаявкиНаОтгрузкуОбороты.Номенклатура
            И ВложенныйЗапрос.ХарактеристикаНоменклатуры = ЗаявкиНаОтгрузкуОбороты.ХарактеристикаНоменклатуры
            И ВложенныйЗапрос.ЗаявкаПредполагаемаяДатаОтгурзки = ЗаявкиНаОтгрузкуОбороты.Заявка.ПредполагаемаяДатаОтгурзки

СГРУППИРОВАТЬ ПО
    ВложенныйЗапрос.ОбъектКонтрагента,
    ВложенныйЗапрос.Изделие,
    ВложенныйЗапрос.ХарактеристикаИзделия,
    ВложенныйЗапрос.Номенклатура,
    ВложенныйЗапрос.ХарактеристикаНоменклатуры,
    ВложенныйЗапрос.ЗаявкаПредполагаемаяДатаОтгурзки
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ОбъектКонтрагента,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.Изделие,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ХарактеристикаИзделия,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.Номенклатура,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ХарактеристикаНоменклатуры,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ЗаявкаПредполагаемаяДатаОтгурзки,
    МИНИМУМ(ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.КолМаксимальнойПриближеннойДатыОтгрузки) КАК КолМаксимальнойПриближеннойДатыОтгрузки,
    СУММА(ЕСТЬNULL(ЗаявкиНаОтгрузкуОбороты.Количество, 0)) КАК КолВсего
ИЗ
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество КАК ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество
        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.ЗаявкиНаОтгрузкуОбороты КАК ЗаявкиНаОтгрузкуОбороты
        ПО ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ОбъектКонтрагента = ЗаявкиНаОтгрузкуОбороты.ОбъектКонтрагента
            И ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.Изделие = ЗаявкиНаОтгрузкуОбороты.Изделие
            И ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ХарактеристикаИзделия = ЗаявкиНаОтгрузкуОбороты.ХарактеристикаИзделия
            И ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.Номенклатура = ЗаявкиНаОтгрузкуОбороты.Номенклатура
            И ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ХарактеристикаНоменклатуры = ЗаявкиНаОтгрузкуОбороты.ХарактеристикаНоменклатуры

СГРУППИРОВАТЬ ПО
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.Изделие,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ХарактеристикаИзделия,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ОбъектКонтрагента,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.Номенклатура,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ХарактеристикаНоменклатуры,
    ВТ_ДатаБлижайшейОтгрузкиСБлижайшимКоличество.ЗаявкаПредполагаемаяДатаОтгурзки