При разработке отчетов в системе компоновки данных (СКД) нередко возникает задача кастомизировать отображение документов или справочников. Например, стандартное представление документа выглядит как «Реализация товаров и услуг 00022076 от 06.01.2025 12:45:11», а требования заказчика предполагают замену штатного номера на специальный реквизит (например, НомерБухучета). При этом критически важно сохранить поведение ссылочного поля: возможность кликнуть на значение, открыть исходный документ или воспользоваться стандартным механизмом расшифровки.
Проанализируем доступные способы решения этой задачи в платформе 1С:Предприятие.
Разберем основной и самый быстрый механизм платформы, предназначенный именно для таких ситуаций. В схеме компоновки данных на вкладке Наборы данных в таблице полей есть колонка Выражение представления.
Когда мы заполняем эту колонку, СКД подменяет выводимый текст ячейки, но само поле остается ссылкой, благодаря чему расшифровка и открытие формы объекта продолжают работать штатно.
Пошагово рассмотрим настройку:
Ссылка), реквизит НомерБухучета и дата документа.
ВЫБОР
КОГДА Ссылка.НомерБухучета ЕСТЬ NULL ИЛИ Ссылка.НомерБухучета = ""
ТОГДА Представление(Ссылка)
ИНАЧЕ "Реализация товаров и услуг " + Ссылка.НомерБухучета + " от " + Формат(Ссылка.Дата, "ДФ=""dd.MM.yyyy HH:mm:ss""")
КОНЕЦ
Если для формирования представления требуется сложный алгоритм (например, обрезка лидирующих нулей, добавление префиксов или вызов логики других подсистем), платформа позволяет вызывать экспортные функции серверных общих модулей прямо в этом выражении:
МойОбщийМодульСервер.ПолучитьКастомноеПредставление(Ссылка, НомерБухучета)
Обратите внимание: для работы функций общих модулей в СКД модуль должен быть скомпилирован на сервере, а в коде инициализации компоновщика при программном формировании отчета должен быть установлен признак инициализации с учетом функций общих модулей.
Выясним частую причину некорректной работы отчетов при замене представления. Заполнение колонки Выражение представления меняет только видимый текст. При этом стандартная сортировка платформы продолжит упорядочивать строки по значению ссылки (по ее внутреннему идентификатору или системному представлению).
Чтобы пользователи могли сортировать отчет в алфавитном порядке нового сформированного текста, настроим колонку Выражение упорядочивания для этого же поля, прописав в ней аналогичное выражение или поле, по которому должна идти сортировка.
Рассмотрим вариант, когда отчет уже находится в рабочей базе или редактируется в режиме «1С:Предприятие» пользователем без открытия конфигуратора.
НомерБухучета.Проанализируем ситуацию, когда внешний вид отчета задается через индивидуальные макеты оформления СКД. В этом случае подмену отображения можно реализовать на вкладке Макеты:
[КастомныйТекст]).Ссылка).В результате платформа отобразит в ячейке произвольный сформированный текст, но при двойном клике левой кнопкой мыши откроется стандартный документ 1С.
Если требуется, чтобы документ отображался с номером бухучета не только в одном отчете СКД, но и во всей конфигурации (в динамических списках, формах выбора, других отчетах), логику следует перенести на уровень модуля менеджера документа.
Посмотрим, как это реализуется через платформенные обработчики в модуле менеджера объекта:
Процедура ОбработкаПолученияПолейПредставления(Поля, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
Поля.Добавить("Номер");
Поля.Добавить("НомерБухучета");
Поля.Добавить("Дата");
КонецПроцедуры
Процедура ОбработкаПолученияПредставления(Данные, Представление, СтандартнаяОбработка)
СтандартнаяОбработка = Ложь;
НомерДляОтображения = Данные.Номер;
Если ЗначениеЗаполнено(Данные.НомерБухучета) Тогда
НомерДляОтображения = Данные.НомерБухучета;
КонецЕсли;
Представление = СтрШаблон("Реализация товаров и услуг %1 от %2",
НомерДляОтображения,
Формат(Данные.Дата, "ДЛФ=DT"));
КонецПроцедуры
Важно: используйте данный способ только тогда, когда изменение представления действительно требуется для всех пользователей во всех интерфейсах системы. Если задача локальная и относится к конкретной печатной форме или отчету, правильнее использовать настройку Выражение представления непосредственно в схеме компоновки данных.