Как оптимизировать отчет? #745463


#0 by Anabella
Отчет из таблиц SQL выгружает данные в 1с. За месяц отчет выполняется секунд 40. Нужно убыстрить. Есть код формирования скд, есть код выгрузки таблиц из скуля. Что тут можно оптимизировать? Могу скинуть сам отчет, только куда? &НаСервере
#1 by Волшебник
Заведи регистр оборотов и сделай агрегат. Отчёт будет формироваться за 1 секунду.
#2 by Anabella
в рабочую базу вмешиваться очень нежелательно. крайний вариант.
#3 by MadHead
вообще было бы не плохо увидеть на каких строках сколько тратиться времени. Сразу видно что последний цикл нужно заменить запросом
#4 by Широкий
Странно, функиця есть "group by" нет
#5 by MadHead
так же проверить есть ли индекс по датам во внешней базе
#6 by ДенисЧ
ЗапросПродаж.Текст = ЗапросПродаж.Текст + "СГРУППИРОВАТЬ ПО
#7 by Широкий
+4 неполностью посмотрел, сори. Мне кажется "OtchetProdazh.Data" тут лишняя и с подобно надо что то делать
#8 by Anabella
35% времени тратится на строчку     ПроцессорВывода.Вывести(ПроцессорКомпоновки); 26% времени тратится на строчку     РезультатЗапросаПродаж = ЗапросПродаж.Выполнить.Выгрузить;
#9 by Широкий
Это определенно надо в запросе делать
#10 by Anabella
Охренеть, мне сам Волшебник отвечал! Надо сохранить себе скрин на память :-)
#11 by Drac0
Запрос с этим условием: "И OtchetProdazh.Ofis ПОДОБНО &Ofis " ? Ну и с однозначно надо. Если с типами нет косяка.
#12 by ДенисЧ
теперь неделю глаза не мой ))
#13 by Anabella
Если стоит отбор по офисам, то добавляется это условие, если нет, то без него. В любом случае неприлично долго.
#14 by Anabella
касательно я уже ответила в 2 самые долгие позиции. А касательно сейчас переделываю.
#15 by Anabella
Чуяло мое нутро, не надо было сегодня глаза красить ))
#16 by Drac0
Поиск по параметру такого вида "%"+Офис+"%" херит все индексы. Если они там вообще есть, конечно же. Желательно искать по полному равенству. Или хотя бы знак % оставить только в конце.
#17 by rsv
У вас внешний источник.... выгрузка просто из  него данных простым селектом скажем Тор 100 сколько времени ?
#18 by D_E_S_131
Вообще не плохо бы понимать сколько там данных во "внешнем источнике", а то там может не 100, а 100500 и 40 секунд это нормально для такого объема.
#19 by rsv
+ И мы обсуждаем "неприлично долго" работу внешнего источника ? Или   обработку в цикле  курсора оного с вызовом  НайтиПоКоду ?
#20 by Anabella
первые 100 выбирает за 7,2 сек. Количество записей в таблице за месяц апрель к примеру - 97776.
#21 by Anabella
Есть отчет и жалоба на него что он работает долго. Собственно я и думаю как-то его убыстрить. Отчет на двух функциях тормозит, первую я выложила, вот вторая (ссылается на функцию выше).     Если Отчет.КомпоновщикНастроек.ПользовательскиеНастройки.Элементы[1].ПравоеЗначение = 7 тогда
#22 by Anabella
некрасиво получилось... лучше так:
#23 by Гёдза
какая строчка выполняется дольше всего?
#24 by Anabella
35% времени тратится на строчку     ПроцессорВывода.Вывести(ПроцессорКомпоновки); 26% времени тратится на строчку
#25 by Гёдза
сколько в итоговом отчете строк?
#26 by Anabella
переделала, стало дольше.
#27 by Anabella
Количество записей в таблице за месяц апрель к примеру - 97776.
#28 by Anabella
а вот выгружать из внешних источников в эксель чтобы быстренько глянуть общее количество данных явно не стоило... сижу, жду, когда отвиснет.
#29 by Широкий
Ну ты конечно переделала :)
#30 by Зеленый пень
Сначал собрать все коды товаров в массив, потом сделать запрос по товарам с этим кодов - выгрузить в ТЗ (добавить ТЗ индекс по полю кода). И в цикле искать уже по коду в ТЗ, а не делать запрос по каждой строке.
#31 by Anabella
Я старалась, спешила, пока желающие помочь не пропали) Что исправить?
#32 by Anabella
Спасибо!
#33 by Широкий
Не надо его благодарить - он гадость советует
#34 by Anabella
Спасибо отменяется, кто чего хорошего посоветует?)
#35 by Широкий
У тебя уже есть запрос из внешнего источника - в нем же через левое соединение получи номенклатуру
#36 by Anabella
Гениально, черт побери
#37 by Anabella
использование нескольких источников данных недопустимо, пишет (
#38 by Drac0
Выбери сначала в ВТ из внешнего. Потом к этой ВТ уже присоединяй.
#39 by Anabella
Ща, спасибо!
#40 by Anabella
Та же ошибка при попытке создания временной таблицы из внешнего источника данных( Получение данных из нескольких источников недопустимо (
#41 by Drac0
Кажется, я вспомнил, почему мы не юзаем внешние источники данных -_- Тогда . Верни ему спасибо :)
#42 by Anabella
Спасибо! :-)
#43 by Широкий
Выгрузи тогда первый запрос в таблицу значений и прогрузи ее во времянку а там левое соединение.
#44 by Anabella
по скорости получилось примерно одинаково, но метод по сработал чуть быстрее.
#45 by WebberNSK
а вот это что такое? Офис = ПолучитьОфис;
Тэги: 1С 8
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С