Разработка и Конфигурация · 10 мин
Представление как строка в запросах 1С: функция ПРЕДСТАВЛЕНИЕ
Как работает функция ПРЕДСТАВЛЕНИЕ в языке запросов 1С: синтаксис, примеры, типичные ошибки, влияние на производительность и альтернативы для отчетов.
Функция ПРЕДСТАВЛЕНИЕ в языке запросов 1С преобразует ссылку на объект базы данных в её строковое представление — то, что пользователь видит в интерфейсе: наименование справочника, номер и дату документа и т.п. Это удобный способ получить «читаемое» значение прямо в запросе, не обращаясь к дополнительным полям и не выполняя соединений таблиц.
Типичная ситуация: в регистре хранится ссылка на контрагента, а в отчете нужно вывести его наименование. Вместо левого соединения со справочником «Контрагенты» достаточно написать ПРЕДСТАВЛЕНИЕ(Регистр.Контрагент) — и запрос вернет строку. Однако у этого подхода есть ограничения по производительности и особенности при группировке, о которых нужно знать.
Что делает функция ПРЕДСТАВЛЕНИЕ в запросе
Функция принимает один параметр — выражение ссылочного типа (ссылка на справочник, документ, план счетов, перечисление и т.д.) — и возвращает строку. Результат формируется по правилам, заданным в конфигурации: для справочника это обычно наименование, для документа — строка вида «Реализация товаров 0000-000123 от 12.03.2026», для перечисления — синоним значения.
Важно понимать: представление формируется на стороне сервера СУБД или платформы по данным основной таблицы объекта. Если в конфигурации настроен автопорядок, код, валюта учета и другие поля — они не попадут в представление, если разработчик не переопределил его через обработчик «ОбработкаПолученияПредставления» в модуле менеджера объекта.
Простейший пример использования:
ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ(Продажи.Контрагент) КАК Контрагент,
Продажи.СуммаОборот КАК Сумма
ИЗ
РегистрНакопления.Продажи.Обороты КАК Продажи
Синтаксис и базовые примеры использования
Синтаксис единообразен для всех ссылочных типов: ПРЕДСТАВЛЕНИЕ(Поле). Функцию можно применять в секциях ВЫБРАТЬ, ГДЕ (с оговорками), ИМЕЮЩИЕ и в итогах. Для полей составного типа функция вернет представление фактически хранящегося значения.
Представление документа с номером и датой
ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ(РеализацияТоваров.Ссылка) КАК Документ
ИЗ
Документ.РеализацияТоваровУслуг КАК РеализацияТоваров
ГДЕ
РеализацияТоваров.Дата МЕЖДУ &НачалоПериода И &КонецПериода
Представление перечисления
Для перечислений функция возвращает синоним значения, заданный в конфигураторе. Это удобно, когда значение нужно вывести в отчет без программной обработки:
ВЫБРАТЬ
ПРЕДСТАВЛЕНИЕ(Значение(Перечисление.ВидыОпераций.Реализация)) КАК ВидОперации
Если нужно представление текущего значения параметра, передайте параметр в запрос и оберните его функцией: ПРЕДСТАВЛЕНИЕ(&СсылкаНаОбъект). Это работает, если параметр имеет ссылочный тип.
ВЫБРАТЬ ПРЕДСТАВЛЕНИЕ(Заказы.Контрагент) КАК Клиент, СУММА(Заказы.Сумма) КАК Сумма ИЗ Документ.ЗаказКлиента КАК Заказы СГРУППИРОВАТЬ ПО Заказы.КонтрагентКогда ПРЕДСТАВЛЕНИЕ оправдано, а когда лучше соединение
Функция удобна, но не универсальна. Если из справочника нужны несколько полей (наименование, ИНН, телефон), одно левое соединение выгоднее нескольких вызовов ПРЕДСТАВЛЕНИЕ и обращений к полям через точку. Представление дает только одну строку — расширить её нельзя.
Второй сценарий, где ПРЕДСТАВЛЕНИЕ проигрывает, — отборы и соединения. Условие ГДЕ ПРЕДСТАВЛЕНИЕ(Контрагент) ПОДОБНО "%ООО%" не использует индексы и приводит к полному перебору таблицы. Для фильтрации всегда работайте со ссылкой или примитивными полями.
ПРЕДСТАВЛЕНИЕ или соединение
Подходит для быстрого вывода одной строки, отладки, произвольных отчетов. Ограничение: нельзя получить другие поля объекта, медленнее на больших выборках.
Подходит, когда нужны несколько полей объекта или дальнейшая фильтрация. Требует знания структуры таблицы, но работает быстрее и гибче.
Платформа сама выполняет неявное соединение. Удобно для одного-двух полей, но при множестве обращений порождает много соединений.
Влияние на производительность и ограничения
Каждый вызов ПРЕДСТАВЛЕНИЕ фактически заставляет СУБД обратиться к основной таблице объекта. На выборке в сотни тысяч строк это заметно увеличивает время выполнения запроса. Особенно тяжелый случай — составные типы, когда платформа не знает заранее, к какой таблице обращаться.
Ограничения, которые нужно учитывать:
- нельзя использовать ПРЕДСТАВЛЕНИЕ в соединениях таблиц — условие по строке не использует индексы;
- группировка по представлению может объединить разные объекты с одинаковым наименованием (два контрагента «Иванов И.И.» сольются в одну строку);
- для примитивных типов (число, строка, дата) функция вернет само значение, приведенное к строке, но смысла в таком вызове обычно нет;
- представление зависит от настроек конфигурации и может меняться между версиями — не стройте на нем бизнес-логику.
Типичные ошибки при работе с представлением
Первая распространенная ошибка — попытка сравнить представление с эталонной строкой в условии ГДЕ. Помимо медленной работы, такой код ломается, если администратор переименует элемент справочника или изменится формат представления документа.
Вторая ошибка — ожидание, что ПРЕДСТАВЛЕНИЕ вернет наименование для документа. Для документов функция возвращает строку «ВидДокумента Номер от Дата», а не какое-либо пользовательское поле. Если нужен именно номер — берите поле Номер напрямую.
Третья ошибка — использование представления в пакетных запросах и временных таблицах с последующим соединением по нему. Строка представления не уникальна, соединение даст дубли и неверные итоги.
Проверка результата и отладка
Быстрее всего проверить, что вернет ПРЕДСТАВЛЕНИЕ, — в консоли запросов. Выполните запрос на небольшом отборе (добавьте условие по периоду или РАЗНОСТЬ по нескольким ссылкам) и сравните строку с тем, что видно в форме списка объекта. Значения должны совпадать.
Если представление отличается от ожидаемого, проверьте модуль менеджера объекта: наличие процедуры «ОбработкаПолученияПредставления» означает, что строка формируется программно и может зависеть от прав пользователя, функциональных опций или языка.
Как проверить результат
Совпадает с представлением объекта в форме списка
Пустая строка при заполненной ссылке — проверьте права доступа и битые ссылки
Сопоставимо с вариантом без ПРЕДСТАВЛЕНИЕ на тестовой выборке
Запрос замедляется в разы — уберите функцию из условий и группировок
Количество строк итогов равно количеству уникальных объектов
Строк меньше, чем объектов — группировка идет по представлению, а не по ссылке
Альтернативы: СКД, выражение ВЫБОР и программное формирование
В системе компоновки данных представление ссылки часто вообще не нужно получать в запросе: СКД сама выводит ссылочные поля в виде представления. Достаточно вывести поле-ссылку, и в отчете пользователь увидит читаемую строку, а при двойном клике сможет открыть объект.
Если нужна нестандартная строка (например, «Код — Наименование»), соберите её в запросе оператором конкатенации: Справочник.Код + " — " + Справочник.Наименование, предварительно приведя код к строке функцией ПОДСТРОКА или через ВЫРАЗИТЬ. Для сложной логики используйте конструкцию ВЫБОР КОГДА...ТОГДА...КОНЕЦ.
Наконец, представление всегда можно получить программно после выполнения запроса: метод Строка(Ссылка) или обращение к свойствам объекта. Это оправдано, когда обработка построчная и объем данных невелик.
Как выбрать подход
Часто задаваемые вопросы
Можно ли использовать ПРЕДСТАВЛЕНИЕ в условии ГДЕ?
Технически да, но делать этого не стоит: условие по строковому представлению не использует индексы и вызывает полный перебор таблицы. Фильтруйте по ссылке или примитивным полям, а представление применяйте только для вывода.
Почему для документа функция возвращает не наименование?
У документов нет поля «Наименование». Представление документа формируется из синонима вида документа, номера и даты. Если нужен номер или дата отдельно — обращайтесь к соответствующим полям напрямую.
Что вернет ПРЕДСТАВЛЕНИЕ для битой ссылки?
Для ссылки на удаленный объект функция обычно возвращает строку вида «<Объект не найден>» с идентификатором либо пустую строку — поведение зависит от версии платформы. Наличие таких строк в отчете — признак нарушения ссылочной целостности, который стоит устранить.
Работает ли функция с перечислениями?
Да. Для перечислений ПРЕДСТАВЛЕНИЕ возвращает синоним значения, заданный в конфигураторе. Это удобно для вывода в отчеты без дополнительной обработки, но для сравнений используйте само значение перечисления.
Чем ПРЕДСТАВЛЕНИЕ отличается от обращения Ссылка.Наименование?
Обращение через точку возвращает конкретное поле и работает только если оно есть у объекта. ПРЕДСТАВЛЕНИЕ универсально: оно вернет строку для любого ссылочного типа, включая документы и перечисления, учитывая переопределенное представление в модуле менеджера.
Можно ли сортировать результат по представлению?
Можно — добавьте выражение в секцию УПОРЯДОЧИТЬ ПО. Но учтите: сортировка будет строковой, а не по ссылке, и на больших выборках вычисление представлений для всех строк замедлит запрос. Часто разумнее упорядочить по ссылке или дате.
Что важно запомнить
ПРЕДСТАВЛЕНИЕ превращает ссылку в читаемую строку и идеально подходит для вывода и отладки. Для фильтров, соединений и группировок используйте ссылку и поля объекта — иначе запрос потеряет скорость и корректность итогов. В отчетах на СКД представление чаще всего вообще не нужно получать вручную.