Имя: Пароль:
1C
1С v8
Как получить итог в запросе?
,
0 Kamich
 
02.04.13
21:09
Добрый вечер.
Как получить в запросе по Из ТЧ Документа?
Ну что-то вроде ТабличнаяЧасть1.Итог("Сумма") того но в запросе.
1 ChAlex
 
02.04.13
21:15
Ну аналогично  ИТОГИ СУММА(Чтото) ПО Чемто
2 Kamich
 
02.04.13
21:20
(1)
   Запрос=Новый Запрос();
   Запрос.Текст=
   "ВЫБРАТЬ
   |    Заявка.КлассНомера КАК КлассНомера,
   |    Заявка.Количество КАК Количество,
   |    Заявка.Ссылка КАК Ссылка
   |ИЗ
   |    Документ.Заявка.Клиент КАК Заявка
   |ГДЕ
   |    Заявка.Ссылка = &Ссылка
   |УПОРЯДОЧИТЬ ПО
   |Ссылка
   |ИТОГИ
   |СУММА(SRКоличество
   |ПО
   |ОБЩИЕ ";
Что -то вроде этого ? или что?
3 Kamich
 
02.04.13
21:21
(2) * СУММА(Количество)
4 ChAlex
 
02.04.13
21:30
Так без всяких что-то вроде
5 Kamich
 
02.04.13
21:37
Запрос=Новый Запрос();
   Запрос.Текст=
   "ВЫБРАТЬ
   |    Заявка.КлассНомера КАК КлассНомера,
   |    Заявка.Количество КАК Количество,
   |    Заявка.Ссылка КАК Ссылка
   |ИЗ
   |    Документ.Заявка.Клиент КАК Заявка
   |ГДЕ
   |    Заявка.Ссылка = &Ссылка
   |УПОРЯДОЧИТЬ ПО
   |Ссылка
   |ИТОГИ
   |СУММА(SRКоличество
   |ПО
   |ОБЩИЕ ";
Запрос.УстановитьПараметр("Ссылка",ЭлементыФормы.Заявка.Значение.Ссылка);
 Результат=Запрос.Выполнить().Выбрать();  
Пока Результат.Следующий()>0 Цикл
        Если Результат.Количество>0 Тогда
        НоваяСтрока=Таблица.Добавить();         НоваяСтрока.Количество=Результат.Количество;         НоваяСтрока.КлассНомера=Результат.КлассНомера;    
    КонецЕсли;
 КонецЦикла;

Почему он мне выводит список в начале общее количество,из примера 5,и добавляет еще пять строчек?Т.Е если в заявке указано пять клиентов с пятью различными классами номеров,то выводит 5 строчек по каждому, а если 3 строчки,то естественно три,что не так?
6 Kamich
 
02.04.13
21:38
(5) * СУММА(Количество)
7 ChAlex
 
02.04.13
21:44
Читайте матчасть в части той, как организованы данные в получаемых выборках. А как подсказка: Результат=Запрос.Выполнить().Выбрать(ОбходРезультатЗапроса.ПоГруппировкам,"ОБЩИЕ");
8 Kamich
 
02.04.13
21:48
(7) ОО))Отлично,теперь только количество получает)
А КлассНомера не получает(P.S. КлассНомера - ПеречисленияСсылка.КлассНомера)
9 Kamich
 
02.04.13
22:18
(7) Что не так?
10 Max Street
 
02.04.13
22:24
Обход результата запроса должен быть такой:

       Результат = Запрос.Выполнить();
       
       ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
       
       ВыборкаОбщийИтог.Следующий();
       
       ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать();
       
       Пока Выборка.Следующий() Цикл
11 Max Street
 
02.04.13
22:26
Ошибся. Последняя строка так:

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
12 Kamich
 
02.04.13
22:51
(11)
Запрос=Новый Запрос();
   Запрос.Текст=
   "ВЫБРАТЬ
   |    Заявка.КлассНомера КАК КлассНомера,
   |    Заявка.Количество КАК Количество,
   |    Заявка.Ссылка КАК Ссылка
   |ИЗ
   |    Документ.Заявка.Клиент КАК Заявка
   |ГДЕ
   |    Заявка.Ссылка = &Ссылка
   |УПОРЯДОЧИТЬ ПО
   |Ссылка
   |ИТОГИ
   |СУММА(Количество)
   |ПО
   |ОБЩИЕ ";
Запрос.УстановитьПараметр("Ссылка",ЭлементыФормы.Заявка.Значение.Ссылка);
Результат = Запрос.Выполнить();
ВыборкаОбщийИтог = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам);
ВыборкаОбщийИтог.Следующий();
ВыборкаДетальныеЗаписи = ВыборкаОбщийИтог.Выбрать();

Пока ВыборкаДетальныеЗаписи.Следующий() Цикл
        Если ВыборкаДетальныеЗаписи.Количество>0 Тогда
        НоваяСтрока=Таблица.Добавить();        
        НоваяСтрока.Количество=ВыборкаОбщийИтог.Количество;  
        НоваяСтрока.КлассНомера=ВыборкаОбщийИтог.КлассНомера;    
    КонецЕсли;
КонецЦикла;

Выводит в каждой строке Количество 5,т.е...тут или 1с у меня погнал,или моих знаний не хватает...
13 AlexNew
 
03.04.13
00:16
Что запросил, то и выводит. Всего количество 5. Итоги общие, где еще группировка?
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший