Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
25 ноя 2024, 01:11

Отладка отчета

Автор stillenough, 16 дек 2014, 10:18

0 Пользователей и 1 гость просматривают эту тему.

stillenough

Добрый всем день. В руки попал отчет, который написан сильно начинающим программером. В нем куча алгоритмов, дикий макет по требованию заказчика, и обход объектов конфигурации происходит так:
ПлатВед = Документы.ПлатежнаяВедомость.Выбрать(ДатаНач,КонецДня(ДатаКон));
ЗПЗакрой = 0;
ЗПШвей = 0;
ЗПУпак = 0;
Пока платВед.Следующий() Цикл
Если Найти(ПлатВед.ПодразделениеОрганизации.ПолноеНаименование(),НРЕГ(СокрЛП("закройный")))  > 0 Тогда
ЗПЗакрой = ЗПЗакрой + ПлатВед.ТабличнаяЧасть.Итог("КВыплате");
ИначеЕсли Найти(ПлатВед.ПодразделениеОрганизации.ПолноеНаименование(),НРЕГ(СокрЛП("швейный")))  > 0 Тогда
ЗПШвей = ЗПШвей + ПлатВед.ТабличнаяЧасть.Итог("КВыплате");
ИначеЕсли Найти(ПлатВед.ПодразделениеОрганизации.ПолноеНаименование(),НРЕГ(СокрЛП("упаковки")))  > 0 Тогда
ЗПУпак = ЗПУпак + ПлатВед.ТабличнаяЧасть.Итог("КВыплате");
КонецЕсли;
КонецЦикла;

Естественно нужно такие моменты переписать, но мне стало интересно - насколько увеличится скорость выполнения определенной процедуры. Как это можно (им можно ли вообще) замерять?

stillenough

нашел...
Процедура ЗарплатаПодразделения();// ОПТИМИЗАЦИЯ ЗАПРОСА П+

Начало = ТекущаяУниверсальнаяДатаВМиллисекундах(); //зафиксируем начало процесса...
ПлатВед = Документы.ПлатежнаяВедомость.Выбрать(ДатаНач,КонецДня(ДатаКон));
ЗПЗакрой = 0;
ЗПШвей = 0;
ЗПУпак = 0;
Пока платВед.Следующий() Цикл
Если Найти(ПлатВед.ПодразделениеОрганизации.ПолноеНаименование(),НРЕГ(СокрЛП("закройный")))  > 0 Тогда
ЗПЗакрой = ЗПЗакрой + ПлатВед.ТабличнаяЧасть.Итог("КВыплате");
ИначеЕсли Найти(ПлатВед.ПодразделениеОрганизации.ПолноеНаименование(),НРЕГ(СокрЛП("швейный")))  > 0 Тогда
ЗПШвей = ЗПШвей + ПлатВед.ТабличнаяЧасть.Итог("КВыплате");
ИначеЕсли Найти(ПлатВед.ПодразделениеОрганизации.ПолноеНаименование(),НРЕГ(СокрЛП("упаковки")))  > 0 Тогда
ЗПУпак = ЗПУпак + ПлатВед.ТабличнаяЧасть.Итог("КВыплате");
КонецЕсли;
КонецЦикла;
Конец = ТекущаяУниверсальнаяДатаВМиллисекундах(); //зафиксируем окончание процесса...
    ВремяВыполнения = (Конец - Начало)/1000; //вычислим время выполнения цикла в секундах.
    сообщить("Время выполнения цикла ЗарплатаПодразделения составило "+ВремяВыполнения+" сек.");
КонецПроцедуры

KrivosheevEV

Нет. Не так.
Конфигуратор - Отладка - Замер производительности.

1. Нажать в конфигураторе.
2. В предприятии выполнить задачу.
3. Отжать в конфигураторе.
4. Подождать вывода результата.

Теги:

Похожие темы (5)

Рейтинг@Mail.ru

Поиск