Отчеты и Аналитика · 11 мин
Как объединить колонки в СКД 1С: практическое руководство
Как объединить колонки в СКД 1С: настройка группировок, вычисляемые поля, объединение наборов данных и колонок с одинаковыми значениями. Пошаговая инструкция.
Объединение колонок в системе компоновки данных (СКД) — частая задача при разработке отчётов в 1С. Под этим обычно понимают три разные ситуации: сведение нескольких полей в одну визуальную колонку отчёта, объединение значений из разных наборов данных в одну колонку и объединение ячеек с одинаковыми значениями при выводе. Каждая задача решается своим инструментом, и путаница между ними — главная причина «неработающих» настроек.
Важно понимать: СКД не имеет кнопки «объединить колонки» в привычном смысле, как в Excel. Результат достигается через структуру настроек — группировки, выбранные поля, ресурсы, вычисляемые поля и параметры вывода. Ниже разобраны все основные сценарии с конкретными действиями в конструкторе настроек.
Что именно вы хотите объединить: определяем задачу
Прежде чем менять настройки, определите, какой результат нужен. Если в отчёте строки «расползаются» на несколько колонок с пустыми значениями — это проблема структуры наборов данных. Если нужно вывести фамилию и имя одной строкой — это вычисляемое поле. Если требуется, чтобы повторяющиеся значения группировки не дублировались в каждой строке — это настройка макета или расположения полей группировки.
Как выбрать действие
Объединение значений полей в одну колонку через вычисляемые поля
Самый прямой способ «склеить» несколько колонок в одну — вычисляемое поле. Откройте схему компоновки данных, перейдите на вкладку «Вычисляемые поля» и добавьте новое поле. В колонке «Выражение» задайте формулу на языке выражений СКД, например для объединения фамилии и имени с пробелом:
Фамилия + " " + Имя
Для числовых или датовых полей используйте функцию приведения к строке — например, СТРОКА(НомерДокумента). Учтите, что функции языка выражений СКД отличаются от встроенного языка 1С: доступен ограниченный набор — строковые операции, арифметика, функции работы с датами, условный оператор ВЫБОР КОГДА...ИНАЧЕ КОНЕЦ.
После создания поля добавьте его в выбранные поля отчёта на закладке «Настройки», а исходные поля (Фамилия, Имя) из списка уберите. Проверьте результат, сформировав отчёт: колонка должна содержать объединённое значение. Если вместо значения выводится пусто — проверьте, что исходные поля заполнены в данных: конкатенация с NULL в ряде случаев даёт пустую строку, поэтому для надёжности используйте ЕСТЬNULL(Поле, "") в запросе набора данных.
Объединение колонок из разных наборов данных
Когда отчёт строится на нескольких наборах данных — например, продажи и возвраты — СКД по умолчанию выводит поля каждого набора в отдельные колонки, и таблица получается «рваной», с пустотами. Чтобы данные попали в одни и те же колонки, используйте объединение наборов.
На закладке «Наборы данных» выделите нужные наборы и нажмите кнопку объединения (в дереве наборов появится узел «Объединение»). Ключевое условие: поля, которые должны попасть в одну колонку, обязаны иметь одинаковые псевдонимы (имена) в запросах всех наборов. Если в одном запросе поле названо Сумма, а в другом — СуммаПродажи, СКД создаст две разные колонки. Приведите имена к единому виду через КАК Сумма в тексте запроса.
Для полей, которые есть только в части наборов, в остальных наборах добавьте в запрос заглушку: NULL КАК СтавкаНДС или 0 КАК Количество. Это гарантирует, что структура полей совпадёт и колонки не разъедутся. После объединения проверьте связи наборов на закладке «Связи наборов данных», если наборы должны соединяться, а не складываться — объединение и соединение дают принципиально разный результат: объединение складывает строки друг под другом (UNION), соединение присоединяет колонки по ключу (JOIN).
Сжатие строк: группировки и детальные записи
Частая формулировка «объединить колонки» на практике означает: убрать дублирование значений и свести данные по группам. Это решается структурой отчёта на закладке «Настройки». Добавьте группировку по нужному полю (например, «Контрагент»), а внутрь неё — группировку «Детальные записи» или следующую группировку. Поля, по которым построена группировка, выводятся один раз на группу, а ресурсы (суммы, количества) автоматически агрегируются.
Если группировка выводит заголовок в отдельной строке, а нужно, чтобы значение стояло в той же строке, что и данные, проверьте расположение полей группировки: в настройках группировки есть параметр «Расположение полей группировки» — значения «Вместе» или «В отдельной строке» меняют вид вывода. Также полезен параметр «Тип макета» группировки: «Вертикально» и «Горизонтально» определяют, разворачиваются ли группы по строкам или колонкам.
- 1Откройте настройки отчёта (закладка «Настройки» в конструкторе или в режиме предприятия)
- 2Добавьте группировку по ключевому полю через кнопку «Добавить группировку»
- 3Оставьте в выбранных полях только нужные: поле группировки и ресурсы
- 4Установите расположение полей группировки — «Вместе», если нужна одна строка
- 5Сформируйте отчёт и проверьте, что повторяющиеся значения сведены, а итоги посчитаны
Визуальное объединение ячеек с одинаковыми значениями
Если требуется, чтобы повторяющиеся значения в колонке отображались одной объединённой ячейкой (как «объединить ячейки» в Excel), штатных настроек СКД для этого недостаточно. В пределах группировки значение поля группировки и так выводится один раз, но внутри детальных записей дубли останутся.
Есть два рабочих подхода. Первый — собственный макет: на закладке «Макеты» создайте макет группировки и оформите нужные области, управляя выводом ячеек. Второй — программная обработка результата: выведите отчёт через ПроцессорКомпоновкиДанных в табличный документ, затем пройдите по строкам и методом Объединить() области табличного документа объедините ячейки с одинаковыми значениями. Это делается в модуле объекта отчёта или в форме, где формируется результат.
Расположение ресурсов: как убрать «лишние» колонки итогов
Когда в отчёте несколько ресурсов (сумма, количество, себестоимость), СКД может выводить их с дополнительными уровнями заголовков, из-за чего таблица выглядит раздутой. Управляет этим настройка «Расположение ресурсов» на закладке «Настройки» в разделе параметров вывода: варианты «Горизонтально» и «Вертикально» определяют, идут ли ресурсы в соседние колонки или в отдельные строки.
Если ресурсы выводятся горизонтально и создают по колонке на каждую группировку колонок (например, по каждому периоду), это нормальное поведение перекрёстного отчёта. Чтобы сузить таблицу, уберите лишние ресурсы из выбранных полей или переведите ресурсы в вертикальное расположение. Также проверьте закладку «Ресурсы» в схеме компоновки: поле, не добавленное в ресурсы, не агрегируется и может порождать дубли строк вместо свёртки.
Как проверить результат
Только нужные поля, без дублирующих и пустых колонок
Колонки с одинаковым смыслом и пустыми значениями — признак разных псевдонимов полей
Строка содержит данные всех исходных полей
Пустые значения там, где данные есть — проверьте NULL и типы
Суммы по группам сходятся с детальными записями
Итоги завышены — вероятно, соединение наборов вместо объединения
Значение выводится один раз на группу
Дубли в каждой строке — проверьте структуру группировок
Ограничения и альтернативы
СКД не умеет объединять ячейки результата «из коробки» и не поддерживает сложную вёрстку заголовков колонок без макетов. Если требования к внешнему виду жёсткие (многоуровневые шапки, произвольное объединение ячеек), рассмотрите вывод через макеты СКД или полностью программное формирование табличного документа — для печатных форм это часто надёжнее.
Для простых случаев, когда нужно просто переименовать или переставить колонки, достаточно пользовательских настроек в режиме «Предприятие» без изменения схемы: кнопка «Настройки» в отчёте позволяет менять выбранные поля, их порядок и группировки. Изменения схемы компоновки требуют прав на редактирование конфигурации или внешнего отчёта — убедитесь, что работаете с копией, если отчёт типовой и обновляется поставщиком.
Что важно запомнить
Объединение колонок в СКД решается разными инструментами: вычисляемые поля — для слияния значений, объединение наборов с одинаковыми псевдонимами — для сведения источников, группировки и расположение ресурсов — для структуры таблицы, макеты или программная обработка — для визуального объединения ячеек. Всегда проверяйте результат формированием отчёта и контролем итогов.
Частые вопросы
Почему после объединения наборов данных колонки всё равно раздельные?
Почти всегда причина в разных псевдонимах полей в запросах наборов. СКД объединяет поля по имени: если имена отличаются, создаются отдельные колонки. Выровняйте имена через КАК в текстах запросов и добавьте недостающие поля-заглушки в наборы, где их нет.
Можно ли объединить колонки в СКД без изменения запроса?
Да, если речь о слиянии значений — через вычисляемое поле на соответствующей закладке схемы. Если речь о структуре таблицы — через настройки группировок и расположение ресурсов. Но сведение разных наборов данных в одни колонки без правки псевдонимов в запросах невозможно.
Как объединить значения, если одно из полей может быть пустым?
Обработайте NULL заранее: в запросе набора данных используйте ЕСТЬNULL(Поле, "") или в выражении вычисляемого поля — конструкцию ВЫБОР КОГДА Поле ЕСТЬ NULL ТОГДА "" ИНАЧЕ Поле КОНЕЦ. Иначе результат конкатенации может оказаться пустым.
Как сделать, чтобы значение группировки не повторялось в каждой строке?
Убедитесь, что поле вынесено в группировку, а детальные поля вложены внутрь неё. Дополнительно в параметрах группировки установите расположение полей «Вместе» и проверьте, что поле не добавлено одновременно в выбранные поля детальных записей.
Можно ли объединить ячейки результата отчёта, как в Excel?
Штатной настройки нет. Варианты: макет группировки на закладке «Макеты» для управления выводом областей либо программное объединение ячеек табличного документа методом Объединить() после формирования отчёта. Второй способ применяйте осторожно — он нарушает построчную структуру документа.
Чем объединение наборов отличается от соединения?
Объединение складывает строки наборов друг под другом — как UNION в SQL, колонки должны совпадать по именам. Соединение присоединяет колонки одного набора к строкам другого по ключу связи — как JOIN. Для сведения однотипных данных в одни колонки нужно именно объединение.