Как в отчете СКД изменить представление ссылки на документ с сохранением кликабельности?

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

При разработке отчетов в системе компоновки данных (СКД) нередко возникает задача кастомизировать отображение документов или справочников. Например, стандартное представление документа выглядит как «Реализация товаров и услуг 00022076 от 06.01.2025 12:45:11», а требования заказчика предполагают замену штатного номера на специальный реквизит (например, НомерБухучета). При этом критически важно сохранить поведение ссылочного поля: возможность кликнуть на значение, открыть исходный документ или воспользоваться стандартным механизмом расшифровки.

Проанализируем доступные способы решения этой задачи в платформе 1С:Предприятие.

Способ 1. Использование колонки «Выражение представления» в наборе данных СКД

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

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

Пошагово рассмотрим настройку:

  1. Перейдем в схему компоновки данных на вкладку Наборы данных.
  2. Убедимся, что в тексте запроса выбираются сама ссылка на документ (Ссылка), реквизит НомерБухучета и дата документа.
  3. В таблице полей набора данных найдем строку с полем ссылки и перейдем к колонке Выражение представления.
  4. Укажем выражение на встроенном языке СКД. Для подстановки кастомного номера с проверкой на его заполненность сформируем выражение вида:

ВЫБОР 
    КОГДА Ссылка.НомерБухучета ЕСТЬ NULL ИЛИ Ссылка.НомерБухучета = "" 
        ТОГДА Представление(Ссылка)
    ИНАЧЕ "Реализация товаров и услуг " + Ссылка.НомерБухучета + " от " + Формат(Ссылка.Дата, "ДФ=""dd.MM.yyyy HH:mm:ss""")
КОНЕЦ

Если для формирования представления требуется сложный алгоритм (например, обрезка лидирующих нулей, добавление префиксов или вызов логики других подсистем), платформа позволяет вызывать экспортные функции серверных общих модулей прямо в этом выражении:

МойОбщийМодульСервер.ПолучитьКастомноеПредставление(Ссылка, НомерБухучета)

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

Важная деталь: сортировка и упорядочивание

Выясним частую причину некорректной работы отчетов при замене представления. Заполнение колонки Выражение представления меняет только видимый текст. При этом стандартная сортировка платформы продолжит упорядочивать строки по значению ссылки (по ее внутреннему идентификатору или системному представлению).

Чтобы пользователи могли сортировать отчет в алфавитном порядке нового сформированного текста, настроим колонку Выражение упорядочивания для этого же поля, прописав в ней аналогичное выражение или поле, по которому должна идти сортировка.

Способ 2. Пользовательские поля СКД

Рассмотрим вариант, когда отчет уже находится в рабочей базе или редактируется в режиме «1С:Предприятие» пользователем без открытия конфигуратора.

  1. Откроем настройки отчета и перейдем на вкладку Пользовательские поля.
  2. Создадим новое Пользовательское поле-выражение.
  3. В поле Выражение представления пропишем логику склейки нужной строки с участием реквизита НомерБухучета.
  4. В поле Выражение итогов укажем соответствующее поведение для группировок, если это требуется.
  5. Выведем созданное пользовательское поле в структуру отчета вместо стандартной ссылки.

Способ 3. Использование собственного макета поля с параметром расшифровки

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

  1. Перейдем на вкладку Макеты и добавим Макет поля для нашего документа.
  2. В ячейке макета укажем текстовый шаблон или параметр (например, [КастомныйТекст]).
  3. В свойствах этой ячейки найдем свойство Параметр расшифровки.
  4. Укажем в параметре расшифровки исходное ссылочное поле (например, Ссылка).

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

Способ 4. Переопределение представления на уровне метаданных

Если требуется, чтобы документ отображался с номером бухучета не только в одном отчете СКД, но и во всей конфигурации (в динамических списках, формах выбора, других отчетах), логику следует перенести на уровень модуля менеджера документа.

Посмотрим, как это реализуется через платформенные обработчики в модуле менеджера объекта:


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

Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
    СтандартнаяОбработка = Ложь;
    
    НомерДляОтображения = Данные.Номер;
    Если ЗначениеЗаполнено(Данные.НомерБухучета) Тогда
        НомерДляОтображения = Данные.НомерБухучета;
    КонецЕсли;
    
    Представление = СтрШаблон("Реализация товаров и услуг %1 от %2", 
        НомерДляОтображения, 
        Формат(Данные.Дата, "ДЛФ=DT"));
КонецПроцедуры

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

← На главную