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

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

ПРЕДСТАВЛЕНИЕ в запросе 1С: назначение, синтаксис и практика

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

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

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

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

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

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

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

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

Чем ПРЕДСТАВЛЕНИЕ отличается от ПРЕДСТАВЛЕНИЕССЫЛКИ

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

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

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

Сравнение вариантов

ПРЕДСТАВЛЕНИЕ

Универсальная функция для любых типов: даты, числа, булево, перечисления, ссылки, составные поля. Для ссылок работает медленнее.

ПРЕДСТАВЛЕНИЕССЫЛКИ

Только для ссылочных значений. Быстрее и предпочтительнее, когда тип поля заведомо ссылочный.

Прямой вывод полей (Наименование, Код)

Если нужно конкретное поле объекта, лучше выбрать его явно через точку — это прозрачнее и управляемее, чем представление.

Когда функцию стоит применять, а когда — нет

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

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

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

Примеры использования в реальных запросах

Типовой запрос, выводящий документы с человекочитаемыми представлениями контрагента и самого документа:

ВЫБРАТЬ

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

ПРЕДСТАВЛЕНИЕССЫЛКИ(Реализация.Контрагент) КАК Контрагент,

ПРЕДСТАВЛЕНИЕ(Реализация.Дата) КАК ДатаСтрокой

ИЗ

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

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

Пример с перечислением: ПРЕДСТАВЛЕНИЕ(Заказ.Статус) вернёт синоним значения перечисления, например «К отгрузке». Это удобно для выгрузок, где код значения перечисления бессмысленен, а встроенный идентификатор не нагляден.

bsl
ВЫБРАТЬ
	ПРЕДСТАВЛЕНИЕССЫЛКИ(Товары.Номенклатура) КАК Товар,
	ПРЕДСТАВЛЕНИЕ(Товары.Количество) КАК КоличествоСтрокой
ИЗ
	Документ.РеализацияТоваровУслуг.Товары КАК Товары
ГДЕ
	Товары.Ссылка = &Ссылка

Ограничения и подводные камни

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

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

Третье — зависимость от настроек. Вид представления даты и числа зависит от региональных установок, представление ссылки — от свойства «Основное представление» объекта метаданных. Если конфигурацию изменят, строки в отчётах изменятся без единой правки запроса. Не закладывайтесь в коде на конкретный формат строки.

Типичные ошибки и как их избежать

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

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

Третья ошибка — сортировка результата по полю с представлением даты или числа. Строки сортируются как текст: «10.01.2026» окажется раньше «2.01.2026». Сортируйте по исходному полю, а представление используйте только для отображения.

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

Как проверить результат и выбрать правильный подход

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

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

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

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

Колонка со ссылкой
Норма

Строка совпадает с тем, что видит пользователь в списке

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

Пустая строка или «Объект не найден» — битая ссылка

Представление даты
Норма

Читаемая дата в ожидаемом формате

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

Непривычный формат — проверьте региональные настройки базы

Производительность
Норма

Запрос выполняется за приемлемое время на реальном объёме

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

Резкое замедление — перенесите представление после фильтрации

Перечисление
Норма

Выводится синоним значения, например «К отгрузке»

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

Выводится имя значения — вероятно, выбрано не представление, а поле

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

Как выбрать действие

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

Частые вопросы

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

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

Почему ПРЕДСТАВЛЕНИЕ возвращает код вместо наименования?

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

Можно ли использовать ПРЕДСТАВЛЕНИЕ в параметрах виртуальных таблиц?

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

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

Для пустой ссылки — пустую строку или строку вида «<...>» в зависимости от типа. Для NULL результатом будет NULL, а не пустая строка, поэтому при конкатенации используйте ЕСТЬNULL, иначе вся склеенная строка обнулится.

Замедляет ли ПРЕДСТАВЛЕНИЕ запрос в СКД?

Да, если добавить её в текст запроса набора данных без необходимости. СКД сама формирует представления ссылочных полей при выводе отчёта, поэтому явный вызов функции обычно избыточен и только увеличивает нагрузку на СУБД.

Как вывести представление значения перечисления в отчёт?

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

Итог

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

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