|
Как в построитель отчета программно добавить группировки? | ☑ | ||
|---|---|---|---|---|
|
0
мистер игрек
25.10.10
✎
08:32
|
Есть код:
Запрос.Текст = "ВЫБРАТЬ | Таб.Работал1, | Таб.Работал2, | Таб.Отдел, | Таб.Месяцц, | Таб.Подразделение |ИЗ | ВТ_СотрПодр КАК Таб"; Рез = Запрос.Выполнить(); // Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Рез); Построитель.Выполнить(); Построитель.Вывести(); Теперь для вывода в отчет кросс-таблицу с группировкой строк "Отдел, Подразделение" и группировкой колонок "Месяц"? |
|||
|
1
мистер игрек
25.10.10
✎
09:08
|
Ап
|
|||
|
2
Irbis
25.10.10
✎
09:17
|
Итоги {Отдел, Подразделение...} не спасут?
|
|||
|
3
мистер игрек
25.10.10
✎
09:18
|
Начертил вот это. Но выводить только первый уровень гурпировки.
Запрос.Текст = "ВЫБРАТЬ | СУММА(Таб.Работал1) КАК Работал1, | СУММА(Таб.Работал2) КАК Работал2, | Таб.Отдел КАК Отдел, | Таб.Месяцц КАК Месяцц, | Таб.Подразделение КАК Подразделение |ИЗ | ВТ_СотрПодр КАК Таб | |СГРУППИРОВАТЬ ПО | Таб.Отдел, | Таб.Подразделение, | Таб.Месяцц |ИТОГИ | СУММА(Работал1), | СУММА(Работал2) |ПО | Отдел, | Подразделение, | Месяцц"; Рез = Запрос.Выполнить(); // Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Рез); Построитель.Выполнить(); Построитель.Вывести(); |
|||
|
4
hhhh
25.10.10
✎
09:21
|
(1) такие проблемы с помощью отладчика решаются. В общем, там надо поставить флажки, что это измерения.
|
|||
|
5
мистер игрек
25.10.10
✎
09:47
|
Поставил. Выдает ошибку: "{Форма.ФормаОтчета(93)}: Ошибка при вызове метода контекста (Добавить): Не найдено измерение. "Отдел"
Построитель.ИзмеренияСтроки.Добавить("Отдел","Отдел"); по причине: Не найдено измерение. "Отдел" " Вот код: Запрос.Текст = "ВЫБРАТЬ | Таб.Работал1 КАК Работал1, | Таб.Работал2 КАК Работал2, | Таб.Отдел КАК Отдел, | Таб.Месяцц КАК Месяцц, | Таб.Подразделение КАК Подразделение |ИЗ | ВТ_СотрПодр КАК Таб |ИТОГИ | СУММА(Работал1), | СУММА(Работал2) |ПО | Отдел, | Подразделение, | Месяцц"; Рез = Запрос.Выполнить(); // Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Рез); Построитель.доступныеполя.Найти("Отдел").Измерение = Истина; Построитель.доступныеполя.Найти("Подразделение").Измерение = Истина; Построитель.доступныеполя.Найти("Месяцц").Измерение = Истина; Построитель.ИзмеренияСтроки.Добавить("Отдел","Отдел"); Построитель.ИзмеренияСтроки.Добавить("Подразделение","Подразделение"); Построитель.ИзмеренияКолонки.Добавить("Месяцц","Месяцц"); Построитель.Выполнить(); Построитель.Вывести(); |
|||
|
6
stangen
25.10.10
✎
09:52
|
(5) зайди в конструктор запрос на закладку "построитель" и добавь нужные поля в закладке Итоги
|
|||
|
7
мистер игрек
25.10.10
✎
09:57
|
Изменил так. Все рвно это оишбка.
Запрос.Текст = "ВЫБРАТЬ | Таб.Работал1 КАК Работал1, | Таб.Работал2 КАК Работал2, | Таб.Отдел КАК Отдел, | Таб.Месяцц КАК Месяцц, | Таб.Подразделение КАК Подразделение |ИЗ | ВТ_СотрПодр КАК Таб |ИТОГИ | СУММА(Работал1), | СУММА(Работал2) |ПО | Отдел, | Подразделение, | Месяцц |{ИТОГИ ПО | Отдел, | Подразделение, | Месяцц}"; Рез = Запрос.Выполнить(); // Построитель = Новый ПостроительОтчета; Построитель.ИсточникДанных = Новый ОписаниеИсточникаДанных(Рез); Построитель.доступныеполя.Найти("Отдел").Измерение = Истина; Построитель.доступныеполя.Найти("Подразделение").Измерение = Истина; Построитель.доступныеполя.Найти("Месяцц").Измерение = Истина; Построитель.ИзмеренияСтроки.Добавить("Отдел","Отдел"); Построитель.ИзмеренияСтроки.Добавить("Подразделение","Подразделение"); Построитель.ИзмеренияКолонки.Добавить("Месяцц","Месяцц"); Построитель.Выполнить(); Построитель.Вывести(); |
|||
|
8
stangen
25.10.10
✎
10:31
|
(7) ну если с таким извращением, то тогда так
Запрос.Текст = "ВЫБРАТЬ | Таб.Работал1 КАК Работал1, | Таб.Работал2 КАК Работал2, | Таб.Отдел КАК Отдел, | Таб.Месяцц КАК Месяцц, | Таб.Подразделение КАК Подразделение |ИЗ | ВТ_СотрПодр КАК Таб |ИТОГИ | СУММА(Работал1), | СУММА(Работал2) |ПО | Отдел, | Подразделение, | Месяцц"; Рез = Запрос.Выполнить(); Построитель = Новый ПостроительОтчета; ОИД = Новый ОписаниеИсточникаДанных(Рез); Для каждого Колонка ИЗ ОИД.Колонки Цикл Колонка.Измерение = Колонка.Имя="Месяцц" ИЛИ Колонка.Имя="Подразделение" ИЛИ Колонка.Имя="Отдел"; КонецЦикла; Построитель.ИсточникДанных = ОИД; Измерение= Построитель.ИзмеренияСтроки.Найти("Месяцц"); Если Измерение <> Неопределено Тогда Построитель.ИзмеренияСтроки.Удалить(Измерение); КонецЕсли; Построитель.ИзмеренияКолонки.Добавить("Месяцц","Месяцц"); Построитель.Выполнить(); Построитель.Вывести(); |
|||
|
9
мистер игрек
25.10.10
✎
11:03
|
(8) спасибо. Но!
1. не выводить значение измерений "ПОдразделение","Месяцц" 2. не выводить значение Работал1 и работал2 3. Кросс таблицу не чертить |
|||
|
10
mooo
25.10.10
✎
11:11
|
Зачем это ОИД = Новый ОписаниеИсточникаДанных(Рез); ??
И почему не так: Построитель.Текст = "...Запрос..."??? |
|||
|
11
мистер игрек
25.10.10
✎
11:13
|
(10) потому что, там источник данных - временная таблица. Т.е построитель не признает временную таблицу О_О
|
|||
|
12
мистер игрек
25.10.10
✎
11:27
|
уп
|
|||
|
13
mooo
25.10.10
✎
11:32
|
(11) это понятно, а пакетный запрос сделать?
(12) попробуй так И заполни коллекцию Построитель.ВыбранныеПоля |
|||
|
14
mooo
25.10.10
✎
11:33
|
+(13) в итогах там добавить нужно:
|{ИТОГИ ПО | Отдел, | Подразделение, | Месяцц}"; |
|||
|
15
мистер игрек
25.10.10
✎
11:37
|
(14) Короче, источником сделал таблицу значений. Вроде отчет получился. Щас еще раз протестирую... Посмотрим
|
|||
|
16
мистер игрек
25.10.10
✎
12:06
|
Еще один момент. В кросс таблице в шапке колонок "месяц" выводится как "01.01.10", "01.01.10" и т.д.
Как добится чтоб получился "январь.10", "февраль.10" ? |
|||
|
17
мистер игрек
25.10.10
✎
12:21
|
еще ап
|
| Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |