При разработке отчетов в системе компоновки данных (СКД) нередко возникает необходимость компактного представления информации. Типичный пример — объединение номера и даты документа в одну общую ячейку или колонку вида «№ 0000123 от 15.05.2024». Рассмотрим подробнее все возможные способы реализации этой задачи, разберем по шагам их настройку, а также выясним нюансы работы с сортировкой и форматированием.
Наиболее популярным и гибким способом объединения данных является создание вычисляемого поля на соответствующей вкладке схемы компоновки данных. Это позволяет сформировать составную строку с нужными префиксами и разделителями.
Разберем по шагам порядок настройки:
ДокументПредставление, и задаем заголовок.Посмотрим на пример базового выражения:
"№ " + Строка(Номер) + " от " + Формат(Дата, "ДФ=dd.MM.yyyy")
Обратите внимание: простое использование конструкции Строка(Дата) выводит дату вместе со временем (например, 01.01.2026 0:00:00). Чтобы получить аккуратное отображение даты, рекомендуется применять встроенную функцию Формат() с явным указанием формата даты ДФ=dd.MM.yyyy.
Если номер документа является числовым и при преобразовании в строку появляются разделители триад (пробелы), используйте форматирование для чисел:
"№ " + Формат(Номер, "ЧГ=0") + " от " + Формат(Дата, "ДФ=dd.MM.yyyy")
Для корректной работы с возможными пустыми значениями полезно предусмотреть проверку на NULL:
"№ " + ЕстьNull(Номер, "") + " от " + ВЫБОР КОГДА Дата ЕСТЬ NULL ТОГДА "" ИНАЧЕ Формат(Дата, "ДФ=dd.MM.yyyy") КОНЕЦ
Важный момент: при объединении полей в строку стандартная сортировка становится алфавитной. Чтобы сохранить хронологический порядок, на вкладке Вычисляемые поля обязательно заполните свойство Выражение упорядочивания, указав в нем исходное поле Дата.
Проанализируем второй подход, который позволяет сохранить исходный тип данных поля (например, саму ссылку на документ или дату), но изменить его видимый текст в отчете.
Ссылка документа или Номер).
"№ " + Номер + " от " + Формат(Дата, "ДФ=dd.MM.yyyy")
Преимущество этого метода заключается в том, что само поле в отчете сохраняет возможность стандартной фильтрации, отбора и расшифровки, в то время как пользователю выводится объединенный и отформатированный текст.
Если требуется вывести два поля в одной колонке без написания выражений конкатенации, можно воспользоваться возможностями настроек отчета:
Номер и Дата, нажимаем правой кнопкой мыши и выбираем Сгруппировать поля.В этом случае СКД автоматически разместит значения обоих полей в пределах одной колонки таблицы.
Когда требуется нестандартное визуальное оформление ячейки, разберем использование макетов полей:
№ [Номер] от [Дата].Дата указываем форматную строку ДФ=dd.MM.yyyy).В ситуациях, когда требуется объединить значения из нескольких строк детальных записей в одну строковую ячейку группировки, применяется функция языка выражений СКД СоединитьСтроки().
Синтаксис функции:
СоединитьСтроки(Значение, РазделительЭлементов, РазделителиКолонок)
Посмотрим на пример объединения данных таблицы значений в выражении ресурса:
СоединитьСтроки(ТаблицаЗначений(Номер, Формат(Дата, "ДФ=dd.MM.yyyy")), "; ", " - ")
Функция обходит строки и колонки переданной таблицы или массива, объединяя их с указанными разделителями элементов и колонок, что удобно для вывода списков связанных документов в строке отчета.