Показано с 1 по 9 из 9
Тема: Оптимизация кода отчета
Древовидный режим
-
03.06.2013, 11:13 #3
- Регистрация
- 15.12.2010
- Сообщений
- 29
- Сказал(а) спасибо
- 1
- Поблагодарили 1 раз в 1 сообщении
Написано очень коряво, такое надо не править и оптимизировать, а писать заново.
Грубые ошибки и неточности:
1) Запрос в цикле это неправильно, некрасиво и медленно, есть неточности и ошибки
2) Параметры к запросу к основным начислениям заданы таким образом, что мы можем получить данные только за конкретный месяц и то, если будем пользоваться кнопкой (...) для выбора периода, данные за произвольный период мы не получим в принципе. Надо было написать что-то Вроде:
ГДЕ ПериодДействия МЕЖДУ НАЧАЛОПЕРИОДА(День,&ДН) и КОНЕЦПЕРИОДА(День,&ДК), т.к. часто дата в 8.2 это Дата и время а не просто дата
3) Отчет формируется за период, а срез последних без параметра даты, стало быть выведутся самые последние значения, если сейчас май, а данные смотрели, скажем, за январь, то данные по должностям будут неправильные.
4) Условие на виртуальные таблицы типа СрезПоследних нужно задавать в параметрах таблицы, а не в секции ГДЕ.
5) за каким-то чертом три раза выгружаются данные из первого запроса, да еще и сворачиваются и сортируются, а кроме того не используется индекс, я так подозреваю это попытка сгруппировать данные по видам рассчетов и по сотрудникам.
6) Циклы, Циклы внутри циклов. Новый("ТаблицаЗначений"), столетняя привычка к 77, это надо искоренять, 8.2 может и быстрее и лучше и проще. И запросы ускоряют, а не замедляют работу.
7) Такой отчет делается одним запросом с группировкой по итогам. А еще лучше и правильнее делать такие простые отчеты в СКД, тогда будет возможность в режиме Предприятие вносить изменения в группировки отчета. Если нет возможности использовать СКД(бывает и такое, но редко), надо готовить отчет к тому, что он может быть конвертирован в управляемое приложение. Для этого в модуле отчета должна быть экспортная функция, в которую передается структура с параметрами, которая возвращает результат отчета в виде готового табличного документа.
8) ТабДок.Показать(), это довольно аляпистое решение, должна быть таблица на форме, куда будет выгружаться результат отчета, т.о. форма отчета и результат будут в одном окне, это вызовет меньше непоняток у пользователей.
Похожие темы
-
Оптимизация Windows 7: Фрагментация диска; Фоновые приложения
от DEL в разделе Новости Microsoft WindowsОтветов: 0Последнее сообщение: 21.12.2010, 01:10
Социальные закладки