При разработке отчетов в системе компоновки данных (СКД) часто возникает задача компактного отображения данных. Например, требуется вывести количество и сумму в одной ячейке друг под другом (в две строки), чтобы сократить горизонтальный размер отчета. Рассмотрим подробно различные способы решения этой задачи, их преимущества и технические нюансы реализации.
Разберем самый быстрый способ объединения двух значений в одной ячейке без использования макетов. В СКД нет предопределенной константы Символы.ПС, как во встроенном языке 1С, однако платформой поддерживается вставка реального символа переноса строки непосредственно внутрь строкового литерала.
Выполним следующие шаги:
Формат() для каждого числового ресурса, чтобы сохранить требуемую точность и представление чисел.Посмотрим на пример выражения для вычисляемого поля или ресурса:
Формат(КоличествоОстаток, "ЧДЦ=2") + "
" + Формат(СуммаОстаток, "ЧДЦ=2; ЧГ=3,0")
Важный нюанс: если мы объединяем поля на вкладке «Вычисляемые поля», результат становится типом Строка, что делает невозможным стандартный расчет числовых итогов платформой. Чтобы итоги рассчитывались корректно, оставим числовые поля как есть, а выражение со склейкой пропишем на вкладке «Ресурсы» для нужных группировок:
Формат(Сумма(КоличествоОстаток), "ЧДЦ=2") + "
" + Формат(Сумма(СуммаОстаток), "ЧДЦ=2")
Также можно воспользоваться встроенной функцией СтрШаблон():
СтрШаблон("%1
%2", Формат(Сумма(КоличествоОстаток), "ЧДЦ=2"), Формат(Сумма(СуммаОстаток), "ЧДЦ=2"))
Если требуется сохранить числовые типы данных в ячейках без конкатенации строк в выражениях, рассмотрим вариант со стандартной группировкой выбранных полей.
Остаток).Количество и Сумма.Когда требуется индивидуальное визуальное оформление, необязательно рисовать макет всей группировки или всего отчета. Достаточно создать макет для конкретного поля.
[Количество][Сумма]Количество и Сумма с соответствующими полями и ресурсами СКД, задав для них необходимый формат.При таком подходе вся структура отчета, сетка и заголовки продолжают формироваться автоматически механизмом компоновки, а кастомное оформление применяется только к целевой ячейке.
Если логика вывода сложная (требуются проверки на нулевые остатки, подстановка единиц измерения или динамическое форматирование), вызовем экспортную функцию неглобального серверного общего модуля.
Проанализируем пример. Создадим в общем модуле функцию:
Функция СформироватьПредставлениеРесурса(Знач Количество, Знач Сумма) Экспорт
ТекстКоличество = Формат(Количество, "ЧДЦ=2");
ТекстСумма = Формат(Сумма, "ЧДЦ=2; ЧГ=3,0");
Возврат ТекстКоличество + Символы.ПС + ТекстСумма;
КонецФункции
В схеме компоновки данных на вкладке «Ресурсы» в выражении поля укажем:
МойОбщийМодуль.СформироватьПредставлениеРесурса(Сумма(КоличествоОстаток), Сумма(СуммаОстаток))
Это позволяет использовать полный синтаксис языка 1С, включая Символы.ПС, без необходимости ввода непечатных символов в конфигураторе.
Выясним частую причину, по которой вторая строка может не отображаться в отчете: ячейка обрезает текст по высоте. Чтобы многострочный текст выводился полностью, проверим параметры оформления: