|
Уложить таблицу значений в ПостроительОтчета | ☑ | ||
---|---|---|---|---|
0
al_zzz
20.04.12
✎
21:21
|
Имеется таблица значений, которую получаю с помощью построителя отчета. Потом хочу произвести над ней некоторые действия и передать опять же параметров в построитель отчета. Но возникает ошибка: "Содержимое объекта данных может быть выбрано только во временную таблицу". Поискал в интернете - единственное требование, чтоб колонки быыли типизированы. Но типизация тоже ничего не дала.
Код: тз = ПостроительОтчета.Результат.Выгрузить(); КЧ = Новый КвалификаторыЧисла(12,5); Массив = Новый Массив; Массив.Добавить(Тип("Число")); Массив.Добавить(Тип("Null")); тз.Колонки.Добавить("КоэффициентВариации",Новый ОписаниеТипов(Массив,,КЧ)); //тз.ВыбратьСтроку(); Для Каждого Стр Из ТЗ Цикл стр.КоэффициентВариации = ?(стр.Среднее=0,0,sqrt(стр.СКОНаДней)/стр.Среднее*100); КонецЦикла; тз.Сортировать("КоэффициентВариации Возр"); запрос = Новый Запрос; Запрос.текст = "ВЫБРАТЬ | тз.Номенклатура, | тз.Код, | тз.ABC, | тз.Факты, | тз.Среднее, | тз.КоэффициентВариации, | ВЫБОР | КОГДА тз.КоэффициентВариации < &Xдо | ТОГДА &Перечисление_X | ИНАЧЕ ВЫБОР | КОГДА тз.КоэффициентВариации < &Yдо | ТОГДА &Перечисление_Y | ИНАЧЕ &Перечисление_Z | КОНЕЦ | КОНЕЦ КАК XYZ |ИЗ | &тз КАК тз, | Перечисление.XYZКлассификация КАК XYZКлассификация"; Запрос.УстановитьПараметр("тз",тз); Запрос.УстановитьПараметр("Перечисление_X",Перечисления.XYZКлассификация.XКласс); Запрос.УстановитьПараметр("Перечисление_Y",Перечисления.XYZКлассификация.YКласс); Запрос.УстановитьПараметр("Перечисление_Z",Перечисления.XYZКлассификация.ZКласс); Запрос.УстановитьПараметр("Xдо",XДо); Запрос.УстановитьПараметр("Yдо",YДо); Результат = Запрос.Выполнить().Выгрузить(); Что я неверно делаю? |
|||
1
catena
20.04.12
✎
21:27
|
(0)У Сожалению, построитель отчета не работает с временными таблицами. В СКД можно организовать :)
|
|||
2
al_zzz
20.04.12
✎
21:33
|
В обработке требуется извлечь квадратный корень. В СКД такое возможно? Может у кто-нибудь поделится XYZ-анализом на СКД?
|
|||
3
le_
20.04.12
✎
22:02
|
||||
4
catena
21.04.12
✎
06:08
|
(3)Не вижу там примера ПОСТРОИТЕЛЯ с тз.
|
|||
5
DimVad
21.04.12
✎
06:40
|
(0) ТЗ можно использовать непосредственно в качестве источника данных для построителя отчета. Там надо указать тип источника данных.
Я так делам - брал тз, загружал в запрос, из запроса получал уже совсем готовый тз, засовывал его в построитель. Работало. |
|||
6
catena
21.04.12
✎
07:03
|
(5)Бывают ситуации, когда ТЗ нужна именно в запросе. Например, для каких-то доп.вычислений, которые запрос не умеет.
|
|||
7
echo77
21.04.12
✎
08:17
|
(1) Как в СКД засунуть временную таблицу? Таблицу значений - понятно можно, а временную как?
|
|||
8
le_
21.04.12
✎
11:38
|
(4) Формируешь ТЗ каким угодно способом и передаешь ее построителю в качестве источника данных.
|
|||
9
catena
21.04.12
✎
12:18
|
(7)А зачем в СКД пихать временную, если можно засунуть ТЗ и соединить с запросом?
(8)А если я не хочу ТЗ, а хочу результат запроса? Со всеми итогами и группировками? |
|||
10
le_
21.04.12
✎
12:47
|
(9) Результат запроса со всеми итогами и группировками передать построителю? Зачем?
Построение отчета можно свести к следующему: 1. Формирование набора данных 2. Представление набора данных пользователю (со всякими красивостями, группировками и т.п.) Первый пункт реализуется запросом или описанием источника данных. Второй - средствами вывода (построитель отчета, СКД или вручную). Повторюсь, формируешь такую ТЗ, которая тебе нужна. Если формируешь запросом - будь там хоть 100 таблиц в запросе, с временными, внешними и т.п. - как хочешь. И передаешь эту готовую ТЗ построителю в качестве источника дынных. Всё. |
|||
11
al_zzz
22.04.12
✎
13:02
|
(10) Как сгруппировать таблицу значений в построителе, если её передать в качестве источника данных?
Можно по-подробнее про 2-ой пункт? |
|||
12
le_
22.04.12
✎
13:32
|
(11) Габец, Гончаров, Козырев, Кухлевский, Радченко - Профессиональная разработка в системе 1С:Предприятие 8
Глава 13 (стр. 415) - про построитель отчета. Стр. 464 - про внешние источники данных. |
|||
13
catena
22.04.12
✎
18:54
|
(12)Если у меня вирутальный параметр, например, в срезе последних, то с построителем придется:
1) сформировать пользователю допустимые поля и отборы 2) сформировать запрос с пользовательскими настройками 3) выгрузить в тз, обработать, запихнуть тз в построитель 4) наложить все группировки и сортировки. В СКД делается одним телодвижением... |
|||
14
ptiz
22.04.12
✎
19:05
|
Можно так:
1) При инициализации построителя подсовываем "пустышку" нужной структуры, которая помещается им в врем.таблицу, например ВЫБРАТЬ 1 КАК Колонка1, "а" КАК Колонка2 ПОМЕСТИТЬ ТЗ; 2) Для получения результата делаем Запрос = Построитель.ПолучитьЗапрос(); и в тесте запроса меняем текст на ВЫБРАТЬ ТЗ.Колонка1, ТЗ.Колонка2 ПОМЕСТИТЬ ТЗ ИЗ &ТЗ КАК ТЗ Всё. Остается только: Результат = Запрос.Выполнить() |
|||
15
le_
22.04.12
✎
19:39
|
(13) Я не спорю. СКД гораздо лучше, удобнее )
Сам пользуюсь только СКД. Изредка приходится старенькие отчетики на построителе править... |
|||
16
al_zzz
23.04.12
✎
17:14
|
(15) Так как реализовать на СКД извлечение квадратного корня в промежуточных вычислениях?
|
|||
17
vmv
23.04.12
✎
17:17
|
уложить и произвести с ней некоторые действия - звучит лирично
|
|||
18
le_
23.04.12
✎
17:24
|
(16) POW, SQRT
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |