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

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

Что такое представление в 1С и как с ним работать

Разбираем, что такое представление в 1С: представления объектов, ссылок и типов, стандартные и настраиваемые представления, типичные ошибки и проверка результата.

Представление в 1С — это текстовая форма, в которой объект, ссылка или значение показывается пользователю в интерфейсе: в списках, полях ввода, отчётах, печатных формах и сообщениях. Когда вы видите в журнале строку «Реализация товаров 0001 от 12.03», это и есть представление документа, а не его «настоящее» содержимое. Сам объект хранится в базе как набор данных и уникальный идентификатор, а представление — только удобная подпись для человека.

Понимание этого различия важно на практике: по представлению нельзя надёжно искать объект в коде, сравнивать ссылки или строить обмен данными. Два разных элемента справочника могут иметь одинаковое представление, а один и тот же объект — разные представления в разных интерфейсах и локализациях. Поэтому разработчики и администраторы различают «сущность» (ссылка, идентификатор) и её «отображение» (представление).

В платформе 1С:Предприятие 8 представления встречаются на нескольких уровнях: представление объекта метаданных (синоним), представление ссылки на объект базы данных, представление типа, представление значения перечисления и представление поля в форме. Каждый уровень настраивается по-своему, и путаница между ними — частый источник ошибок у начинающих.

Что именно называют представлением в 1С

В широком смысле представление — это любая строка, которую платформа строит, чтобы показать значение человеку. У документа это обычно вид, номер и дата; у элемента справочника — наименование или код; у перечисления — заданный в конфигураторе синоним значения. Платформа формирует представление автоматически в момент отображения, оно не хранится в базе как отдельное поле.

В узком смысле разработчики говорят о «представлении ссылки» — результате функции, которая превращает ссылку на объект базы данных в читаемую строку. Именно эта строка выводится в полях ввода, когда реквизит имеет ссылочный тип, и в списках при отображении связанных объектов.

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

Какие виды представлений есть в платформе

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

Второй вид — представление ссылки на объект данных. Для справочников оно строится из основного представления, выбранного в конфигураторе: «в виде наименования» или «в виде кода». Для документов платформа всегда добавляет номер и дату. Эта настройка находится в свойствах объекта метаданных и влияет на все места, где ссылка выводится как текст.

Третий вид — представления значений перечислений и предопределённых элементов. Они задаются синонимами в конфигураторе и используются в выпадающих списках, отчётах и печатных формах. Четвёртый вид — представление поля в форме: заголовок реквизита, который можно переопределить локально, не меняя синоним в метаданных.

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

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

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

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

Представление в коде: функции и типичные приёмы

Во встроенном языке представление ссылки получают неявно — при преобразовании ссылки в строку, например при выводе в сообщение или в текстовый реквизит. Для значений перечислений и типов есть явные способы: получение представления через метаданные, когда нужно вывести синоним значения программно. В запросах представление можно получить через виртуальный механизм «Представление()», но это тоже ресурсоёмкая операция.

Типичный приём — вывод представления в печатных формах и отчётах СКД. В СКД представления полей-связей подтягиваются автоматически, но если отчёт большой, лучше явно соединяться с таблицей справочника и брать наименование, чем полагаться на автоматическое получение представления для каждой ссылки.

Обратная задача — получить ссылку из представления — штатно не решается. Строка «Контрагент ООО Ромашка» не является ключом: элементов с таким наименованием может быть несколько, а наименование могло измениться. Для поиска используют код, уникальный идентификатор или специальные служебные поля, но не представление.

Типичные ошибки
01
Сравнение объектов по представлению в коде: два разных элемента с одинаковым наименованием считаются равными, а один объект после переименования — разными
02
Поиск ссылки по строке представления при обмене или загрузке: находится чужой объект или ничего не находится
03
Запросы к базе внутри обработчика получения представления: списки и формы начинают открываться секундами
04
Изменение синонима объекта без проверки: внешние отчёты, расширения и настройки пользователей, опиравшиеся на старый синоним, перестают совпадать по названию

Настройка представлений под задачи пользователей

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

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

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

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

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

Нужно, чтобы справочник везде показывался по коду вместо наименованияИзмените свойство «Основное представление» в конфигураторе или расширении
Нужно другое название поля только в одной формеПереопределите заголовок элемента формы, не трогая синоним реквизита
Нужно добавить в представление данные объекта (контрагент, сумма)Используйте обработчик ОбработкаПолученияПредставления в модуле менеджера без запросов к базе
Нужно найти объект по строке из внешней системыИщите по коду, GUID или служебному полю, представление для поиска не используйте

Проверка результата и ограничения

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

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

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

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

Отображение справочника в списке и в полях ввода
Норма

Везде показывается выбранное поле (наименование или код)

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

В разных местах разное отображение — где-то задан локальный заголовок или обработчик

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

Список открывается так же быстро, как до изменения

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

Заметная задержка — в обработчике представления есть обращение к базе

Обмен и интеграции после смены синонимов
Норма

Объекты сопоставляются по идентификаторам, ошибок нет

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

Объекты дублируются или не находятся — где-то использовался поиск по представлению

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

Можно ли искать элемент справочника по его представлению?

Технически можно искать по наименованию, если представление построено из него, но это ненадёжно: наименования совпадают, меняются и содержат лишние пробелы. Для поиска используйте код, уникальный идентификатор (GUID) или специально добавленный служебный реквизит с контролем уникальности.

Почему в списке документов представление отличается от того, что в отчёте?

Скорее всего, в одном из мест представление переопределено: обработчиком в модуле менеджера, вычисляемым полем динамического списка или настройкой СКД. Проверьте модуль менеджера документа и запрос динамического списка — стандартное представление платформа формирует одинаково.

Изменится ли представление у уже записанных объектов после смены настройки?

Да, потому что представление не хранится в базе, а формируется при отображении. После смены основного представления справочника все существующие элементы сразу начнут показываться по-новому, перезаписывать их не требуется.

Как добавить в представление документа контрагента?

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

Чем представление отличается от синонима?

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

Опасно ли менять синонимы в типовой конфигурации?

Функционально безопасно, но усложняет обновление: при объединении конфигураций изменённые синонимы придётся контролировать вручную. Кроме того, внешние отчёты и расширения, ориентирующиеся на старые названия, могут перестать совпадать. Предпочтительный способ — расширение конфигурации.

Итог

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

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