Разработка и Конфигурация · 11 мин
Как сделать представление ссылки в 1С
Как настроить представление ссылки в 1С: функция ПолучитьПредставление, обработчик ОбработкаПолученияПредставления, переопределение в общем модуле, примеры кода и ошибки.
Представление ссылки — это текст, который пользователь видит вместо технического идентификатора объекта: в полях ввода, списках, отчётах, сообщениях и на печатных формах. По умолчанию 1С формирует представление автоматически из основных реквизитов объекта (наименования, номера и даты документа, кода), но во многих задачах стандартного варианта недостаточно: требуется вывести артикул вместе с наименованием, показать контрагента с ИНН или добавить статус документа.
Управлять представлением ссылки можно на нескольких уровнях: через настройки объекта метаданных, через программное получение представления функциями встроенного языка и через специальный обработчик ОбработкаПолученияПредставления, который переопределяет стандартное поведение для всей конфигурации. Выбор способа зависит от того, где именно нужно изменить отображение — в одном месте или глобально.
Что такое представление ссылки и как оно формируется по умолчанию
Ссылка в 1С — это уникальный внутренний идентификатор объекта базы данных. Платформа автоматически строит для неё человекочитаемое представление на основе настроек объекта метаданных. Для справочников обычно используется наименование или код — в зависимости от того, какое поле назначено основным представлением. Для документов стандартное представление складывается из вида документа, номера и даты, например: «Реализация товаров 0000000123 от 15.03.2026».
Основное представление задаётся в конфигураторе в свойствах объекта. У справочника это свойство «Основное представление» с вариантами «В виде наименования» или «В виде кода». У документов аналогичный выбор между номером и датой практически не применяется — почти всегда используется комбинация вида, номера и даты. Изменение этого свойства влияет на отображение во всех стандартных механизмах без написания кода.
Получение представления в коде: Строка() и ПолучитьПредставление
Самый простой способ получить представление ссылки — преобразовать её в строку функцией Строка() или оператором конкатенации. Платформа вернёт стандартное представление объекта. Этот приём удобен в сообщениях пользователю, записях журнала регистрации и простых отчётах.
ТекстСообщения = "Не заполнен склад в документе " + Строка(ДокументСсылка);
Сообщить(ТекстСообщения);
Для вывода в отчётах на СКД и в запросах представление формируется автоматически: если выбрать поле-ссылку, платформа при выводе результата подставит представление объекта. Явно получать представление в запросе через функцию ПРЕДСТАВЛЕНИЕ(Ссылка) следует только когда оно нужно как отдельное строковое поле — например, для группировки или выгрузки текста. Злоупотреблять этой функцией не стоит: она замедляет выполнение запроса, так как требует обращения к данным объекта.
Настройка основного представления в конфигураторе
Если нужно изменить представление для всего объекта без программирования, откройте конфигуратор, найдите объект метаданных (справочник, документ, задачу) и в палитре свойств установите «Основное представление». Для справочника выберите «В виде кода», если пользователи ориентируются по артикулам или кодам, либо «В виде наименования» в остальных случаях.
Дополнительно проверьте длину наименования и кода: платформа обрезает представление по длине соответствующего реквизита. Если наименование задано длиной 25 символов, а пользователи вводят полные названия, представление в списках будет усечённым. Увеличение длины строкового реквизита — безопасная операция, уменьшение может привести к потере данных при обновлении конфигурации.
- 1Откройте конфигуратор и найдите нужный справочник или документ в дереве метаданных
- 2В палитре свойств установите «Основное представление»: код или наименование
- 3Проверьте длину реквизита, из которого строится представление
- 4Обновите конфигурацию базы данных (F7) и проверьте отображение в списке и в поле ввода
Переопределение представления через ОбработкаПолученияПредставления
Когда стандартных вариантов недостаточно, используется обработчик события ОбработкаПолученияПредставления в модуле менеджера объекта. Он вызывается платформой каждый раз, когда требуется представление ссылки этого типа, и позволяет сформировать собственный текст. Чтобы обработчик сработал, в нём нужно установить параметр СтандартнаяОбработка = Ложь и заполнить параметр Представление.
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Представление = Строка(Данные.Наименование) + " (" + Строка(Данные.Код) + ")";
КонецПроцедуры
В параметре Данные передаётся структура с полями объекта, которые платформа считала для построения представления. Состав этих полей можно расширить через обработчик ОбработкаПолученияПолейПредставления: в нём в массив Поля добавляют нужные реквизиты, и тогда они станут доступны в Данные без дополнительного запроса к базе. Это важно для производительности: обращение к ссылке через точку внутри обработчика вызовет отдельный запрос на каждый объект списка.
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Наименование");
Поля.Добавить("Артикул");
КонецПроцедуры
Переопределение в типовых конфигурациях
В типовых решениях (Бухгалтерия, Управление торговлей, ERP) прямое изменение модулей менеджера затрудняет последующее обновление. Для таких случаев в библиотеке стандартных подсистем предусмотрены переопределяемые процедуры, а собственные доработки правильнее размещать в расширении конфигурации. Расширение позволяет добавить обработчики в модуль менеджера объекта, не снимая конфигурацию с поддержки.
Порядок действий: создайте расширение, добавьте в него нужный объект метаданных, откройте его модуль менеджера и реализуйте ОбработкаПолученияПредставления с аннотацией &После или &Вместо в зависимости от требуемой логики. Вариант &Вместо полностью замещает типовую обработку, поэтому используйте его осознанно: типовое представление перестанет формироваться, и ответственность за корректность строки целиком переходит к вашему коду.
Способы изменения представления
Подходит для простого переключения между кодом и наименованием. Не требует кода, но не позволяет комбинировать поля.
Полный контроль над текстом представления во всех интерфейсах. Требует аккуратности с производительностью и усложняет обновление типовых.
Тот же механизм обработчиков, но без изменения типовой конфигурации. Оптимально для доработки типовых решений.
Локальное получение текста в конкретном месте кода или отчёта. Не меняет представление в интерфейсе.
Проверка результата и типичные ошибки
После внедрения изменений проверьте представление во всех ключевых местах: в списке объектов, в поле ввода при выборе, в отчётах, в сообщениях об ошибках и на печатных формах. Особое внимание уделите динамическим спискам — именно там чаще всего проявляются проблемы с производительностью, если обработчик обращается к базе лишний раз.
Как проверить результат
Представление формируется по новому правилу, список открывается без видимой задержки
Список «подтормаживает», часть строк с пустым или старым текстом
При выборе и в выпадающем списке виден новый формат
В списке новый формат, а в поле ввода старый — значит, изменено только локальное отображение
Текст представления соответствует ожиданиям во всех выводах
В отчёте старое представление — там используется собственный запрос с ПРЕДСТАВЛЕНИЕ()
Ограничения и безопасные границы доработки
Обработчик представления вызывается очень часто — при каждом открытии списка, обновлении формы, построении отчёта. Поэтому внутри него запрещено выполнять тяжёлые вычисления, обращаться к другим объектам через запросы и вызывать серверные функции с обращением к данным. Вся необходимая информация должна поступать через механизм полей представления.
Также учитывайте, что представление не должно содержать данных с ограниченным доступом: если в него включить, например, сумму сделки или персональные данные, они станут видны пользователям, которым сам объект недоступен, — представление может кэшироваться и отображаться в выпадающих списках. Перед выводом чувствительных реквизитов проверяйте права или откажитесь от их включения.
Что важно запомнить
Стандартное представление настраивается свойством «Основное представление» без кода. Для произвольного формата используйте пару обработчиков ОбработкаПолученияПолейПредставления и ОбработкаПолученияПредставления в модуле менеджера, а в типовых конфигурациях — расширение. Не обращайтесь к базе внутри обработчика и проверяйте результат в списке, поле ввода и отчётах.
Частые вопросы
Чем Строка(Ссылка) отличается от получения представления в запросе?
Строка(Ссылка) выполняется в коде и возвращает представление уже полученной ссылки. Функция ПРЕДСТАВЛЕНИЕ() в запросе формирует текст на стороне СУБД для каждой строки результата. Для вывода в отчёт обычно достаточно просто выбрать поле-ссылку — платформа сама покажет представление.
Почему обработчик ОбработкаПолученияПредставления не срабатывает?
Чаще всего не установлен флаг СтандартнаяОбработка = Ложь или обработчик размещён не в модуле менеджера объекта. Также проверьте, что обновление конфигурации выполнено и кэш метаданных клиента сброшен перезапуском сеанса.
Как вывести в представлении реквизит, которого нет в стандартном наборе полей?
Добавьте его в обработчике ОбработкаПолученияПолейПредставления в массив Поля — тогда реквизит будет прочитан платформой вместе с остальными полями и доступен через параметр Данные без дополнительного запроса.
Можно ли сделать разное представление для разных пользователей?
Технически да — внутри обработчика можно проверить текущего пользователя или его роль и сформировать другой текст. Но учитывайте, что представление кэшируется, и такая логика может дать непредсказуемый результат. Надёжнее различать отображение на уровне форм и отчётов.
Изменится ли представление в уже созданных документах и записях?
Да. Представление не хранится в базе как отдельное значение — оно формируется динамически при каждом отображении. После изменения настроек или обработчика все существующие объекты сразу начнут показываться по-новому.
Что делать, если в представлении отображается «Объект не найден»?
Это признак битой ссылки — объекта с таким идентификатором нет в базе. Обработчик представления здесь не поможет: нужно найти источник битой ссылки (обычно это удаление объектов без контроля ссылочной целостности) и очистить или восстановить данные.