|   |   | 
| 
 | Как получить значения группировки по столбцам | ☑ | ||
|---|---|---|---|---|
| 0
    
        xenos 21.08.12✎ 05:29 | 
        Допустим надо сделать такой отчет обычными запросом не СКД
  http://s2.ipicture.ru/uploads/20120821/Rp8fT641.jpg Если бы была группировка только по контрагентам тогда все просто. А вот как сделать такое, сначала получить группировку контрагенты и данные по периодам. А затем данные по договорам и опять перебор по периодам. | |||
| 1
    
        rphosts 21.08.12✎ 05:36 | 
        и итоги по контрагентам и периодам. и запрос обходить по группировкам сначало по контрагентам а потом по периодам и наконец по договорам.     | |||
| 2
    
        xenos 21.08.12✎ 05:46 | 
        Вот простой пример по строкам
  Макет = ВнешнийОтчетОбъект.ПолучитьМакет("Отчет"); Запрос = Новый Запрос; Запрос.Текст = "ВЫБРАТЬ | ВложенныйЗапрос.Контрагенты КАК Контрагенты, | ВложенныйЗапрос.Договор КАК Договор, | ВложенныйЗапрос.Месяц КАК Месяц, | ВложенныйЗапрос.СуммаОборот КАК СуммаОборот |ИЗ | (ВЫБРАТЬ | ХозрасчетныйОбороты.Субконто1 КАК Контрагенты, | ХозрасчетныйОбороты.Субконто2 КАК Договор, | ХозрасчетныйОбороты.Период КАК Месяц, | СУММА(ХозрасчетныйОбороты.СуммаОборот) КАК СуммаОборот | ИЗ | РегистрБухгалтерии.Хозрасчетный.Обороты(&НачПер, &КонПер, Месяц, Счет В ИЕРАРХИИ (&счет60), , , , ) КАК ХозрасчетныйОбороты | | СГРУППИРОВАТЬ ПО | ХозрасчетныйОбороты.Субконто1, | ХозрасчетныйОбороты.Субконто2, | ХозрасчетныйОбороты.Период) КАК ВложенныйЗапрос |ИТОГИ | СУММА(СуммаОборот) |ПО | Контрагенты, | Договор, | Месяц"; Запрос.УстановитьПараметр("КонПер", КонПер); Запрос.УстановитьПараметр("НачПер", НачПер); Запрос.УстановитьПараметр("счет60", счет60); Результат = Запрос.Выполнить(); ОбластьЗаголовок = Макет.ПолучитьОбласть("Заголовок"); ОбластьПодвал = Макет.ПолучитьОбласть("Подвал"); ОбластьШапкаТаблицы = Макет.ПолучитьОбласть("ШапкаТаблицы"); ОбластьПодвалТаблицы = Макет.ПолучитьОбласть("ПодвалТаблицы"); ОбластьКонтрагенты = Макет.ПолучитьОбласть("Контрагенты"); ОбластьДоговор = Макет.ПолучитьОбласть("Договор"); ОбластьМесяц = Макет.ПолучитьОбласть("Месяц"); ТабДок.Очистить(); ТабДок.Вывести(ОбластьЗаголовок); ТабДок.Вывести(ОбластьШапкаТаблицы); ТабДок.НачатьАвтогруппировкуСтрок(); ВыборкаКонтрагенты = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаКонтрагенты.Следующий() Цикл ОбластьКонтрагенты.Параметры.Заполнить(ВыборкаКонтрагенты); ТабДок.Вывести(ОбластьКонтрагенты, ВыборкаКонтрагенты.Уровень()); ВыборкаДоговор = ВыборкаКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаДоговор.Следующий() Цикл ОбластьДоговор.Параметры.Заполнить(ВыборкаДоговор); ТабДок.Вывести(ОбластьДоговор, ВыборкаДоговор.Уровень()); ВыборкаМесяц = ВыборкаДоговор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам); Пока ВыборкаМесяц.Следующий() Цикл ОбластьМесяц.Параметры.Заполнить(ВыборкаМесяц); ТабДок.Вывести(ОбластьМесяц, ВыборкаМесяц.Уровень()); КонецЦикла; КонецЦикла; КонецЦикла; ТабДок.ЗакончитьАвтогруппировкуСтрок(); ТабДок.Вывести(ОбластьПодвалТаблицы); ТабДок.Вывести(ОбластьПодвал); Цикла самого нижнего уровня легко вывести в столбцы. А как получить значения по периодам на группировке контрагент до вывода договоров? | |||
| 3
    
        xenos 21.08.12✎ 05:47 | 
        з.ы. Это просто пример в реальности группировок несколько больше.     | |||
| 4
    
        xenos 21.08.12✎ 08:16 | 
        апапап     | |||
| 5
    
        hhhh 21.08.12✎ 08:27 | 
        (4) ВыборкаКонтрагенты = Результат.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,ммм,ммм);
  использовать второй и третий параметр | |||
| 6
    
        xenos 21.08.12✎ 08:31 | 
        Т.е. из выборки контрагентов выбирать периоды? а они туду не с договорами будут попадать?     | |||
| 7
    
        xenos 21.08.12✎ 08:31 | 
        (5) А примера подобного нет?     | |||
| 8
    
        xenos 21.08.12✎ 08:41 | 
        апапапап     | |||
| 9
    
        butterbean 21.08.12✎ 08:53 | 
        делаешь выборку по контрагентам, внутри нее 
  ВыборкаПериоды = ВыборкаКонтрагенты.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Месяц"); перебираешь ее, заполняешь столбцы потом внутри договоров ВыборкаПериоды = ВыборкаДоговор.Выбрать(ОбходРезультатаЗапроса.ПоГруппировкам,"Месяц"); и т.д. | |||
| 10
    
        xenos 21.08.12✎ 09:13 | 
        (9) Ясно спасибо попробую.     | 
 
 | Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |