|
Определить длительность формирования отчета. | ☑ | ||
---|---|---|---|---|
0
Bodrug
16.12.19
✎
13:54
|
Всем добрый день!
Стоит задача определить сколько времени формируется тот или иной отчет. Пробовал сделать следующим образом: - создал РС "Использование отчетов", в нем сделал несколько измерений, среди них "ДатаНачалаФормирования" и "ДатаОкончанияФормирования". - в модуле объекта отчета добавил след. код: Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) Запись = ОтразитьНачалоИспользованиеОтчета(); ткУправлениеВыводомИнформацииСервер.УстановитьДатыЗапретаВОтчете(КомпоновщикНастроек); Параметр = НастройкаПараметра("ПоказыватьПродажи"); Параметр.Использование = Истина; Параметр = НастройкаПараметра("ПланируемыеПродажи"); Параметр.Использование = Истина; ПараметрВключаяЗапланированныеПродажи = НастройкаПараметра("ВключаяЗапланированныеПродажи"); Если ПараметрВключаяЗапланированныеПродажи.Использование И ПараметрВключаяЗапланированныеПродажи.Значение Тогда Параметр.Значение = Истина; Иначе Параметр.Значение = Ложь; КонецЕсли; Параметр = НастройкаПараметра("ПланируемыеРасходы"); Параметр.Использование = Истина; ПараметрВключаяЗапланированныеРасходы = НастройкаПараметра("ВключаяЗапланированныеРасходы"); Если ПараметрВключаяЗапланированныеРасходы.Использование И ПараметрВключаяЗапланированныеРасходы.Значение Тогда Параметр.Значение = Истина; Иначе Параметр.Значение = Ложь; КонецЕсли; Параметр = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ВалютаУправленческогоУчета")); Если Параметр <> Неопределено Тогда Параметр.Значение = Константы.ВалютаУправленческогоУчета.Получить(); Параметр.Использование = Истина; КонецЕсли; ДатаНачала = Дата(1, 1, 1); ДатаОкончания = Дата(2399, 1, 1); ПараметрПериод = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("Период")); Если ПараметрПериод <> Неопределено И ПараметрПериод.Использование Тогда ДатаНачала = НачалоМесяца(ПараметрПериод.Значение.ДатаНачала); ДатаОкончания = КонецМесяца(ПараметрПериод.Значение.ДатаОкончания); КонецЕсли; ПараметрДатаНачала = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаНачала")); Если ПараметрДатаНачала <> Неопределено Тогда ПараметрДатаНачала.Значение = ДатаНачала; ПараметрДатаНачала.Использование = Истина; КонецЕсли; ПараметрДатаОкончания = КомпоновщикНастроек.Настройки.ПараметрыДанных.НайтиЗначениеПараметра(Новый ПараметрКомпоновкиДанных("ДатаОкончания")); Если ПараметрДатаОкончания <> Неопределено Тогда ПараметрДатаОкончания.Значение = ДатаОкончания; ПараметрДатаОкончания.Использование = Истина; КонецЕсли; СегментыСервер.ВключитьОтборПоСегментуПартнеровВСКД(КомпоновщикНастроек); СегментыСервер.ВключитьОтборПоСегментуНоменклатурыВСКД(КомпоновщикНастроек); ОтразитьОкончаниеИспользованиеОтчета(Запись); КонецПроцедуры Функция ОтразитьНачалоИспользованиеОтчета() Запись = РегистрыСведений.ИспользованиеОтчетов.СоздатьМенеджерЗаписи(); Запись.Период = ТекущаяДатаСеанса(); Запись.ДатаНачалаФормирования = ТекущаяДатаСеанса(); Запись.Отчет = ЭтотОбъект.Метаданные().Представление(); Если ЭтотОбъект.СхемаКомпоновкиДанных.ВариантыНастроек.Количество() > 0 Тогда Запись.ВариантОтчета = ЭтотОбъект.СхемаКомпоновкиДанных.ВариантыНастроек[0].Представление; КонецЕсли; Запись.Пользователь = ПараметрыСеанса.ТекущийПользователь; Возврат Запись; КонецФункции Процедура ОтразитьОкончаниеИспользованиеОтчета(Запись) Запись.ДатаОкончанияФормирования = ТекущаяДатаСеанса(); Запись.Записать(Ложь); КонецПроцедуры Функция НастройкаПараметра(ИмяПараметра) ПараметрДанных = КомпоновщикНастроек.Настройки.ПараметрыДанных.Элементы.Найти(ИмяПараметра); Если ПараметрДанных <> Неопределено Тогда ПараметрПользовательскойНастройки = КомпоновщикНастроек.ПользовательскиеНастройки.Элементы.Найти(ПараметрДанных.ИдентификаторПользовательскойНастройки); Если ПараметрПользовательскойНастройки <> Неопределено Тогда Возврат ПараметрПользовательскойНастройки; Иначе Возврат ПараметрДанных; КонецЕсли; КонецЕсли; Возврат Неопределено; КонецФункции И несмотря на то, что отчет по факту может формироваться несколько минут, все равно в регистре ДатаНачалаФормирования и ДатаОкончанияФормирования равны до секунд. Подскажите, пожалуйста, как отловить момент реального окочания формирования отчета? |
|||
1
Strogg
16.12.19
✎
13:55
|
о боже мой. А замер производительности почему бы не сделать???
|
|||
2
Bodrug
16.12.19
✎
13:58
|
Суть задачи немного шире. В базе есть много отчетов, у которых есть много вариантов. И не все из них используются. Сделали регистр, чтобы туда писать, какие отчеты сейчас используют и в каких вариантах. Спутся какое-то время проанализируем, что не используется будем приводить в порядок
|
|||
3
Strogg
16.12.19
✎
14:00
|
(2). Да, недочитал немного. а зачем тебе время начала и время окончания? Просто сделай счетчик формирования нетиповых отчетов с вариантами. А уж сколько по времени они формируются, зачем?
|
|||
4
Жан Пердежон
16.12.19
✎
14:03
|
(2) бсп почитай, всё уже сделано
|
|||
5
Bodrug
16.12.19
✎
14:04
|
(3) База очень большая, и есть отчеты, которые формируются непростительно долго или вообще вылетают с ошибкой нехватки памяти. Надо понимать, какие отчеты надо оптимизировать. Для этого нам и надо время формирования.
|
|||
6
Алексей_Р
17.12.19
✎
05:00
|
Консоль заданий (ргел. и фон. задания) - Фоновые задания.
Есть столбцы Начало и Конец. |
|||
7
vicof
17.12.19
✎
05:05
|
(4) +1
|
|||
8
Алексей_Р
17.12.19
✎
05:26
|
(4) а где именно "почитать" ?
|
|||
9
vicof
17.12.19
✎
06:11
|
(8) На ИТС
|
|||
10
vicof
17.12.19
✎
06:12
|
||||
11
Алексей_Р
17.12.19
✎
09:29
|
Это?
НачатьЗамерВремени Начинает замер времени ключевой операции. Закончить замер нужно явно вызовом процедуры ЗакончитьЗамерВремени или ЗакончитьЗамерВремениТехнологический. Ну что ж, придется БСП внедрять) |
|||
12
palsergeich
17.12.19
✎
11:56
|
(11) оно самое
|
|||
13
palsergeich
17.12.19
✎
11:57
|
(11) для ленивых можно взять подсистему Гилева, в ней нет лишних зависимостей и не прийдется треть БСП брать, а результат тот же
|
|||
14
palsergeich
17.12.19
✎
11:58
|
(13) за пару часиков можно апдексный отчёт 1с переделать под данные из регистра Гилева, я такое уже делал
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |