Почему гиперссылка в 1С отображает только код справочника и как настроить произвольное представление объекта

Программист 1С v8.3 (Управляемые формы) IT и автоматизация бизнеса
← На главную

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

Анализ стандартного поведения платформы

Рассмотрим стандартную механику формирования строкового представления. Для любого ссылочного типа в 1С существует понятие «Основное представление». Оно задается в окне редактирования метаданных объекта на вкладке «Основные».

Проанализируем разницу между объектами:

  1. Документы: Платформа автоматически формирует представление документа по шаблону: СинонимДокумента + " № " + Номер + " от " + Дата. Это поведение зашито на уровне ядра, поэтому в гиперссылках мы всегда видим полную информацию.
  2. Справочники: Здесь логика иная. Основным представлением может выступать либо Наименование, либо Код. Платформа выводит только одно из этих полей. Если у справочника установлено представление «В виде кода», то в любой гиперссылке на форме мы увидим только цифры, без упоминания, что это за объект (например, просто «00001» вместо «Номенклатура 00001»).

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

Решение задачи через модуль менеджера

Чтобы заставить платформу выводить произвольный текст в гиперссылке, нам необходимо переопределить стандартную генерацию представления. Для этого в 1С существуют два ключевых обработчика, располагающихся в модуле менеджера объекта.

Использование обработчика ОбработкаПолученияПолейПредставления

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

Рассмотрим пример кода, который нужно разместить в модуле менеджера справочника:


Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    Поля.Добавить("Код");
    Поля.Добавить("Наименование");
    
КонецПроцедуры

Здесь мы сообщаем системе, что для формирования текста нам понадобятся и код, и наименование.

Использование обработчика ОбработкаПолученияПредставления

Это основной инструмент, где происходит «сборка» итоговой строки. Именно здесь мы можем реализовать логику, схожую с представлением документов.

Проанализируем следующий пример реализации:


Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    
    СтандартнаяОбработка = Ложь;
    ТекстТипа = "Товар: "; // Или можно получить метаданные: Метаданные().Синоним
    
    Если ЗначениеЗаполнено(Данные.Наименование) Тогда
        Представление = ТекстТипа + Данные.Наименование + " (код " + Данные.Код + ")";
    Иначе
        Представление = ТекстТипа + " [Новый объект]";
    КонецЕсли;
    
КонецПроцедуры

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

Альтернативный подход: Форматированная строка на форме

Если нам нужно изменить вид ссылки только на одной конкретной форме, не затрагивая поведение справочника в других местах, мы можем использовать объект ФорматированнаяСтрока. Рассмотрим ситуацию, когда на форме есть декорация-надпись, выполняющая роль гиперссылки.

Разберем программный способ формирования такой ссылки:


&НаСервере
Процедура ОбновитьГиперссылкуНаФорме()
    
    ТекстТипа = "Источник: ";
    ОбъектСсылка = Объект.Источник; // Наш реквизит составного типа
    
    МассивЧастей = Новый Массив;
    МассивЧастей.Добавить(ТекстТипа);
    
    // Создаем гиперссылку внутри строки
    МассивЧастей.Добавить(Новый ФорматированнаяСтрока(Строка(ОбъектСсылка), , , , ОбъектСсылка));
    
    Элементы.ДекорацияГиперссылка.Заголовок = Новый ФорматированнаяСтрока(МассивЧастей);
    
КонецПроцедуры

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

Почему изменения могут не отображаться сразу?

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

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

← На главную