Как в СКД вывести два ресурса в одной ячейке таблицы

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

При разработке отчетов в системе компоновки данных (СКД) часто возникает задача компактного отображения данных. Например, требуется вывести количество и сумму в одной ячейке друг под другом (в две строки), чтобы сократить горизонтальный размер отчета. Рассмотрим подробно различные способы решения этой задачи, их преимущества и технические нюансы реализации.

Способ 1. Конкатенация ресурсов в выражении с символом переноса строки

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

Выполним следующие шаги:

  1. Перейдем на вкладку «Ресурсы» или «Вычисляемые поля» схемы компоновки данных.
  2. Для формирования итоговой строки используем функцию Формат() для каждого числового ресурса, чтобы сохранить требуемую точность и представление чисел.
  3. Чтобы добавить перенос строки между значениями, откроем кавычки, нажмем комбинацию клавиш Shift + Enter и закроем кавычки на следующей строке.

Посмотрим на пример выражения для вычисляемого поля или ресурса:


Формат(КоличествоОстаток, "ЧДЦ=2") + "
" + Формат(СуммаОстаток, "ЧДЦ=2; ЧГ=3,0")

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


Формат(Сумма(КоличествоОстаток), "ЧДЦ=2") + "
" + Формат(Сумма(СуммаОстаток), "ЧДЦ=2")

Также можно воспользоваться встроенной функцией СтрШаблон():


СтрШаблон("%1
%2", Формат(Сумма(КоличествоОстаток), "ЧДЦ=2"), Формат(Сумма(СуммаОстаток), "ЧДЦ=2"))

Способ 2. Использование вертикальной группы выбранных полей и условного оформления

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

  1. Перейдем на вкладку «Настройки» в раздел «Выбранные поля».
  2. Создадим новую группу полей (например, с именем Остаток).
  3. Внутрь созданной группы перенесем нужные поля: Количество и Сумма.
  4. Выделим группу, откроем ее свойства и установим параметр «Расположение» в значение «Вертикально».
  5. Чтобы скрыть внутреннюю горизонтальную линию между полями и создать эффект единой ячейки, перейдем на вкладку «Условное оформление».
  6. Добавим элемент оформления: в оформляемых полях укажем верхнее поле группы, а в параметре «Стиль границы» отключим нижнюю границу (либо у нижнего поля отключим верхнюю границу).
  7. Для изменения общего заголовка ячейки нажмем правой кнопкой мыши на группу полей в выбранных полях и выберем пункт «Установить заголовок».

Способ 3. Создание индивидуального «Макета поля»

Когда требуется индивидуальное визуальное оформление, необязательно рисовать макет всей группировки или всего отчета. Достаточно создать макет для конкретного поля.

  1. Перейдем на вкладку «Макеты» и нажмем «Добавить макет поля».
  2. Выберем поле, для которого настраивается отображение.
  3. В макетной таблице выделим одну ячейку, откроем ее свойства и установим тип заполнения «Шаблон».
  4. Внутри ячейки напишем текст с параметрами в две строки через перенос:
    [Количество]
    [Сумма]
  5. В нижней таблице параметров свяжем параметры Количество и Сумма с соответствующими полями и ресурсами СКД, задав для них необходимый формат.

При таком подходе вся структура отчета, сетка и заголовки продолжают формироваться автоматически механизмом компоновки, а кастомное оформление применяется только к целевой ячейке.

Способ 4. Вызов функции общего модуля в выражении СКД

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

Проанализируем пример. Создадим в общем модуле функцию:


Функция СформироватьПредставлениеРесурса(Знач Количество, Знач Сумма) Экспорт
    
    ТекстКоличество = Формат(Количество, "ЧДЦ=2");
    ТекстСумма = Формат(Сумма, "ЧДЦ=2; ЧГ=3,0");
    
    Возврат ТекстКоличество + Символы.ПС + ТекстСумма;
    
КонецФункции

В схеме компоновки данных на вкладке «Ресурсы» в выражении поля укажем:


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

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

Настройка автовысоты строк и переноса текста

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

  1. В настройках отчета или условном оформлении найдем свойство «Размещение» для выводимого поля и установим его в значение «Переносить».
  2. Убедимся, что у строк таблицы не установлена фиксированная высота, чтобы табличный документ мог автоматически расширять строки под две и более строк текста.
← На главную