Имя: Пароль:
1C
1С v8
Помогите с СКД
0 shulkin
 
27.11.13
18:55
Делаю отчет. В отчете программно выполняю СКД. Но он, зараза, выполняется оооочень долго. Именно на строке
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести(ПроцессорКомпоновкиДанных);

Подскажите, пожалуйста, что надо исправить, что бы взлетело? Очень срочно надо решить задачу.
Может есть какая-та деталь в настройках, передаваемых в СКД, которые сильно тормозят выполнение?
ПОМОГИТЕ!!!!!

Код:

КомпоновщикМакета = Новый КомпоновщикМакетаКомпоновкиДанных;
МакетКомпоновки = КомпоновщикМакета.Выполнить(СхемаКомпоновкиДанных, Настройки, , , Тип("ГенераторМакетаКомпоновкиДанныхДляКоллекцииЗначений"));
        
ВнешниеНаборыДанных = Новый Структура;
ВнешниеНаборыДанных.Вставить("Реализация", Реализация);
    
ПроцессорКомпоновкиДанных = Новый ПроцессорКомпоновкиДанных;
ПроцессорКомпоновкиДанных.Инициализировать(МакетКомпоновки, ВнешниеНаборыДанных, , );            
    
НоваяРеализация = Новый ТаблицаЗначений;
    
ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений = Новый ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений;
    ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.УстановитьОбъект(НоваяРеализация);
    ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.Вывести(ПроцессорКомпоновкиДанных);
1 Armando
 
27.11.13
18:58
А если просто отчетом вывести, то быстро работает?
2 Armando
 
27.11.13
18:58
Мож запрос кривой или ТЗ большая?
3 bugz2003
 
27.11.13
18:58
ВнешниеНаборыДанных.Вставить("Реализация", Реализация)

что такое "Реализация" и как она заполняется?
4 Armando
 
27.11.13
18:59
>> выполняется оооочень долго
сколько?
5 Armando
 
27.11.13
19:00
(2) сори, не увидел, что там внешний набор
6 samozvanec
 
27.11.13
19:00
(0) а что с набором происходит? вычисляемые поля/ресурсы, выражения сложные?
7 shulkin
 
27.11.13
19:01
(1) Просто отчетом не пробовал, иначе надо полностью реорганизовать отчет. А потратил на изучение программного выполнения СКД несколько недель уже. Жалко своего труда. Хочу уже добить отчет. Все работает как надо, единственная проблема - тормозит.
8 shulkin
 
27.11.13
19:02
использую в отчете набор данных - объект. Может это кому-нибудь что подскажет
9 samozvanec
 
27.11.13
19:04
(8) не слепые
(7) а нафига в коллекцию, если отчет? почему обрабатываешь именно в СКД?
10 shulkin
 
27.11.13
19:04
пробовал уже даже программно изменять состав полей набора данных в зависимости от выбранных группировок пользователем, с надеждой что именно объемы данных так сильно грузят вывод Процессора Вывода Результата Компоновки Данных  В Коллекцию Значений. Выиграл в выполнении только 2 секунды - несерьезно.
11 shulkin
 
27.11.13
19:07
(9) отчет представляется двумя таблицами. Обе на основании одних и тех же данных. Поэтому решил целесообразней сначало отобрать данные по условиям отбора, загнать в ТЗ, ну и дальше с ней работать...
В СКД использую именно потому что не знаю как преобразовать пользовательские отборы в язык запроса 1С.
12 shulkin
 
27.11.13
19:15
(9) Ну и даже процесс вывода в табличный документ, а не в ТЗ (пробовал, экспериментировал), занимает столько же времени, разница в секундах. Получается, что процесс отбора и вывода в ТЗ и процесс группировки и вывода в табличный документ по времени одинаковый.
13 shulkin
 
27.11.13
19:16
(3) Реализация - ТЗ
14 shulkin
 
27.11.13
19:20
ладно, какие настройки в СКД лишние и их надо отключить что использовать из них только отбор и нужную группировку?
15 shulkin
 
27.11.13
19:21
или надо как-то по особенному настраивать КомпоновщикМакетаКомпоновкиДанных и ПроцессорКомпоновкиДанных, или сам ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений?
16 samozvanec
 
27.11.13
19:22
(11) как вариант - выводить не в ТЗ, а в табличный документ, должно пошустрей работать. опять же, на основании отборов, сразу ограничить ТЗ Реализация - хотя бы периоды и отборы на равенство по измерениям.
еще вопрос - зачем Объект, а не Запрос? СКД оптимизирует запрос, может даже ускориться выполнение. хотя я иногда по этой же причине использую внешний набор)

думаю, проблема в размере входной таблицы и в действиях, которые с ней совершаются
17 shulkin
 
27.11.13
19:23
(16) Объект, потому что выгребаю данные из нескольких баз
18 shulkin
 
27.11.13
19:25
ТЗ конечно большая, потому что берутся данные с начала года, в разрезе контрагентов, складов, номенклатуры, стран.
19 shulkin
 
27.11.13
19:27
(16) >>>Реализация - хотя бы периоды и отборы на равенство по измерениям.
не совсем понял
20 GANR
 
27.11.13
19:30
(0) А данных много выгружается в коллекцию. Если да - то может быть следуют применить фильтрацию данных? Зачем пользователю какие-то длинные портянки из 20000 номенклатурных позиций, к примеру - он их запоминать будет?
(18) А если попытаться проиндексировать ТЗ по полям, по которым идут отборы и соединения v8: оптимизация поиска по структуре? Вот только, к сожалению не могу знать - будут ли в СКД использоваться эти индексы.
21 GANR
 
27.11.13
19:35
+(20) А запрос, который формирует СКД с учетом группировок, отборов и ТД, которые накладывает юзер (для набора данных типа "Запрос") можно вот так http://ximage.ru/data/imgs/1364297082.jpg если что.
22 echo77
 
27.11.13
19:48
(17) сколько это по времени занимает?
23 badboychik
 
27.11.13
19:53
а внешний набор этот большой? Вывали скриншот структуры полей
24 shulkin
 
28.11.13
10:18
(22) Данные из других баз выгребаются долго. Приходится выгребать данные по месяцам даже только потому что OLEUser подыхает при долгой выборке, сразу за весь период.

(23) Структура внешнего набора
[url]http://www.ximage.ru/index.php?id=1385619440[/url]
25 shulkin
 
28.11.13
10:18
26 catena
 
28.11.13
10:37
(11)СКД умеет выводить две таблицы основанные на одном наборе данных с разными настройками в одно нажатие абсолютно штатно же.
27 samozvanec
 
28.11.13
10:50
почему сразу не выводишь в отчет средствами скд? что такого потом с таблицей происходит, чего нельзя в скд сделать? имхается мне, что в коллекцию подольше выводить
28 shulkin
 
28.11.13
11:43
(27) Потому что вывожу результат два раза, лишь с разными группировками.
Поэтому решил, что лучше сначала один раз отобрать в ТЗ.
29 shulkin
 
28.11.13
11:49
появилась мысль отобрать данные используя построитель запроса, что бы в нем уже применить пользовательские отборы. Отпишусь )
30 shulkin
 
28.11.13
12:35
Есть мысль что запрос пошустрее отберет чем ПроцессорВыводаРезультатаКомпоновкиДанныхВКоллекциюЗначений.
Есть ТЗ, есть сохраненные настройки СКД.
Как получить текст запроса выборки данных из ТЗ с примененным к ней отбором из настроек?
31 shulkin
 
28.11.13
12:39
да, и тема с построителем запроса что-то не пошла )))
32 catena
 
29.11.13
06:22
(28)СКД умеет это делать ШТАТНО! при выводи заводи две таблицы и каждой свои группировки.