В процессе работы с отчетами на базе Системы Компоновки Данных (СКД) в 1С часто возникает задача по отображению нескольких связанных значений в одной ячейке табличного документа — решить её ускоряет инструментарий разработчика 1С с консолью СКД. Стандартный подход, который предполагает объединение нескольких полей в одну группу с признаком "Вместе", по умолчанию добавляет между ними запятые, что не всегда соответствует требованиям к представлению данных. В этом руководстве мы подробно разберем, как эффективно решить эту проблему, обеспечив вывод информации без лишних разделителей и сохранив при этом возможность применения условного оформления.
Когда мы объединяем несколько полей в одну группу на вкладке "Настройки" отчета СКД и устанавливаем для этой группы флажок "Вместе" (часто называемый также "Размещать вместе" или "Выводить вместе"), система компоновки данных интерпретирует это как команду вывести все значения выбранных полей в одной ячейке, используя при этом стандартный строковый разделитель – запятую. Этот механизм удобен для быстрого вывода нескольких значений, но не дает нам контроля над форматом их объединения. Чтобы обойти это ограничение, нам потребуется более гибкий подход, основанный на создании собственного вычисляемого поля.
Наиболее эффективный способ решить эту задачу заключается в создании нового вычисляемого поля, которое будет объединять текстовые представления исходных данных в одну строку — в этом поможет конструктор текстовых строк по шаблонам и формулам. Этот подход позволяет нам полностью контролировать, как именно будут соединены значения и какие разделители (или их отсутствие) будут использоваться. Давайте рассмотрим шаги по реализации этого решения.
Переходим на вкладку "Вычисляемые поля".
В схеме компоновки данных вашего отчета, перейдите на вкладку "Вычисляемые поля". Именно здесь мы будем создавать новое поле, которое станет нашим объединенным представлением данных.
Добавляем новое вычисляемое поле.
Нажмите кнопку "Добавить" (зеленый плюс) для создания нового вычисляемого поля. Дайте ему осмысленное имя, например, ОбъединенныеДанные, ПредставлениеABC или СводныеПоказатели. Это имя будет использоваться в настройках отчета.
Определяем выражение для нового поля.
В колонке "Выражение" для созданного поля необходимо прописать логику объединения исходных значений. Здесь ключевым является использование функции Представление() для каждого исходного поля. Функция Представление() преобразует значение любого типа (число, дата, булево, ссылка и т.д.) в его текстовое представление, что критически важно для корректной конкатенации строк. Без этого преобразования попытка сложить, например, число и строку может привести к ошибкам.
Рассмотрим два основных способа объединения:
Этот метод прост и интуитивно понятен. Мы просто "складываем" текстовые представления наших полей, используя оператор +. Между ними мы можем вставить любой разделитель, включая пустую строку, если разделитель не нужен совсем.
Предположим, у нас есть три исходных поля: ABC_шт, ABC_Маржа, ABC_Выручка (поможет готовый отчет для ABC-анализа на базе СКД). Выражение будет выглядеть так:
Представление(ABC_шт) + " " + Представление(ABC_Маржа) + " " + Представление(ABC_Выручка)
В этом примере мы добавили пробел (" ") между значениями, чтобы они не сливались. Если нам необходимо вывести значения без каких-либо разделителей, мы можем использовать пустую строку:
Представление(ABC_шт) + Представление(ABC_Маржа) + Представление(ABC_Выручка)
Обратите внимание, что важно точно указывать имена ваших исходных полей, как они определены в наборе данных или в других вычисляемых полях.
Функция СоединитьСтроки() предоставляет более гибкий и компактный способ объединения элементов массива в одну строку с заданным разделителем. Это особенно удобно, когда полей много или когда требуется более сложная логика объединения.
Для использования этой функции нам нужно создать массив из текстовых представлений наших полей, а затем передать его в СоединитьСтроки() вместе с желаемым разделителем. Если разделитель не нужен, мы передаем пустую строку "".
СоединитьСтроки(Массив(Представление(ABC_шт), Представление(ABC_Маржа), Представление(ABC_Выручка)), "")
Здесь Массив() создает массив из трех элементов, каждый из которых является текстовым представлением одного из исходных полей. Второй параметр "" указывает, что между элементами массива не должно быть никаких разделителей.
Настройка условного оформления для нового поля.
Исходные поля, которые мы теперь объединили, возможно, имели собственное условное оформление (например, выделение цветом значений, соответствующих определенным критериям). После создания объединенного поля ОбъединенныеДанные, нам потребуется перенести эту логику на новое поле.
Перейдите на вкладку "Условное оформление" в настройках вашего отчета. Здесь мы будем создавать новые элементы условного оформления. Для каждого условия, которое ранее применялось к ABC_шт, ABC_Маржа или ABC_Выручка, нам нужно создать новое правило, которое будет применяться к полю ОбъединенныеДанные — для этого подойдёт автоматизированный инструмент для проведения ABC-анализа продаж.
Предположим, ранее поле ABC_Маржа выделялось красным, если его значение было меньше нуля. Теперь нам нужно создать новое правило:
Нажмите кнопку "Добавить" в "Условном оформлении".
В разделе "Оформление" укажите нужные параметры (например, "Цвет текста: Красный").
В разделе "Условие" добавьте условие, которое ранее применялось к исходному полю. Например, ABC_Маржа < 0.
Самое главное: в разделе "Оформляемые поля" укажите наше новое поле ОбъединенныеДанные. Это гарантирует, что оформление будет применено к тексту в ячейке, содержащей объединенные данные, когда условие выполнится.
Повторите эти действия для всех условий, которые необходимо перенести. Такой подход позволяет сохранить всю визуальную информацию, которая была заложена в отчет, при этом используя новое объединенное поле.
Использование нового поля в отчете.
После того как вы создали вычисляемое поле ОбъединенныеДанные и настроили для него условное оформление, остается последний шаг – включить это поле в отчет и убрать старые поля.
Перейдите на вкладку "Настройки" вашего отчета. В разделе "Выбранные поля" (или в структуре отчета, если у вас сложная структура группировок) найдите и добавьте ваше новое поле ОбъединенныеДанные.
Критически важно: Убедитесь, что исходные три поля (ABC_шт, ABC_Маржа, ABC_Выручка) теперь не выбраны для вывода в отчете. Если вы оставите их, информация будет дублироваться, и проблема с запятыми может появиться вновь для исходных полей.
Используя описанный подход с созданием вычисляемого поля, мы получаем полный контроль над представлением данных в одной ячейке отчета СКД. Это позволяет не только убрать нежелательные запятые, но и гибко настраивать формат вывода, а также переносить на него всю логику условного оформления. Такой метод является стандартом де-факто для подобных задач в СКД и позволяет создавать более чистые, читаемые и функциональные отчеты.