Тонкости настройки отчетов

Речь идет в основном о тонкостях настройки параметрических отчетов.

Подзагрузки с сервера данных в процессе построения отчета и как с ними бороться

Отчет строится по данным, имеющимся на сервере расчетов. Однако в нем можно использовать и поля записей, которым не соответствуют параметры проводки или атрибуты аналитических справочников. Такие поля получаются напрямую с сервера данных. Например, в отчете с разбиением по ресурсам можно вывести, скажем, англоязычное наименование ресурса.

Однако если не предпринимать никаких мер, то отчет сначала будет построен без этой дополнительной информации, а потом для каждой строки отчета, для каждого ресурса, будет сделан дополнительный запрос на сервер за его англоязычным наименованием. Такой запрос называется подзагрузкой, и поскольку подзагрузок много, то они замедляют построение отчета, часто в разы.

Для того, чтобы исправить ситуацию, нужно выявить подзагрузки и устранить их. Выявить подзагрузки поможет отладочная версия и сохраненные в каталог TEMP Windows-a логи отладочной версии. Постройте отчет (лучше делать это сразу после запуска сессии, а перед повторным построением отчета выйти из сессии и снова войти, т.к. загруженные с сервера записи кешируются на клиенте, и второе построение отчета всегда происходит быстрее). Вы увидите в сохраненном лог файле сообщения типа

TRecord: подзагрузка поля Управление.Данные.Процесс.Контрагент

Это и есть имя поля, которого не нашел алгоритм построения отчета среди загруженных и за которым сделал запрос к серверу данных. Эти поля нужно аккуратно перечислить в настройках параметрического отчета на странице «Загрузка полей» (как это сделать - см. он-лайновую справку ТБК по этой странице диалога настроек параметрического отчета). Затем выходите из сессии, заходите - и повторяете процедуру до тех пор, пока все подзагрузки не исчезнут и ваш отчет резко не ускорится.

Использование функций Оборот, Остаток и т.п.

В формулах показателей параметрического отчета можно использовать функции типа Оборот или Остаток. Помните, что такие функции - это отчет в миниатюре, отчет, возвращающий единственное значение. При построении оборота или остатка так же открывается изоляция на сервере расчетов, отбираются проводки, производится их суммирование. Поэтому массовый вызов таких функций - скажем, для каждой строки отчета - может резко замедлить его построения.

Бороться с этим нужно реинжинирингом отчета, изменением его настроек. Например, такие функции могут применяться для того, чтобы показать в отчете оборот или остаток по условию отбора, несколько отличающемуся от условия самого отчета. Но это можно сделать иначе - если общую часть всех условий отбора вынести в условие отчета, а их различия сделать условиями на показатели отчета. Тогда, кстати, исчезает потребность использования пользовательских показателей для таких оборотов и остатков, т.к. дополнительное условие можно наложить и на системный показатель.

Однако, нужно заметить, что если заданы разрезы отчета, например, «заказ,ресурс», а нужно вычислить сумму оплат по заказу, то фильтры здесь не помогут, придется все-таки воспользоваться функцией оборот/остаток, с указанием в качестве условия отбора «заказ=»+str(поле(»#»,стр,1)).

Разыменование значений разбиений, полученных функцией Поле

С помощью функции Поле можно получить значение разбиения по строкам, колонкам или таблицам, соответствующее некоторой клетке отчета. Как правило, значением разбиения является элемент аналитического справочника, соответствующей некоторой записи. Как сам элемент справочника, так и запись можно разыменовывать, доступаясь по ссылкам из нее к другим записям. При этом обратите внимание, что разыменование следует помещать внутрь функции Поле, а не разыменовывать возвращаемое ею значение. Т.е. вместо кода типа

Поле("#",Таб).КлиентУК.ВалютаПроцесса.Код

следует писать

Поле("#КлиентУК.ВалютаПроцесса.Код",Таб)

В этом случае, если значение разбиения окажется равным NIL, Вы не получите сообщения об ошибке в окно сообщений.

 
doc/report_tips.txt · Последние изменения: 2016/04/15 15:26 (внешнее изменение)
 
За исключением случаев, когда указано иное, содержимое этой вики предоставляется на условиях следующей лицензии:CC Attribution-Noncommercial-Share Alike 3.0 Unported
Recent changes RSS feed Donate Powered by PHP Valid XHTML 1.0 Valid CSS Driven by DokuWiki