Имя: Пароль:
1C
1С v8
Помогите с запросом. Определить наиболее продаваемые товары в день
, ,
0 AntonyFO
 
21.10.15
13:02
Добрый день! Есть задача определить наиболее продаваемые товары в день. Получил таблицу с количеством продаж, поместил во временную:
"ВЫБРАТЬ
    |    ПродажиОбороты.Период КАК Период,
    |    ПродажиОбороты.Номенклатура КАК Номенклатура,
    |    СУММА(ПродажиОбороты.КоличествоОборот) КАК КоличествоОборот
        |ПОМЕСТИТЬ
        |   Продажи
    |ИЗ
    |    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты
    |
    |СГРУППИРОВАТЬ ПО
    |    ПродажиОбороты.Период,
    |    ПродажиОбороты.Номенклатура";
1 AntonyFO
 
21.10.15
13:03
Не могу сообразить как теперь выбрать товары с наибольшим количеством по дням. Подскажите пожалуйста...
2 Волшебник
 
модератор
21.10.15
13:03
СУММА и СГРУППИРОВАТЬ ПО не нужны
3 AntonyFO
 
21.10.15
13:04
Или вообще не так начал?
4 AntonyFO
 
21.10.15
13:05
(2) ага, возможно, щас подумаю
5 Nuobu
 
21.10.15
13:08
(1) упорядочить По КоличествоОборот УБЫВ
6 AntonyFO
 
21.10.15
13:11
(5) не, не, в итоге должна получиться таблица из трёх полей: "период", "номенклатура" и "количество" (наибольшее, если например, две и более номенклатуры, то все их вывести)
7 AntonyFO
 
21.10.15
13:29
Нда, намудрил, всё проще, надо так:
   "ВЫБРАТЬ
    |ПродажиОбороты.Период КАК Период,
    |ПродажиОбороты.Номенклатура КАК Номенклатура,
    |ПродажиОбороты.КоличествоОборот КАК КоличествоОборот
    |ИЗ
    |    РегистрНакопления.Продажи.Обороты(&ДатаНачала, &ДатаОкончания, День, ) КАК ПродажиОбороты
    |        ЛЕВОЕ СОЕДИНЕНИЕ РегистрСведений.РегламентированныйПроизводственныйКалендарь КАК РегламентированныйПроизводственныйКалендарь
    |        ПО ПродажиОбороты.Период = РегламентированныйПроизводственныйКалендарь.ДатаКалендаря
    |ГДЕ
    |    РегламентированныйПроизводственныйКалендарь.ВидДня = &Рабочий
    |    И ПродажиОбороты.КоличествоОборот > 0
    |ИТОГИ
    |    МАКСИМУМ(КоличествоОборот)";
    |ПО
    |    Период ПЕРИОДАМИ(ДЕНЬ, &ДатаНачала, &ДатаОкончания)

Потом в выборке просто ориентироваться на итог по дню..
8 BuHu
 
21.10.15
13:36
(7) хорошо бы еще учитывать количество времени которое товар был на остатке . т.е. какой то товар мог бы продаваться гораздо лучше , но большую часть времени его не было в наличии .
9 Михаил Козлов
 
21.10.15
13:58
(7) Чем штатный отчет по продажам не подходит (с сортировкой по КоличествоОборот)?
10 rabbidX
 
21.10.15
14:28
Обычно пишут так:

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Период,
    МАКСИМУМ(Продажи.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ МаксимальныеПродажиПоДням
ИЗ
    Продажи КАК Продажи

СГРУППИРОВАТЬ ПО
    Продажи.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Период,
    Продажи.Номенклатура,
    Продажи.КоличествоОборот
ИЗ
    Продажи КАК Продажи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксимальныеПродажиПоДням КАК МаксимальныеПродажиПоДням
        ПО Продажи.Период = МаксимальныеПродажиПоДням.Период
            И Продажи.КоличествоОборот = МаксимальныеПродажиПоДням.КоличествоОборот

Так без мусора получается.
Отбор по рабочим дням сам прикрути.
Итоговые данные из этой таблицы брать нельзя, за один день могут быть несколько товаров с максимальным количеством продаж.
11 AntonyFO
 
21.10.15
14:39
(10)Спасибо большое, надо было две временных таблицы, не догнал. Да, так без экивоков получается
12 AntonyFO
 
21.10.15
14:43
собственно так получается:

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

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Период,
    МАКСИМУМ(Продажи.КоличествоОборот) КАК КоличествоОборот
ПОМЕСТИТЬ МаксимальныеПродажиПоДням
ИЗ
    Продажи КАК Продажи

СГРУППИРОВАТЬ ПО
    Продажи.Период
;

////////////////////////////////////////////////////////////////////////////////
ВЫБРАТЬ
    Продажи.Период КАК Период,
    Продажи.Номенклатура КАК Номенклатура,
    Продажи.КоличествоОборот
ИЗ
    Продажи КАК Продажи
        ВНУТРЕННЕЕ СОЕДИНЕНИЕ МаксимальныеПродажиПоДням КАК МаксимальныеПродажиПоДням
        ПО Продажи.Период = МаксимальныеПродажиПоДням.Период
            И Продажи.КоличествоОборот = МаксимальныеПродажиПоДням.КоличествоОборот

УПОРЯДОЧИТЬ ПО
    Период,
    Номенклатура