Разработка и Конфигурация · 12 мин
Представление в запросе 1С: что это и как использовать
Что такое представление в запросе 1С, как работает функция ПРЕДСТАВЛЕНИЕ, когда её использовать, ограничения, типичные ошибки и примеры кода.
При работе с запросами в 1С разработчик часто сталкивается с ситуацией, когда из базы нужно получить не саму ссылку на объект, а её человекочитаемое текстовое описание — наименование товара, ФИО сотрудника, номер документа. Для этого в языке запросов предусмотрена функция ПРЕДСТАВЛЕНИЕ(), а также связанный механизм автоматического получения представлений ссылочных полей.
Понимание того, как формируется представление, важно не только для вывода красивых отчётов. Неправильное использование функции влияет на производительность: лишние соединения таблиц и преобразования типов замедляют выполнение запроса, особенно на больших объёмах данных. Поэтому вопрос «что такое представление в запросе» — это одновременно вопрос корректности и скорости работы решения.
В материале разобрано, что именно возвращает функция ПРЕДСТАВЛЕНИЕ, чем она отличается от обращения к полям через точку, в каких задачах её применение оправдано, а где лучше обойтись другими средствами платформы.
Что такое представление объекта в 1С
Каждый ссылочный объект в 1С (элемент справочника, документ, план счетов) имеет внутренний идентификатор — ссылку. Сама по себе ссылка нечитаема: это уникальный идентификатор, который не несёт смысла для пользователя. Чтобы показать объект человеку, платформа формирует его представление — строку, составленную из ключевых полей объекта.
Для справочника это обычно наименование, для документа — комбинация вида «Реализация товаров 000001 от 12.03.2026», для перечисления — синоним значения, заданный в конфигураторе. Какие именно поля участвуют в представлении, определяется настройками объекта метаданных: длиной кода и наименования, основным представлением (в виде кода или наименования), а также стандартным представлением для документов.
В языке запросов доступ к представлению реализован двумя способами: неявно — при обращении к полю ссылки через точку (например, Товары.Номенклатура.Наименование) и явно — через функцию ПРЕДСТАВЛЕНИЕ(). Оба подхода дают строку, но работают по-разному и имеют разные последствия для производительности.
Функция ПРЕДСТАВЛЕНИЕ: синтаксис и поведение
Функция имеет простой синтаксис: ПРЕДСТАВЛЕНИЕ(Поле), где в качестве аргумента передаётся поле запроса — ссылка, значение перечисления или другое значение. Результат всегда имеет строковый тип. Ниже пример типового запроса:
SELECT
Продажи.Номенклатура КАК Товар,
ПРЕДСТАВЛЕНИЕ(Продажи.Номенклатура) КАК ТоварПредставление,
ПРЕДСТАВЛЕНИЕ(Продажи.ДокументРеализации) КАК ДокументСтрокой
ИЗ
РегистрНакопления.Продажи КАК Продажи
Важно понимать, что функция вычисляется на стороне СУБД в момент выполнения запроса. Для ссылочных полей платформа фактически добавляет соединение с таблицей объекта, чтобы получить поля, из которых строится представление. Это скрытое соединение не видно в тексте запроса, но оно влияет на план выполнения.
Для ссылок, указывающих на несуществующие объекты (так называемые «битые ссылки»), функция вернёт строку вида «<Объект не найден> (…)», что иногда используют как диагностический приём при поиске нарушений ссылочной целостности.
Чем ПРЕДСТАВЛЕНИЕ отличается от обращения через точку
Разработчики нередко смешивают два приёма: получение представления функцией и разыменование ссылки через точку (Ссылка.Наименование). Результат может совпадать, но механизмы различаются. Разыменование возвращает конкретное поле с известным типом, а ПРЕДСТАВЛЕНИЕ — всегда строку, сформированную по правилам объекта метаданных.
| Критерий | ПРЕДСТАВЛЕНИЕ(Поле) | Поле через точку (Ссылка.Наименование) |
|---|---|---|
| Тип результата | Всегда строка | Тип конкретного поля |
| Состав значения | По правилам объекта (для документа — вид, номер, дата) | Только запрошенное поле |
| Работа с составными типами | Корректно обрабатывает поле любого ссылочного типа | Требует, чтобы поле существовало у всех типов |
| Нагрузка на СУБД | Скрытое соединение, может быть тяжелее | Обычно легче, соединение явное |
| Применение в условиях | Не рекомендуется | Допустимо, но тоже с осторожностью |
Ключевое преимущество ПРЕДСТАВЛЕНИЕ проявляется при работе с полями составного типа. Если реквизит может хранить ссылку и на справочник «Контрагенты», и на справочник «Организации», разыменование через точку потребует конструкции ВЫБОР с проверкой типа, а функция представления вернёт читаемую строку для любого из типов без дополнительных условий.
Сравнение вариантов получения представления
Подходит для вывода в отчёты и для полей составного типа. Ограничение — скрытое соединение и строковый результат, непригодный для дальнейших соединений.
Подходит, когда тип поля один и нужно конкретное поле. Ограничение — не работает универсально для составных типов.
Подходит, когда данные уже выбраны и обрабатываются в модуле. Ограничение — дополнительные обращения к базе при массовой обработке.
Где использовать представление, а где — нет
Главное правило: представление — это данные для отображения, а не для логики. Корректные сценарии применения: вывод в отчёты на СКД, формирование печатных форм, экспорт данных в текстовом виде, диагностические выборки. Во всех этих случаях строковое представление — конечный результат, который дальше не обрабатывается.
Некорректные сценарии — использование представления в условиях отбора, соединениях таблиц и группировках. Сравнение строк медленнее сравнения ссылок, а соединение по представлению вообще лишено смысла: два разных объекта могут иметь одинаковое наименование, и соединение даст дубли или потери данных.
Представление в отчётах на СКД
В схеме компоновки данных представление ссылочных полей часто выводится автоматически: если в наборе данных выбрано поле-ссылка, СКД при выводе показывает пользователю его представление. Явно добавлять ПРЕДСТАВЛЕНИЕ в текст запроса набора данных обычно не требуется — это лишь увеличивает нагрузку. Исключение — случаи, когда нужна конкретная строковая форма, отличающаяся от стандартной.
Представление для полей составного типа
Если поле регистра может содержать ссылки разных типов (например, «Плательщик» — контрагент или физическое лицо), функция ПРЕДСТАВЛЕНИЕ — самый простой способ получить читаемое значение без построения ВЫБОР с определением типа каждой записи. Это оправдано именно в выводимых полях, а не в служебных вычислениях.
Влияние на производительность и как его снизить
Каждый вызов ПРЕДСТАВЛЕНИЕ для ссылочного поля означает, что СУБД должна получить данные из таблицы объекта. На выборке в несколько тысяч строк это незаметно, но на больших регистрах с десятками представлений запрос может выполняться в разы дольше. Признак проблемы — отчёт, который «висит» при большом периоде, хотя сам запрос выглядит простым.
Как проверить результат
ПРЕДСТАВЛЕНИЕ применяется только к полям, выводимым пользователю
Функция используется в условиях, соединениях или группировках
Отчёт открывается за приемлемое время на реальном объёме данных
Время выполнения резко растёт при увеличении периода
Каждой строке соответствует свой объект, нет склейки по наименованию
Разные объекты с одинаковым наименованием объединены в одну строку
Практические способы снизить нагрузку: запрашивать представление только для итоговых строк отчёта, а не для каждой детальной записи; заменять функцию на разыменование конкретного поля, когда тип ссылки один; переносить формирование строки на этап обработки результата в модуле, если объём данных невелик.
- 1Определите, действительно ли нужна строка: если поле участвует в логике — используйте ссылку.
- 2Добавьте ПРЕДСТАВЛЕНИЕ(Поле) в список выборки с понятным псевдонимом, например ТоварПредставление.
- 3Выполните запрос в консоли запросов на копии базы и проверьте результат глазами.
- 4Замерьте время выполнения на реальном объёме данных и сравните с вариантом без представления.
- 5Если запрос замедлился — замените функцию на разыменование поля или вынесите формирование строки в код.
ПРЕДСТАВЛЕНИЕССЫЛКИ и смежные возможности
Помимо основной функции, в языке запросов есть связанные механизмы. Функция ПРЕДСТАВЛЕНИЕССЫЛКИ() применяется в расширениях языка запросов для СКД и позволяет получать представления полей, которые не входят в основной запрос, — платформа дособирает их отдельно при выводе. Это снижает нагрузку на основной запрос, но требует понимания того, как СКД формирует итоговый текст обращения к базе.
Для перечислений ПРЕДСТАВЛЕНИЕ возвращает синоним значения из метаданных. Если синоним не заполнен, будет использовано имя значения. Это стоит учитывать при локализации решений: представление зависит от настроек конфигурации и языка, а не является фиксированной константой.
Удобный приём диагностики: выберите ПРЕДСТАВЛЕНИЕ по ссылочному полю регистра и отберите строки, где результат содержит «Объект не найден». Так быстро находятся битые ссылки без написания отдельной обработки.
Ограничения и частые вопросы
Функция не работает с произвольными выражениями — аргументом должно быть поле или значение, для которого платформа умеет строить представление. Нельзя получить представление результата агрегатной функции или вычисляемого выражения. Также следует помнить, что представление формируется на момент выполнения запроса: если наименование объекта изменится, старые выгрузки не обновятся автоматически.
В динамических списках представления ссылочных полей выводятся платформой автоматически, поэтому добавлять их в запрос списка вручную не нужно — это только замедлит открытие формы.
Что важно запомнить
Представление — это строковое описание объекта для показа пользователю. Функция ПРЕДСТАВЛЕНИЕ() получает его в запросе, но создаёт скрытые соединения и возвращает строку. Используйте её только в выводимых полях отчётов и печатных форм, никогда — в условиях, соединениях и группировках. Для одиночного типа ссылки предпочтительнее разыменование через точку.
Чем ПРЕДСТАВЛЕНИЕ отличается от ВЫРАЗИТЬ в запросе 1С?
Это разные функции. ПРЕДСТАВЛЕНИЕ преобразует значение в читаемую строку по правилам объекта метаданных, а ВЫРАЗИТЬ приводит значение к указанному типу данных (например, сужает составной тип или ограничивает длину строки). Их часто комбинируют: сначала получают представление, затем приводят его к строке фиксированной длины.
Почему запрос с ПРЕДСТАВЛЕНИЕ работает медленно?
Для каждого ссылочного поля, к которому применена функция, СУБД выполняет соединение с таблицей объекта, чтобы получить поля представления. Несколько таких функций в одном запросе умножают число соединений. Проверьте, действительно ли все представления нужны, и замените часть из них на разыменование конкретных полей.
Что вернёт ПРЕДСТАВЛЕНИЕ для битой ссылки?
Функция вернёт строку вида «<Объект не найден>» с фрагментом идентификатора. Это свойство удобно использовать для поиска нарушений ссылочной целостности: достаточно выбрать представления ссылочных полей и отобрать строки, содержащие соответствующий текст.
Можно ли отбирать записи по представлению в условии ГДЕ?
Технически запрос выполнится, но делать так не следует. Сравнение строк медленнее сравнения ссылок, а главное — наименования не уникальны: отбор по строке может захватить лишние объекты или пропустить нужные из-за различий в пробелах и регистре. Отбирайте всегда по ссылке, полученной через параметр.
Что возвращает ПРЕДСТАВЛЕНИЕ для документа?
Для документа формируется стандартное представление: вид документа, номер и дата, например «Поступление товаров 000012 от 05.04.2026». Отдельное поле «наименование» у документов отсутствует, поэтому получить его через ПРЕДСТАВЛЕНИЕ нельзя — состав строки определяется платформой.
Нужно ли добавлять ПРЕДСТАВЛЕНИЕ в запрос набора данных СКД?
Обычно нет. СКД при выводе ссылочных полей сама показывает пользователю их представления. Явный вызов функции оправдан, только если требуется нестандартная строковая форма значения, отличающаяся от той, что формирует платформа.