Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Итоги в запросах  (Прочитано 19050 раз)
0 Пользователей и 1 Гость смотрят эту тему.
DR.XXX
Помогающий

kz
Offline Offline

« : 22-08-2011 14:52 » 

Всем привет! Вопрос таков, как опустить Итоги в запросах вниз табличной части.

Код:
ЗапросТЧ.Текст = "ВЫБРАТЬ
                 | РасходТаблРасход.НомерСтроки КАК НомерСтроки,
                 | РасходТаблРасход.Товар КАК Товар,
                 | СУММА(РасходТаблРасход.Количество) КАК Количество,
                 | РасходТаблРасход.Единица,
                 | СУММА(РасходТаблРасход.Цена) КАК Цена,
                 | СУММА(РасходТаблРасход.Сумма) КАК Сумма,
                 | РасходТаблРасход.НДС
                 |ИЗ
                 | Документ.Расход.ТаблРасход КАК РасходТаблРасход
                 |ГДЕ
                 | РасходТаблРасход.Ссылка = &ТекДок
                 |
                 |СГРУППИРОВАТЬ ПО
                 | РасходТаблРасход.НомерСтроки,
                 | РасходТаблРасход.Товар,
                 | РасходТаблРасход.Единица,
                 | РасходТаблРасход.НДС
                 |
                 |УПОРЯДОЧИТЬ ПО
                 | НомерСтроки
                [font=Verdana] |ИТОГИ
                 | СУММА(Сумма) [/font]
                 |ПО
                 | ОБЩИЕ";

В таблицу по циклу выгружаются данные из запроса, а сверху выходить итоговая сумма по колонке Сумма. Как этот итог опустить вниз таблицы? Можно ли как-то "Итог" присвоить какой-нибудь переменной, чтобы ее потом в параметр печатной области вставить?


спс за внимание!


* итог.JPG (53.91 Кб - загружено 1064 раз.)
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 22-08-2011 15:10 » 

Положение итогов в запросе к таблице отношения не имеет.
Приведи код как именно ты выводишь результат запроса.
Записан
DR.XXX
Помогающий

kz
Offline Offline

« Ответ #2 : 22-08-2011 17:19 » 

Код:
------------------------------------------

Область = Макет.ПолучитьОбласть("Шапка");
    ТабДок.Вывести(Область);

ЗапросТЧ = Новый Запрос;
ЗапросТЧ.Текст = "ВЫБРАТЬ
                 | РасходТаблРасход.НомерСтроки КАК НомерСтроки,
                 | РасходТаблРасход.Товар КАК Товар,
                 | СУММА(РасходТаблРасход.Количество) КАК Количество,
                 | РасходТаблРасход.Единица,
                 | СУММА(РасходТаблРасход.Цена) КАК Цена,
                 | СУММА(РасходТаблРасход.Сумма) КАК Сумма,
                 | РасходТаблРасход.НДС
                 |ИЗ
                 | Документ.Расход.ТаблРасход КАК РасходТаблРасход
                 |ГДЕ
                 | РасходТаблРасход.Ссылка = &ТекДок
                 |
                 |СГРУППИРОВАТЬ ПО
                 | РасходТаблРасход.НомерСтроки,
                 | РасходТаблРасход.Товар,
                 | РасходТаблРасход.Единица,
                 | РасходТаблРасход.НДС
                 |
                 |УПОРЯДОЧИТЬ ПО
                 | НомерСтроки
                 |ИТОГИ
                 | СУММА(Сумма)
                 |ПО
                 | ОБЩИЕ";

ЗапросТЧ.Параметры.Вставить("ТекДок",Ссылка);
Выборка = ЗапросТЧ.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Область);
КонецЦикла;


Область = Макет.ПолучитьОбласть("Подвал");
    ТабДок.Вывести(Область);                                     
ТабДок.Показать();
Записан
Kivals
Модератор

ca
Offline Offline
Пол: Мужской

WWW
« Ответ #3 : 22-08-2011 20:23 » 

Посмотри какой параметр есть у метода Выбрать() результата запроса
Записан
Dest
Опытный

ru
Offline Offline

« Ответ #4 : 22-08-2011 22:10 » 

Детали:
Код:
  Выборка = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "");

ОбщиеИтоги:
Код:
Выборка = Рез.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам, "ОБЩИЕ");


Записан
DR.XXX
Помогающий

kz
Offline Offline

« Ответ #5 : 23-08-2011 04:27 » 

Спасибо Вам!

Сделал так,
Код:
ЗапросТЧ.Параметры.Вставить("ТекДок",Ссылка);		
Выборка = ЗапросТЧ.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если [color=orange]Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ОбщийИтог[/color] Тогда   
Область1 = Макет.ПолучитьОбласть("Итоги");//пришлось добавить еще один сектор
Область1.Параметры.Заполнить(Выборка);
        иначе
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Область);
        КонецЕсли;
КонецЦикла;      
    [color=orange]ТабДок.Вывести(Область1); //вывод итогов[/color]
 
    Область = Макет.ПолучитьОбласть("Подвал");
    ТабДок.Вывести(Область);

Dest, твоим методом наверное короче выйдет код, обязательно попробую 
Записан
Vector87
Новенький

ru
Offline Offline

« Ответ #6 : 06-12-2011 10:53 » new

Спасибо Вам!

Сделал так,
Код:
ЗапросТЧ.Параметры.Вставить("ТекДок",Ссылка);		
Выборка = ЗапросТЧ.Выполнить().Выбрать();
Пока Выборка.Следующий() Цикл
Если [color=orange]Выборка.ТипЗаписи() = ТипЗаписиЗапроса.ОбщийИтог[/color] Тогда    
Область1 = Макет.ПолучитьОбласть("Итоги");//пришлось добавить еще один сектор
Область1.Параметры.Заполнить(Выборка);
        иначе
Область = Макет.ПолучитьОбласть("Строка");
Область.Параметры.Заполнить(Выборка);
ТабДок.Вывести(Область);
        КонецЕсли;
КонецЦикла;    
    [color=orange]ТабДок.Вывести(Область1); //вывод итогов[/color]
 
    Область = Макет.ПолучитьОбласть("Подвал");
    ТабДок.Вывести(Область);

Dest, твоим методом наверное короче выйдет код, обязательно попробую  

Подскажи как мне быть. У меня схожая ситуация:

Код: (1C v8)
Процедура КнопкаСформироватьНажатие(Кнопка)
    Перем Результат;
        Запрос = Новый Запрос;
        Запрос.Текст =
        "ВЫБРАТЬ
        |       ПлатежноеПоручение.ДатаПроведения КАК ДатаПроведения,
        |       ПлатежноеПоручение.Номер КАК Номер,
        |       ПлатежноеПоручение.СуммаДокумента КАК СуммаДокумента,
        |   ПлатежноеПоручение.Контрагент КАК Контрагент,
        |       ПРЕДСТАВЛЕНИЕ(ПлатежноеПоручение.Контрагент)
        |ИЗ
        |       Документ.ПлатежноеПоручение КАК ПлатежноеПоручение
        |ГДЕ
        |       ПлатежноеПоручение.ДатаПроведения >= &ДатаНачала
        |       И ПлатежноеПоручение.ДатаПроведения <= &ДатаКонца
        |       И ПлатежноеПоручение.ЛицевойСчет = &ЛицевойСчет
        |       И ПлатежноеПоручение.Учреждение = &Учреждение
        |       И ПлатежноеПоручение.Проведен = &Проведен
        |СГРУППИРОВАТЬ ПО
        |       ПлатежноеПоручение.ДатаПроведения,
        |       ПлатежноеПоручение.Номер,
        |       ПлатежноеПоручение.Контрагент,
        |       ПлатежноеПоручение.СуммаДокумента
        |ДЛЯ ИЗМЕНЕНИЯ
        |       Документ.ПлатежноеПоручение
    |
        |УПОРЯДОЧИТЬ ПО
        |       ДатаПроведения,
        |       Номер,
        |       СуммаДокумента,
        |       Контрагент
        |ИТОГИ СУММА(СуммаДокумента) ПО
        |       Общие"
;
        Запрос.УстановитьПараметр("ДатаНачала",ЭлементыФормы.ДатаНачала.Значение);
        Запрос.УстановитьПараметр("ДатаКонца",ЭлементыФормы.ДатаКонца.Значение);
        Запрос.УстановитьПараметр("Учреждение",ЭлементыФормы.Учреждение.Значение);
        Запрос.УстановитьПараметр("ЛицевойСчет",ЭлементыФормы.ЛицевойСчет.Значение);
        Запрос.УстановитьПараметр("Проведен",ЭлементыФормы.Проведен.Значение);
       
       
        Результат = Запрос.Выполнить().Выбрать();       
        ТабДок = Новый ТабличныйДокумент;
        Макет = Отчеты.СопроводительноеПисьмо2.ПолучитьМакет("Печать");
        ...
        // Строка
        Пока Результат.Следующий() Цикл
                Если Результат.ТипЗаписи() = ТипЗаписиЗапроса.ОбщийИтог Тогда
                Итого = Макет.ПолучитьОбласть("Итого");
                Итого.Параметры.СуммаДокумента = Результат.СуммаДокумента;
                ТабДок.Вывести(Итого);
        Иначе
                Строка = Макет.ПолучитьОбласть("Строка");
                Строка.Параметры.ДатаПроведения = Результат.ДатаПроведения;
                Строка.Параметры.Номер = Результат.Номер;
                Строка.Параметры.СуммаДокумента = Результат.СуммаДокумента;
                Строка.Параметры.Контрагент = Результат.Контрагент;        
                ТабДок.Вывести(Строка);
                КонецЕсли;
        КонецЦикла;
        ...
       
        ТабДок.ОтображатьСетку = Ложь;
        ТабДок.Защита = Ложь;
        ТабДок.ТолькоПросмотр = Ложь;
        ТабДок.ОтображатьЗаголовки = Ложь;
        ТабДок.Показать();
КонецПроцедуры

Добавлено через 1 час, 20 минут и 57 секунд:
Все уже не нужно
« Последнее редактирование: 06-12-2011 12:14 от Vector87 » Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines