Вход | Регистрация
 
1С:Предприятие :: 1С:Предприятие 8 общая

Нужно выбрать 5 самых дорогих по стоимости работ

Нужно выбрать 5 самых дорогих по стоимости работ
Я
   anna_z
 
17.11.20 - 20:51
Здравствуйте! Есть 2 таблицы: Трудозатраты (ВидРабот, ТипРабот, ЗатраченоЧасов) и Цены (ТипРабот, Цена). Нужно выбрать 5 самых дорогих по стоимости работ (стоимость считается как Цена*ЗатраченоЧасов) и вывести суммарную стоимость. Пишу запрос:
ВЫБРАТЬ ПЕРВЫЕ 5
    ТРУДОЗАТРАТЫ.ВидРабот КАК ВидРабот,
        ЗатраченоЧасов*Цена КАК Стоимость
ИЗ
        ТРУДОЗАТРАТЫ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
       ЦЕНЫ
ПО
       ТРУДОЗАТРАТЫ.ТипРабот = ЦЕНЫ.ТипРабот
УПОРЯДОЧИТЬ ПО
    Стоимость УБЫВ
ИТОГИ
    СУММА(Стоимость)
ПО
    ОБЩИЕ            
Возвращает только суммарную стоимость. Что я делаю не так?
   Михаил Козлов
 
1 - 17.11.20 - 21:05
"Возвращает только суммарную стоимость" в консоли запросов или в приложении? Попробуйте без итогов.
   Ненавижу 1С
 
2 - 17.11.20 - 21:05
ВЫБРАТЬ ПЕРВЫЕ 5
    ТРУДОЗАТРАТЫ.ВидРабот КАК ВидРабот,
        СУММА(ЗатраченоЧасов*Цена) КАК Стоимость
ИЗ
        ТРУДОЗАТРАТЫ
ВНУТРЕННЕЕ СОЕДИНЕНИЕ
       ЦЕНЫ
ПО
       ТРУДОЗАТРАТЫ.ТипРабот = ЦЕНЫ.ТипРабот
СГРУППИРОВАТЬ ПО
  ТРУДОЗАТРАТЫ.ВидРабот
УПОРЯДОЧИТЬ ПО
    Стоимость УБЫВ
   novichok79
 
3 - 17.11.20 - 21:06
итоги надо убрать
   anna_z
 
4 - 17.11.20 - 21:16
(1)В приложении. Без итогов выводит стоимость всех работ, но не выводит суммарную стоимость.
(2)Так тоже не считает суммарную стоимость.
В принципе, ее можно отдельно посчитать.
   novichok79
 
5 - 17.11.20 - 21:21
(4) Выборка.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам)?
   Бишбармак
 
6 - 18.11.20 - 09:37
(ООО "На коленке эдишн" представляет. Копилефт)
.....

Запрос = Новый Запрос;
    Запрос.Текст = 
        "ВЫБРАТЬ ПЕРВЫЕ 5
        |    ЦеныРабот.Цена КАК Цена,
        |    ЦеныРабот.Работа КАК Работа
        |ПОМЕСТИТЬ ВТ_Дорогие
        |ИЗ
        |    РегистрСведений.ЦеныРабот КАК ЦеныРабот
        |
        |УПОРЯДОЧИТЬ ПО
        |    Цена УБЫВ
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    СУММА(СделкаРаботы.Часы) КАК Часы,
        |    СделкаРаботы.Работа КАК Работа1
        |ПОМЕСТИТЬ ВТ_РаботыЧасы
        |ИЗ
        |    Документ.Сделка.Работы КАК СделкаРаботы
        |ГДЕ
        |    СделкаРаботы.Работа В
        |            (ВЫБРАТЬ
        |                ВТ_Дорогие.Работа КАК Работа
        |            ИЗ
        |                ВТ_Дорогие КАК ВТ_Дорогие)
        |
        |СГРУППИРОВАТЬ ПО
        |    СделкаРаботы.Работа
        |;
        |
        ////////////////////////////////////////////////////////////////////////////////

        |ВЫБРАТЬ
        |    ВТ_Дорогие.Работа КАК Работа,
        |    СУММА(ВТ_РаботыЧасы.Часы * ВТ_Дорогие.Цена) КАК Стоимость
        |ИЗ
        |    ВТ_Дорогие КАК ВТ_Дорогие
        |        ЛЕВОЕ СОЕДИНЕНИЕ ВТ_РаботыЧасы КАК ВТ_РаботыЧасы
        |        ПО ВТ_Дорогие.Работа = ВТ_РаботыЧасы.Работа1
        |
        |СГРУППИРОВАТЬ ПО
        |    ВТ_Дорогие.Работа
        |ИТОГИ
        |    СУММА(Стоимость)
        |ПО
        |    ОБЩИЕ,
        |    Работа";
    
    РезультатЗапроса = Запрос.Выполнить();
    
    ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок");
    ОбластьПодвал = Макет.ПолучитьОбласть("Подвал");
    ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы");
    ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы");
    ОбластьРабота = Макет.ПолучитьОбласть("Работа");
    
    ТабДок.Очистить();
    ТабДок.Вывести(ОбластьЗаголовок);
    ТабДок.Вывести(ОбластьШапкаТаблицы);
    ТабДок.НачатьАвтогруппировкуСтрок();
    
    ВыборкаРабота = РезультатЗапроса.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
    
    Пока ВыборкаРабота.Следующий() Цикл
        ОбластьРабота.Параметры.Заполнить(ВыборкаРабота);
        ТабДок.Вывести(ОбластьРабота, ВыборкаРабота.Уровень());
        ВыборкаРабота=ВыборкаРабота.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
        Пока ВыборкаРабота.Следующий() Цикл
            ОбластьРабота.Параметры.Заполнить(ВыборкаРабота);
            ТабДок.Вывести(ОбластьРабота, ВыборкаРабота.Уровень());
        КонецЦикла;
    КонецЦикла;
   Vadim_37
 
7 - 18.11.20 - 09:59
(6) не попал, выбираешь 5 дорогих по цене, а надо по стоимости
   Бишбармак
 
8 - 18.11.20 - 10:12
(7) Ааа.... гляжу в книгу... там картинки
   Бишбармак
 
9 - 18.11.20 - 10:14
(+8) Тогда в (0)
не хватает

ПО
  ОБЩИЕ,
  ВидРабот

И обход по группировкм

Список тем форума
 
ВНИМАНИЕ! Если вы потеряли окно ввода сообщения, нажмите Ctrl-F5 или Ctrl-R или кнопку "Обновить" в браузере.
Тема не обновлялась длительное время, и была помечена как архивная. Добавление сообщений невозможно.
Но вы можете создать новую ветку и вам обязательно ответят!
Каждый час на Волшебном форуме бывает более 2000 человек.