Имя: Пароль:
1C
1С v8
Запрос. Выбрать несколько последних регистраторов по регистру в разрезе номенкл.
,
0 Sharmon
 
27.05.14
17:00
Помогите советом.
Нужно вытажить запросом из регистра накоплений Закупки последние 3 документа в разрезе каждой номенклатуры?

ВЫБРАТЬ ПЕРВЫЕ 3
    ЗакупкиОбороты.Номенклатура,
    ЗакупкиОбороты.Регистратор
ИЗ
    РегистрНакопления.Закупки.Обороты(&НачПериода, &КонПериода, Регистратор, ) КАК ЗакупкиОбороты

УПОРЯДОЧИТЬ ПО
    ЗакупкиОбороты.Регистратор.Дата УБЫВ

Вот рыба запроса. Но здесь просто выбираются 3 последних документа и номенклатура по ним. Нужно как-то в разрезе номенклатуры вытащить регистраторы.
1 Wobland
 
27.05.14
17:01
выбрать различные 3 из обороты(номенклатура)?
2 Sharmon
 
27.05.14
17:02
Нужно именно 3 последние. Т.е. узнать последние 3 документа продажи по каждой номенклатуре. И все в одном запросе.
3 Wobland
 
27.05.14
17:03
(2) не дошло?
4 Sharmon
 
27.05.14
17:05
(3) Что-то не очень.
5 Maxus43
 
27.05.14
17:09
(3) давай кидай запрос, не томи)
6 Wobland
 
27.05.14
17:10
(5) и да смилостивятся надо мной боги

ВЫБРАТЬ различные ПЕРВЫЕ 3
    ЗакупкиОбороты.Номенклатура,
    ЗакупкиОбороты.Регистратор
ИЗ
    РегистрНакопления.Закупки.Обороты(&НачПериода, &КонПериода, Регистратор, Номенклатура=&Грабли) КАК ЗакупкиОбороты

УПОРЯДОЧИТЬ ПО
    ЗакупкиОбороты.Регистратор.Дата УБЫВ
7 Sharmon
 
27.05.14
17:12
(6) Спасибо, попробую по этому способу
8 Sharmon
 
27.05.14
17:14
(6) не совсем так. Этим запросом мы получим номенклатуру по 3 последним документам. А нужно по каждой номенклатуре вывести последние документы
9 Крошка Ру
 
27.05.14
17:15
(8) Т.е. по КАЖДОЙ номенклатуре ПО 3 документа?
10 Wobland
 
27.05.14
17:16
(8)
ВЫБРАТЬ различные ПЕРВЫЕ 3
    ЗакупкиОбороты.Регистратор
ИЗ
    РегистрНакопления.Закупки.Обороты(&НачПериода, &КонПериода, Регистратор, Номенклатура=&Грабли) КАК ЗакупкиОбороты

УПОРЯДОЧИТЬ ПО
    ЗакупкиОбороты.Регистратор.Дата УБЫВ
11 mr_K
 
27.05.14
17:19
Я думаю стоит копать в эту сторону
http://kb.mista.ru/article.php?id=703
12 Sharmon
 
27.05.14
17:19
(10) спасибо конечно, но тогда вложенный запрос, неоптимально по времени выполнения
13 Крошка Ру
 
27.05.14
17:20
(12) ВТ?
14 Wobland
 
27.05.14
17:23
(12) на здоровье, конечно, но почему бы не рассказать всё и сразу?
15 МойКодУныл
 
27.05.14
17:25
Запрос в цикле по номенклатуре. Может лучше собрать все регистраторы за выбранный период. больше не меньше:)
16 Ymryn
 
27.05.14
17:33
(15) Изврат... в (11) же дали ответ. Посмотрите на "Например, перед нами стоит задача получить для каждого контрагента пять последних документов поступления товаров и услуг: "
17 Sharmon
 
27.05.14
17:38
(16) пример какой-то нерабочий. Ругается на 3-. строку запроса:
КОЛИЧЕСТВО(ПоступлениеТоваровУслуг_1.Ссылка) КАК Номер
18 Wobland
 
27.05.14
17:39
(17) ну синтаксически верная строка. ну и чо?
19 Sharmon
 
27.05.14
17:44
Все верно. Сам ошибся. Пример рабочий. Вот мой запрос:

ВЫБРАТЬ
    ЗакупкиОбороты.Номенклатура КАК Номенклатура,
    ЗакупкиОбороты.Регистратор.Ссылка КАК Ссылка,
    КОЛИЧЕСТВО(ЗакупкиОбороты1.Регистратор.Ссылка) КАК Номер
ИЗ
    РегистрНакопления.Закупки.Обороты(&НачПериода, &КонПериода, Регистратор, ) КАК ЗакупкиОбороты
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ РегистрНакопления.Закупки.Обороты(&НачПериода, &КонПериода, Регистратор, ) КАК ЗакупкиОбороты1
        ПО ЗакупкиОбороты.Регистратор.Дата <= ЗакупкиОбороты1.Регистратор.Дата
            И ЗакупкиОбороты.Номенклатура = ЗакупкиОбороты1.Номенклатура

СГРУППИРОВАТЬ ПО
    ЗакупкиОбороты.Регистратор.Ссылка,
    ЗакупкиОбороты.Номенклатура

ИМЕЮЩИЕ
    КОЛИЧЕСТВО(ЗакупкиОбороты1.Регистратор.Ссылка) <= 3

УПОРЯДОЧИТЬ ПО
    Номенклатура,
    Номер
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.