Как в СКД вывести несколько полей в одну колонку (например, Номенклатуру и Сумму)?

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

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

Метод 1. Использование группировки выбранных полей

Этот способ является самым простым, так как он не требует написания кода или сложных формул. Он идеально подходит, если вам нужно просто визуально объединить данные в одной колонке, сохранив при этом их исходные типы.

Рассмотрим пошагово, как это реализовать в настройках отчета:

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

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

Метод 2. Использование вычисляемых полей

Если нам требуется специфический разделитель (например, косая черта "/" или перенос строки), воспользуемся механизмом вычисляемых полей. Здесь мы принудительно преобразуем число в строку и соединим ее с названием товара.

Разберем пример выражения для вычисляемого поля. Перейдем на вкладку Вычисляемые поля и добавим новое поле НоменклатураСумма. В колонке Выражение напишем следующий код:

Представление(Номенклатура) + " / " + Строка(СуммаОборот) + " руб."

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


Представление(Номенклатура) + " / " + Формат(ЕстьNull(СуммаОборот, 0), "ЧДЦ=2; ЧГ=3,0")

В данном примере функция Формат с параметром ЧДЦ=2 гарантирует наличие двух знаков после запятой, а ЧГ=3,0 добавит разделитель групп разрядов, что сделает отчет гораздо более профессиональным и читаемым.

Метод 3. Выражение представления (профессиональный подход)

Этот метод считается наиболее корректным, так как он позволяет изменить только визуальное отображение поля, не теряя при этом возможности правильно сортировать данные. Если мы преобразуем число в строку в вычисляемом поле, то сортировка по такому полю будет текстовой (например, "10" окажется раньше, чем "2").

Выясним, как настроить выражение представления:

  1. На вкладке Наборы данных выберем поле Номенклатура.
  2. Найдем колонку Выражение представления.
  3. Вставим туда формулу, которая объединяет текущее поле с другим ресурсом:

Строка(Номенклатура) + " [" + Строка(СуммаОборот) + "]"

При использовании этого метода в отчете будет отображаться текст, но для системы это поле останется объектом Номенклатура. Это позволит пользователю, например, кликнуть на ячейку и перейти в карточку товара, что невозможно при обычном сложении строк.

Метод 4. Использование макетов полей

Когда требуется максимально гибкое оформление (например, вывести номенклатуру жирным шрифтом, а сумму под ней другим цветом), следует использовать Макеты оформления.

Рассмотрим алгоритм создания такого макета:

  1. Перейдем на закладку Макеты и добавим Макет поля.
  2. Выберем поле Номенклатура.
  3. В области макета (в ячейке таблицы) напишем шаблон: [Номенклатура] / [СуммаОборот].
  4. Для этой ячейки в свойствах установим параметр Заполнение в значение Шаблон.

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

Важные нюансы при работе с данными

Проанализируем несколько технических моментов, которые помогут избежать ошибок:

1. Обработка пустых значений. Всегда проверяйте числа на NULL. Если сложить строку с NULL, результатом будет NULL (пустота в отчете). Используйте функцию ЕстьNull(Поле, 0).

2. Использование функции Представление(). Для ссылочных типов (справочники, документы) в СКД лучше использовать Представление(Поле) вместо Строка(Поле). Это работает быстрее, так как платформа оптимизирует получение текстового описания ссылки из базы данных.

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

Представление(Номенклатура) + Символы.ПС + Формат(СуммаОборот, "ЧЦ=15; ЧДЦ=2")

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

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

← На главную