Вход | Регистрация
 
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 или кнопку "Обновить" в браузере.