К статье
Практический материал

Разработка и Конфигурация · 10 мин

Представление как строка в запросах 1С: функция ПРЕДСТАВЛЕНИЕ

Как работает функция ПРЕДСТАВЛЕНИЕ в языке запросов 1С: синтаксис, примеры, типичные ошибки, влияние на производительность и альтернативы для отчетов.

Функция ПРЕДСТАВЛЕНИЕ в языке запросов 1С преобразует ссылку на объект базы данных в её строковое представление — то, что пользователь видит в интерфейсе: наименование справочника, номер и дату документа и т.п. Это удобный способ получить «читаемое» значение прямо в запросе, не обращаясь к дополнительным полям и не выполняя соединений таблиц.

Типичная ситуация: в регистре хранится ссылка на контрагента, а в отчете нужно вывести его наименование. Вместо левого соединения со справочником «Контрагенты» достаточно написать ПРЕДСТАВЛЕНИЕ(Регистр.Контрагент) — и запрос вернет строку. Однако у этого подхода есть ограничения по производительности и особенности при группировке, о которых нужно знать.

Что делает функция ПРЕДСТАВЛЕНИЕ в запросе

Функция принимает один параметр — выражение ссылочного типа (ссылка на справочник, документ, план счетов, перечисление и т.д.) — и возвращает строку. Результат формируется по правилам, заданным в конфигурации: для справочника это обычно наименование, для документа — строка вида «Реализация товаров 0000-000123 от 12.03.2026», для перечисления — синоним значения.

Важно понимать: представление формируется на стороне сервера СУБД или платформы по данным основной таблицы объекта. Если в конфигурации настроен автопорядок, код, валюта учета и другие поля — они не попадут в представление, если разработчик не переопределил его через обработчик «ОбработкаПолученияПредставления» в модуле менеджера объекта.

Простейший пример использования:

ВЫБРАТЬ

ПРЕДСТАВЛЕНИЕ(Продажи.Контрагент) КАК Контрагент,

Продажи.СуммаОборот КАК Сумма

ИЗ

РегистрНакопления.Продажи.Обороты КАК Продажи

Синтаксис и базовые примеры использования

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

Представление документа с номером и датой

ВЫБРАТЬ

ПРЕДСТАВЛЕНИЕ(РеализацияТоваров.Ссылка) КАК Документ

ИЗ

Документ.РеализацияТоваровУслуг КАК РеализацияТоваров

ГДЕ

РеализацияТоваров.Дата МЕЖДУ &НачалоПериода И &КонецПериода

Представление перечисления

Для перечислений функция возвращает синоним значения, заданный в конфигураторе. Это удобно, когда значение нужно вывести в отчет без программной обработки:

ВЫБРАТЬ

ПРЕДСТАВЛЕНИЕ(Значение(Перечисление.ВидыОпераций.Реализация)) КАК ВидОперации

Если нужно представление текущего значения параметра, передайте параметр в запрос и оберните его функцией: ПРЕДСТАВЛЕНИЕ(&СсылкаНаОбъект). Это работает, если параметр имеет ссылочный тип.

bsl
ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ(Заказы.Контрагент) КАК Клиент, СУММА(Заказы.Сумма) КАК Сумма ИЗ Документ.ЗаказКлиента КАК Заказы СГРУППИРОВАТЬ ПО Заказы.Контрагент

Когда ПРЕДСТАВЛЕНИЕ оправдано, а когда лучше соединение

Функция удобна, но не универсальна. Если из справочника нужны несколько полей (наименование, ИНН, телефон), одно левое соединение выгоднее нескольких вызовов ПРЕДСТАВЛЕНИЕ и обращений к полям через точку. Представление дает только одну строку — расширить её нельзя.

Второй сценарий, где ПРЕДСТАВЛЕНИЕ проигрывает, — отборы и соединения. Условие ГДЕ ПРЕДСТАВЛЕНИЕ(Контрагент) ПОДОБНО "%ООО%" не использует индексы и приводит к полному перебору таблицы. Для фильтрации всегда работайте со ссылкой или примитивными полями.

ПРЕДСТАВЛЕНИЕ или соединение

ПРЕДСТАВЛЕНИЕ(Ссылка)

Подходит для быстрого вывода одной строки, отладки, произвольных отчетов. Ограничение: нельзя получить другие поля объекта, медленнее на больших выборках.

Левое соединение со справочником

Подходит, когда нужны несколько полей объекта или дальнейшая фильтрация. Требует знания структуры таблицы, но работает быстрее и гибче.

Поле через точку (Ссылка.Наименование)

Платформа сама выполняет неявное соединение. Удобно для одного-двух полей, но при множестве обращений порождает много соединений.

Влияние на производительность и ограничения

Каждый вызов ПРЕДСТАВЛЕНИЕ фактически заставляет СУБД обратиться к основной таблице объекта. На выборке в сотни тысяч строк это заметно увеличивает время выполнения запроса. Особенно тяжелый случай — составные типы, когда платформа не знает заранее, к какой таблице обращаться.

Ограничения, которые нужно учитывать:

  • нельзя использовать ПРЕДСТАВЛЕНИЕ в соединениях таблиц — условие по строке не использует индексы;
  • группировка по представлению может объединить разные объекты с одинаковым наименованием (два контрагента «Иванов И.И.» сольются в одну строку);
  • для примитивных типов (число, строка, дата) функция вернет само значение, приведенное к строке, но смысла в таком вызове обычно нет;
  • представление зависит от настроек конфигурации и может меняться между версиями — не стройте на нем бизнес-логику.

Типичные ошибки при работе с представлением

Первая распространенная ошибка — попытка сравнить представление с эталонной строкой в условии ГДЕ. Помимо медленной работы, такой код ломается, если администратор переименует элемент справочника или изменится формат представления документа.

Вторая ошибка — ожидание, что ПРЕДСТАВЛЕНИЕ вернет наименование для документа. Для документов функция возвращает строку «ВидДокумента Номер от Дата», а не какое-либо пользовательское поле. Если нужен именно номер — берите поле Номер напрямую.

Третья ошибка — использование представления в пакетных запросах и временных таблицах с последующим соединением по нему. Строка представления не уникальна, соединение даст дубли и неверные итоги.

Типичные ошибки
01
Отбор ГДЕ ПРЕДСТАВЛЕНИЕ(Ссылка) ПОДОБНО — полный перебор таблицы и медленный запрос
02
Группировка по представлению — объекты с одинаковыми наименованиями склеиваются в одну строку итогов
03
Сравнение представления с фиксированной строкой — код ломается при переименовании элемента
04
Ожидание наименования для документа — функция возвращает вид, номер и дату, а не произвольное поле

Проверка результата и отладка

Быстрее всего проверить, что вернет ПРЕДСТАВЛЕНИЕ, — в консоли запросов. Выполните запрос на небольшом отборе (добавьте условие по периоду или РАЗНОСТЬ по нескольким ссылкам) и сравните строку с тем, что видно в форме списка объекта. Значения должны совпадать.

Если представление отличается от ожидаемого, проверьте модуль менеджера объекта: наличие процедуры «ОбработкаПолученияПредставления» означает, что строка формируется программно и может зависеть от прав пользователя, функциональных опций или языка.

Контрольные точки

Как проверить результат

Строка в результате запроса
Норма

Совпадает с представлением объекта в форме списка

Тревожный признак

Пустая строка при заполненной ссылке — проверьте права доступа и битые ссылки

Время выполнения запроса
Норма

Сопоставимо с вариантом без ПРЕДСТАВЛЕНИЕ на тестовой выборке

Тревожный признак

Запрос замедляется в разы — уберите функцию из условий и группировок

Итоги при группировке
Норма

Количество строк итогов равно количеству уникальных объектов

Тревожный признак

Строк меньше, чем объектов — группировка идет по представлению, а не по ссылке

Альтернативы: СКД, выражение ВЫБОР и программное формирование

В системе компоновки данных представление ссылки часто вообще не нужно получать в запросе: СКД сама выводит ссылочные поля в виде представления. Достаточно вывести поле-ссылку, и в отчете пользователь увидит читаемую строку, а при двойном клике сможет открыть объект.

Если нужна нестандартная строка (например, «Код — Наименование»), соберите её в запросе оператором конкатенации: Справочник.Код + " — " + Справочник.Наименование, предварительно приведя код к строке функцией ПОДСТРОКА или через ВЫРАЗИТЬ. Для сложной логики используйте конструкцию ВЫБОР КОГДА...ТОГДА...КОНЕЦ.

Наконец, представление всегда можно получить программно после выполнения запроса: метод Строка(Ссылка) или обращение к свойствам объекта. Это оправдано, когда обработка построчная и объем данных невелик.

Маршрут решения

Как выбрать подход

Нужна одна читаемая строка в простом отчете или при отладкеИспользуйте ПРЕДСТАВЛЕНИЕ(Ссылка) в секции ВЫБРАТЬ
Отчет строится на СКДВыводите поле-ссылку напрямую — СКД сама покажет представление
Нужно несколько полей объекта или фильтрация по нимДелайте левое соединение с таблицей объекта
Нужен нестандартный формат строкиСоберите строку конкатенацией полей или через ВЫБОР КОГДА

Часто задаваемые вопросы

Можно ли использовать ПРЕДСТАВЛЕНИЕ в условии ГДЕ?

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

Почему для документа функция возвращает не наименование?

У документов нет поля «Наименование». Представление документа формируется из синонима вида документа, номера и даты. Если нужен номер или дата отдельно — обращайтесь к соответствующим полям напрямую.

Что вернет ПРЕДСТАВЛЕНИЕ для битой ссылки?

Для ссылки на удаленный объект функция обычно возвращает строку вида «<Объект не найден>» с идентификатором либо пустую строку — поведение зависит от версии платформы. Наличие таких строк в отчете — признак нарушения ссылочной целостности, который стоит устранить.

Работает ли функция с перечислениями?

Да. Для перечислений ПРЕДСТАВЛЕНИЕ возвращает синоним значения, заданный в конфигураторе. Это удобно для вывода в отчеты без дополнительной обработки, но для сравнений используйте само значение перечисления.

Чем ПРЕДСТАВЛЕНИЕ отличается от обращения Ссылка.Наименование?

Обращение через точку возвращает конкретное поле и работает только если оно есть у объекта. ПРЕДСТАВЛЕНИЕ универсально: оно вернет строку для любого ссылочного типа, включая документы и перечисления, учитывая переопределенное представление в модуле менеджера.

Можно ли сортировать результат по представлению?

Можно — добавьте выражение в секцию УПОРЯДОЧИТЬ ПО. Но учтите: сортировка будет строковой, а не по ссылке, и на больших выборках вычисление представлений для всех строк замедлит запрос. Часто разумнее упорядочить по ссылке или дате.

Итог

Что важно запомнить

ПРЕДСТАВЛЕНИЕ превращает ссылку в читаемую строку и идеально подходит для вывода и отладки. Для фильтров, соединений и группировок используйте ссылку и поля объекта — иначе запрос потеряет скорость и корректность итогов. В отчетах на СКД представление чаще всего вообще не нужно получать вручную.