Имя: Пароль:
1C
1С v8
Помогите пожалуйста с запросом
0 Gera1t
 
02.02.23
10:39
Здравствуйте!
Вот такой запрос:

ВЫБРАТЬ
    ЗаказПокупателяЗапасы.Номенклатура КАК Номенклатура,
    ЗаказПокупателяЗапасы.Характеристика КАК Характеристика,
    СпецификацииСостав.Номенклатура КАК Комплектующее,
    СпецификацииСостав.Характеристика КАК КомплектующееХарактеристика,
    СпецификацииСостав.Количество КАК Количество
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СпецификацииСостав
        ПО (ЗаказПокупателяЗапасы.Спецификация = СпецификацииСостав.Ссылка)
ГДЕ
    ЗаказПокупателяЗапасы.Ссылка = &Ссылка
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Закупки.Номенклатура КАК Номенклатура,
    Закупки.Характеристика КАК Характеристика,
    Закупки.Сумма / Закупки.Количество КАК Стоимость
ИЗ
    РегистрНакопления.Закупки КАК Закупки
ГДЕ
    Закупки.Номенклатура В
            (ВЫБРАТЬ
                ВТ.Комплектующее КАК Комплектующее
            ИЗ
                ВТ КАК ВТ)
    И Закупки.Период <= &Период

УПОРЯДОЧИТЬ ПО
    Закупки.Период УБЫВ

Задача выбрать последнюю закупку. Но если делаю так, то в запрос попадает не только последняя закупка, но и вся закупка за период меньше указанной даты.
Сейчас решил путем разделения этого запроса на 2.
Сначала вот так:

ВЫБРАТЬ
    ЗаказПокупателяЗапасы.Номенклатура КАК Номенклатура,
    ЗаказПокупателяЗапасы.Характеристика КАК Характеристика,
    СпецификацииСостав.Номенклатура КАК Комплектующее,
    СпецификацииСостав.Характеристика КАК КомплектующееХарактеристика,
    СпецификацииСостав.Количество КАК Количество
ПОМЕСТИТЬ ВТ
ИЗ
    Документ.ЗаказПокупателя.Запасы КАК ЗаказПокупателяЗапасы
        ЛЕВОЕ СОЕДИНЕНИЕ Справочник.Спецификации.Состав КАК СпецификацииСостав
        ПО (ЗаказПокупателяЗапасы.Спецификация = СпецификацииСостав.Ссылка)
ГДЕ
    ЗаказПокупателяЗапасы.Ссылка = &Ссылка
;


а потом вот так:

ВЫБРАТЬ ПЕРВЫЕ 1
    Закупки.Номенклатура,
    Закупки.Характеристика,
    Закупки.Сумма / Закупки.Количество КАК Стоимость,
    Закупки.Период КАК Период
ИЗ
    РегистрНакопления.Закупки КАК Закупки
ГДЕ
    Закупки.Номенклатура = &Номенклатура
    И Закупки.Характеристика = &Характеристика
    И Закупки.Период <= &Период

УПОРЯДОЧИТЬ ПО
    Период УБЫВ

Подскажите пожалуйста, можно ли как то это реализовать в 1 запросе?
2 saaken
 
02.02.23
10:47
ищи максимальный период по нужному измерению. Ищи информацию по "срез последних на каждую дату"
3 Gera1t
 
02.02.23
10:48
Спасибо!
4 eddy_n
 
02.02.23
11:00
В итоговом запросе рядом с полем номенклатуры (и возможно характеристикой) рядом должно присутствовать только поле периода и больше ничего. ИНАЧЕ БУДЕТ МИЛЛИОН ПЕРВЫХ ЗАПИСЕЙ. Сворачивай подзапросами предварительно, если стоит условие сделать всё в одном флаконе.
5 Gera1t
 
02.02.23
11:22
(4) Условия такого нет, но для себя разобраться хотел.
6 eddy_n
 
02.02.23
11:25
(5) Если так, то не используй подзапросы на больших выборках. ВРЕМЕННЫЕ ТАБЛИЦЫ помогут. У подзапросов нет Плана, выражаясь языком СУБД. Статистики тоже естественно нет. Это - кот в мешке.