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

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

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

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