|
Данные отчета СКД в Таблицу значений | ☑ | ||
---|---|---|---|---|
0
igorby
07.03.14
✎
10:40
|
Здравствуйте!
Подскажите есть "тяжелый" отчет на СКД, много наборов данных(запросов и объединений). Данные получаемые отчетом требуют дальнейшей значительной обработки. Средствами СКД думаю будет сделать затруднительно. Есть ли возможность выгрузить в Таблицу значений для дальнейшей обработки. Или есть еще какие варианы обработки данных отчета. |
|||
1
Cube
07.03.14
✎
10:41
|
(0) "Есть ли возможность выгрузить в Таблицу значений для дальнейшей обработки."
Есть. |
|||
2
Cube
07.03.14
✎
10:42
|
(0) "Средствами СКД думаю будет сделать затруднительно."
Так и скажи: качественно писать не умею, помогите набыдлокодить :) |
|||
3
Cube
07.03.14
✎
10:45
|
+(1) Кури ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений
|
|||
4
kiruha
07.03.14
✎
10:49
|
Либо скопипасти запрос из СКД и работай с ним.
Собственно СКД только для вывода и постобработки и нужен |
|||
5
Cube
07.03.14
✎
10:49
|
(4) Наглая ложь и клевета... :)
|
|||
6
kiruha
07.03.14
✎
10:51
|
(4)
А еще для чего ? Объединение запросов сделать ? Ну так SQL это умеет получше |
|||
7
Cube
07.03.14
✎
10:57
|
(6) Группировка колонок. Объединение ячеек. И т.п.
|
|||
8
kiruha
07.03.14
✎
11:23
|
(7)
А это и есть постобработка и вывод |
|||
9
МихаилМ
07.03.14
✎
12:58
|
(6)
ошибаетесь. скд напорядки(1-2) эффективней обрабатывает ТЗ (соединения групприровки) толко с полным соединением я пока не разобрался. попробуйте обработать ТЗ в 1 000 000 строк через запрос. даже с использованием shared memory уснете ожидая результата. в файловой даже на 10 000 записей 1с82 валится. у СКД слабое место - медленный вывод в ТЗ. в некоторых соотношениях обрабатываемых данных и результирующих эффективней использовать код без скд. в том числе меньше расход памяти. |
|||
10
kiruha
07.03.14
✎
17:51
|
(9)
Зачем ТЗ ? Я обрабатываю в SQL и временных таблицах. СКД нервно курит в сторонке. Ибо только одни алгоритмы Русмор взятые из фокспро и далее примененные в SQL стоили больше чем весь 1С вместе взятый |
|||
11
DS
07.03.14
✎
18:13
|
(9) > толко с полным соединением я пока не разобрался
полное в скд? |
|||
12
Добрый хачик
07.03.14
✎
18:15
|
Вложенные схемы? Не?
|
|||
13
echo77
07.03.14
✎
20:49
|
Возможно, поможет:
// Заполняет переданный объект на основани СКД // // Параметры // // СКД – собствеено настройки СКД // // ОбъектДляЗагрузки – объект в который выгружаются данные, таблица значений, дерево значений, табличный документ // // ИсполняемыеНастройки – Пользовательские настройки СКД если не указаны будут использованы настроки СКД по умолчанию // // СтруктураПараметров - Структура – Передаваемые для СКД параметры // // краткий лекбез, поправлю позже // Процедура ПолучитьДанныеНаОснованииСКД(СКД, ИсполняемыеНастройки = Неопределено, ОбъектДляЗагрузки, СтруктураПараметров = Неопределено, РасшифровкаСКД = Неопределено, МакетКомпоновки = Неопределено, ВнешниеНаборыДанных = Неопределено) Экспорт КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных; Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанных"); Иначе ТипГенератора = Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"); КонецЕсли; Если ИсполняемыеНастройки = Неопределено Тогда ИсполняемыеНастройки = СКД.НастройкиПоУмолчанию; КонецЕсли; Если СтруктураПараметров <> Неопределено Тогда КоллекцияЗначенийПараметров = ИсполняемыеНастройки.ПараметрыДанных.Элементы; Для каждого Параметр Из СтруктураПараметров Цикл НайденноеЗначениеПараметра = КоллекцияЗначенийПараметров.Найти(Параметр.Ключ); Если НайденноеЗначениеПараметра <> Неопределено Тогда НайденноеЗначениеПараметра.Использование = Истина; НайденноеЗначениеПараметра.Значение = Параметр.Значение; КонецЕсли; КонецЦикла; КонецЕсли; МакетКомпоновкиСКД = КомпоновщикМакета.Выполнить(СКД, ИсполняемыеНастройки, РасшифровкаСКД, МакетКомпоновки, ТипГенератора); ПроцессорКомпановки = Новый ПроцессорКомпоновкиДанных; ПроцессорКомпановки.Инициализировать(МакетКомпоновкиСКД, ВнешниеНаборыДанных, РасшифровкаСКД); Если ТипЗнч(ОбъектДляЗагрузки) = Тип("ПолеТабличногоДокумента") ИЛИ ТипЗнч(ОбъектДляЗагрузки) = Тип("ТабличныйДокумент") Тогда ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВТабличныйДокумент; ПроцессорВывода.УстановитьДокумент(ОбъектДляЗагрузки); Иначе ПроцессорВывода = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений; ПроцессорВывода.УстановитьОбъект(ОбъектДляЗагрузки); КонецЕсли; ПроцессорВывода.ОтображатьПроцентВывода = Истина; ПроцессорВывода.Вывести(ПроцессорКомпановки, Истина); КонецПроцедуры // ПолучитьДанныеНаОснованииСКД() // Пример использования //ДеревоЗначений = Новый ТаблицаЗначений; //СхемаКомпоновкиДанных = ПолучитьМакет("ОсновнаяСхемаКомпоновкиДанных"); ////СтруктураПараметров = Новый Структура("ДатаОтчета", НашаДата); //ПолучитьДанныеНаОснованииСКД(СхемаКомпоновкиДанных, СхемаКомпоновкиДанных.НастройкиПоУмолчанию, ДеревоЗначений, Неопределено); // //ДеревоЗначений.ВыбратьСтроку(); |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |