При написании запросов для
ссылочных данных ("ФизЛицо", "Валюта" и т.п.) мы в качестве выходных
полей использовали сами поля ссылок.
Т.е. реально в поле "ФизЛицо" лежит не "Петрищев Иван Константинович (руководитель)", а ссылка на этого сотрудника: "d5f4e15a-ecb0-11db-95e0-00167618254b".
Уже при заполнении
параметров области макета система вынуждена автоматически по этой ссылке
"бегать" в базу данных, в таблицу справочника для определения
представления этой ссылки, т.е. в нашем случае – наименования "ПетрищеИванв Константинович (руководитель)".
Беда в том, что это происходит внутри цикла обхода результата запроса - то есть имеем многократные обращения к базе данных.Тем обиднее, что чаще
всего сама ссылка вообще печатной форме не нужна. Потому что печатные
формы в 99,99% случаев печатают, а не разглядывают с целью расшифровки.
Чтобы повысить
эффективность нашего механизма, если сами ссылки в печатной форме не
нужны, но нужны их представления – нужно заставить сам запрос получать
эти представления ссылочных данных, выводимых в выходной таблице.
Тогда система, конечно же,
тоже будет получать данные из справочников, но это будет сделано только
за один раз – за счет неявного левого соединения "почти выходной"
таблицы запроса с соответствующими таблицами справочников, перечислений,
документов и т.п.
Необходимо использовать в запросе функцию
ПРЕДСТАВЛЕНИЕ(<Выражение>)
Комментариев нет:
Отправить комментарий