При выводе ссылочных полей в отчет (а также в тех местах, где необходимо отображать представление, например, при выводе значения при помощи функции "Сообщить") следует учитывать тот факт, что при выводе значения-ссылки программа будет выполнять дополнительный запрос для получения представления поля, вследствие чего процесс вывода будет выполняться медленнее. Для того чтобы избежать подобного эффекта, следует в запросе сразу получать поле - представление для ссылочного поля и уже его и выводить в отчет. Ссылочное же поле целесообразно выводить в расшифровку ячейки с тем, чтобы пользователь имел возможность "открыть" значение ячейки и перейти к элементу.
Пример:
Копировать в буфер обменаВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот
ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты
ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот)
ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент
При выводе результата такого запроса в табличный документ программа будет выполнять дополнительные запросы для получения представлений полей "Номенклатура" и "Контрагент", в результате чего вывод отчета замедлится. Для того чтобы избежать получения представлений во время вывода отчета, следует в запрос добавить поля-представления и в отчет выдавать именно их.
Пример:
Копировать в буфер обменаВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
ПродажиКомпанииОбороты.Номенклатура.Представление КАК НоменклатураПредставление,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент.Представление КАК КонтрагентПредставление,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот
ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты
ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот)
ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент
Из данного запроса необходимо выдавать в табличный документ поля "НоменклатураПредставление" и "КонтрагентПредставление".
Обратим внимание на то, что реализованный в конфигураторе конструктор выходных форм следует выше названным правилам. Он автоматически добавляет необходимые поля-представления в запрос и обеспечивает вывод в отчет именно их.
Заметим, что получение реквизитов "через точку" от ссылочных полей в момент вывода отчета также является операцией способной значительно замедлить вывод отчета. Поэтому для вывода реквизитов ссылочных полей необходимо их получать непосредственно в запросе, а не получать через ссылку при выводе отчета.
Например, для вывода поля "Код" элемента номенклатуры следует использовать такой запрос:
Копировать в буфер обменаВЫБРАТЬ
ПродажиКомпанииОбороты.Номенклатура КАК Номенклатура,
ПродажиКомпанииОбороты.Номенклатура.Представление КАК НоменклатураПредставление,
ПродажиКомпанииОбороты.Номенклатура.Код КАК НоменклатураКод,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент КАК ДокументПродажиКонтрагент,
ПродажиКомпанииОбороты.ДокументПродажи.Контрагент.Представление КАК КонтрагентПредставление,
ПродажиКомпанииОбороты.КоличествоОборот КАК КоличествоОборот,
ПродажиКомпанииОбороты.СуммаПродажиОборот КАК СуммаПродажиОборот
ИЗ
РегистрНакопления.ПродажиКомпании.Обороты КАК ПродажиКомпанииОбороты
ИТОГИ СУММА(КоличествоОборот), СУММА(СуммаПродажиОборот)
ПО
ОБЩИЕ,
Номенклатура,
ДокументПродажиКонтрагент
И выдавать в отчет поле НоменклатураКод, а не получать через ссылку реквизит "Код".
Об использовании представлений ссылочных полей в построителе отчета см. раздел "Работа построителя отчета с представлениями ссылочных значений".