Строки в колонки: транспонирование отчётов и табличных документов 1С

· 9 мин

Содержание

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

Типичная ситуация: руководитель просит продажи по месяцам «в линию», а отчёт выдаёт 12 строк на каждый товар. Или наоборот: в колонках 40 складов, и таблица не помещается на лист. Ниже разобраны все рабочие способы — от двух щелчков мышью до кода, который переворачивает любой табличный документ.

Какой способ транспонирования выбрать

Выбор зависит от того, как устроен отчёт и нужен ли результат один раз или постоянно.

СпособКогда подходитЧто учесть
Настройки отчёта (структура «Таблица»)Отчёт на СКД, перевёрнутый вид нужен регулярноНастройку можно сохранить как свой вариант
Параметр «Расположение ресурсов»Показатели (сумма, количество) нужно вывести не рядом, а друг под другомМеняет только ресурсы, группировки остаются на месте
Excel, специальная вставкаРазовая задача, отчёт без гибких настроекМешают объединённые ячейки, нет связи с базой
Свой отчёт (внешний .erf)Нужен фиксированный макет «как на бумаге»Нужны права на подключение отчётов
Программный кодПеревернуть готовый табличный документ или выборку запросаНужен разработчик и тестовая база
Где вы хотите перевернуть таблицу?

Как перевернуть таблицу в типовом отчёте через настройки

Большинство отчётов в БП 3.0, ЗУП 3.1 и УТ 11 построены на СКД и библиотеке стандартных подсистем. У них единая форма настроек, поэтому порядок действий почти одинаков.

Шаг 1. Откройте расширенные настройки

  1. Сформируйте отчёт, который нужно перевернуть.
  2. Нажмите кнопку настроек на панели отчёта.
  3. Переключите вид настроек с простого на расширенный. В простом виде структуры не видно.
  4. Перейдите на вкладку «Структура».

Шаг 2. Посмотрите, из чего состоит отчёт

В дереве структуры вы увидите один из двух вариантов:

  • 📄 Группировки идут друг под другом. Это обычный список: товар, внутри него период, и так далее. Колонок-группировок здесь нет в принципе.
  • 📊 Есть элемент «Таблица» с узлами «Строки» и «Колонки». Это уже сводная таблица, её можно переворачивать.

Шаг 3. Поменяйте строки и колонки местами

Если таблица уже есть, перенесите группировку из узла «Строки» в узел «Колонки» (и наоборот). Перенос делается перетаскиванием мышью или удалением группировки в одном узле и добавлением того же поля в другом.

Если таблицы нет, её нужно добавить:

  1. Выделите корень структуры и добавьте новый элемент — таблицу.
  2. В узел «Строки» добавьте группировку, которая должна идти вниз, например по номенклатуре.
  3. В узел «Колонки» — группировку, которая должна уйти вправо, например по периоду.
  4. Старую группировку-список удалите, иначе отчёт выведет данные дважды.

Для периода в колонках выбирайте поле с нужной периодичностью: Период месяц даст 12 колонок за год, Период день — 365. Второе на экране читать невозможно.

Шаг 4. Сохраните вариант

Сформируйте отчёт и проверьте результат. Если всё устраивает, сохраните настройку как новый вариант отчёта через команду сохранения варианта в меню Ещё. Тогда не придётся повторять перестройку каждый раз, а исходный вариант останется нетронутым.

Не во всех отчётах есть вкладка «Структура». Оборотно-сальдовая ведомость, анализ счёта и карточка счёта в БП 3.0 имеют собственную форму настроек: там можно менять группировку и детализацию, но строки в колонки они не переводят. Для таких отчётов переходите к способу через Excel или к своему отчёту.

Компоновка данных: строки, колонки и расположение ресурсов

Иногда «перевернуть» значит не поменять группировки, а развернуть показатели. Например, отчёт выводит «Количество» и «Сумма» в двух соседних колонках, а нужно, чтобы они шли строками под каждым товаром.

За это отвечает параметр вывода «Расположение ресурсов» в СКД. У него два значения:

ЗначениеЧто получится
ГоризонтальноРесурсы стоят рядом, каждый в своей колонке (обычный вид)
ВертикальноРесурсы идут друг под другом в одной колонке

Параметр находится среди параметров вывода отчёта. В расширенных настройках типового отчёта он обычно на вкладке оформления или других настроек; в конструкторе СКД — на закладке «Настройки», внизу, на вкладке «Другие настройки».

Рядом лежат ещё два параметра, которые влияют на вид перевёрнутой таблицы:

  • 🔢 Расположение общих итогов — по вертикали и по горизонтали отдельно. После переноса группировки в колонки итог по строке может уехать в начало или исчезнуть. Здесь это правится.
  • 🗂️ Расположение полей группировок — выводить ли поля группировки вместе в одной колонке или отдельно.

Расположение ресурсов не меняет местами группировки. Если вам нужно, чтобы товары ушли в шапку, а месяцы — вниз, работайте со структурой «Таблица», а не с этим параметром.

Как это выглядит в конструкторе СКД

Тем, кто правит отчёт в Конфигураторе или в консоли компоновки данных, порядок такой:

  1. Откройте схему компоновки и перейдите на закладку «Настройки».
  2. В дереве структуры через контекстное меню корня добавьте новую таблицу.
  3. Внутри таблицы появятся узлы «Строки» и «Колонки». Через контекстное меню каждого узла добавьте новую группировку и укажите поле.
  4. На вкладке «Выбранные поля» оставьте ресурсы, которые должны стоять на пересечении.

Перевернуть таблицу 1С через Excel

Это универсальный путь. Он работает для любого отчёта, печатной формы и даже списка документов.

Сохраните таблицу из 1С

  • Отчёт или печатную форму сохраните кнопкой с дискетой на панели формы или через главное меню Файл → Сохранить как. Выберите формат «Лист Microsoft Excel 2007» (.xlsx).
  • Список справочника или журнала документов сначала выведите командой Ещё → Вывести список, затем сохраните полученный табличный документ так же.

Транспонируйте в Excel

  1. Откройте файл и выделите диапазон таблицы вместе с шапкой.
  2. Скопируйте его (Ctrl+C).
  3. Щёлкните по пустой ячейке на новом листе.
  4. Выберите «Специальная вставка» и отметьте флажок «Транспонировать».

Если исходные данные будут меняться, вместо вставки используйте формулу =ТРАНСП(A1:M40). В современных версиях Excel она сама растекается на нужный диапазон. Для регулярной обработки подойдёт Power Query: там есть отдельная команда «Транспонировать» на вкладке преобразования.

Что мешает транспонированию

  • 🧱 Объединённые ячейки. Шапки отчётов 1С часто объединены. Excel откажется вставлять такой диапазон. Снимите объединение со всего диапазона перед копированием.
  • 📏 Лимит колонок. В Excel 16 384 колонки. Отчёт на 20 000 строк в колонки не развернётся — его придётся сначала сгруппировать или отфильтровать.
  • 🔢 Числа как текст. После сохранения числа с пробелами-разделителями иногда становятся текстом. Проверьте выравнивание: текст прижат влево. Лечится заменой неразрывного пробела на пустую строку.

Не загружайте обработанный в Excel файл обратно в 1С без проверки — перевёрнутая таблица уже не соответствует структуре, которую ожидает загрузка.

Свой отчёт с нужной ориентацией

Если перевёрнутый вид нужен каждый день, а типовой отчёт его не даёт, надёжнее сделать внешний отчёт. Пользователю он ничем не отличается от встроенного.

Как собрать внешний отчёт

  1. В Конфигураторе создайте новый внешний отчёт через меню Файл → Новый.
  2. Добавьте основную схему компоновки данных.
  3. Напишите запрос к нужным регистрам. Конструктор запроса поможет выбрать поля без кода.
  4. На закладке «Ресурсы» отметьте суммируемые показатели.
  5. На закладке «Настройки» постройте таблицу: что в «Строки», что в «Колонки».
  6. Сохраните файл с расширением .erf.

Как подключить его к базе

В БП 3.0 и ЗУП 3.1 внешний отчёт подключают в разделе Администрирование → Печатные формы, отчеты и обработки. Там должна быть включена работа с дополнительными отчётами и обработками. После регистрации отчёт появится в разделе, который вы укажете при размещении.

Вариант без подключения: откройте .erf через Файл → Открыть. Так удобно проверять отчёт, но платформа может запросить подтверждение безопасности, а у пользователя должны быть права на открытие внешних отчётов.

Когда структура отчёта сложная и стандартная таблица СКД не даёт нужной шапки, используют макет: на закладке «Макеты» схемы описывают, как выводить заголовки групп. Это уже работа программиста, но результат точно повторяет бумажную форму.

Программные методы: табличный документ и запрос

Транспонирование готового табличного документа

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

Функция ТранспонироватьТабличныйДокумент(Источник) Экспорт

    Результат = Новый ТабличныйДокумент;
    Высота = Источник.ВысотаТаблицы;
    Ширина = Источник.ШиринаТаблицы;

    Для НомерСтроки = 1 По Высота Цикл
        Для НомерКолонки = 1 По Ширина Цикл

            Ячейка = Источник.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
            Цель = Результат.Область(НомерКолонки, НомерСтроки, НомерКолонки, НомерСтроки);

            Цель.Текст = Ячейка.Текст;
            Цель.Шрифт = Ячейка.Шрифт;
            Цель.ЦветФона = Ячейка.ЦветФона;

        КонецЦикла;
    КонецЦикла;

    Возврат Результат;

КонецФункции

Что учесть:

  • Переносится текст, шрифт и фон. Границы, ширина колонок и объединения не переносятся — их задают отдельно.
  • Объединённая ячейка в источнике даст текст только в первой ячейке результата. Остальные будут пустыми.
  • Таблица 5 000 × 10 — это 50 000 обращений к областям. Для разовой задачи нормально, для отчёта, который строят каждый час, лучше переворачивать данные до вывода.

Разворот прямо в запросе

В языке запросов 1С нет операции вида PIVOT. Но если колонок заранее известное число (12 месяцев, 4 квартала, 3 склада), их собирают конструкцией ВЫБОР:

ВЫБРАТЬ
    Обороты.Номенклатура КАК Номенклатура,
    СУММА(ВЫБОР КОГДА МЕСЯЦ(Обороты.Период) = 1 ТОГДА Обороты.СуммаОборот ИНАЧЕ 0 КОНЕЦ) КАК Январь,
    СУММА(ВЫБОР КОГДА МЕСЯЦ(Обороты.Период) = 2 ТОГДА Обороты.СуммаОборот ИНАЧЕ 0 КОНЕЦ) КАК Февраль,
    СУММА(ВЫБОР КОГДА МЕСЯЦ(Обороты.Период) = 3 ТОГДА Обороты.СуммаОборот ИНАЧЕ 0 КОНЕЦ) КАК Март
ИЗ
    РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК Обороты
СГРУППИРОВАТЬ ПО
    Обороты.Номенклатура

Имя регистра и ресурса здесь условное — подставьте свои. Запрос рассчитан на период внутри одного года: месяцы разных лет с этой схемой сложатся. Если колонок заранее неизвестно сколько, не пишите запрос под каждую — постройте таблицу СКД, она соберёт колонки сама.

Если нужно повернуть не таблицу, а лист при печати

Часто под «перевернуть таблицу» имеют в виду другое: широкий отчёт не помещается на книжный лист, и его хочется развернуть боком. Данные при этом остаются на месте, меняется только ориентация страницы.

  1. Сформируйте отчёт или откройте печатную форму.
  2. Откройте главное меню Файл → Параметры страницы.
  3. В поле ориентации выберите альбомную.
  4. Там же включите масштаб «по ширине страницы», чтобы все колонки уместились на лист.
  5. Проверьте результат в предварительном просмотре перед печатью.

Для своих обработок ориентацию задают в коде до вывода на печать:

ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;

Если и в альбомной ориентации колонок слишком много, это сигнал перевернуть саму таблицу одним из способов выше: длинную таблицу печатать проще, чем широкую.

Почему таблица не переворачивается: частые ошибки

Диагностика: выберите симптом

Частые вопросы

Сохранится ли перевёрнутый вид для других пользователей?
Только если сохранить его как вариант отчёта и сделать вариант доступным для всех. Пользовательская настройка без сохранения варианта видна только вам.
Можно ли перевернуть регламентированный отчёт или декларацию?
Нет. Их форма задана законодательством и макетом. Для анализа выгрузите данные в Excel и работайте там.
Почему в моём отчёте нет вкладки «Структура»?
Отчёт использует собственную форму настроек. Так устроены, например, оборотно-сальдовая ведомость и анализ счёта в БП 3.0. Переворачивайте их через Excel.
Не сломает ли перестройка типовой отчёт?
Нет, если работать с копией варианта. Исходный вариант можно вернуть командой стандартных настроек в меню Ещё.
Сколько колонок можно вывести в отчёте 1С?
Жёсткого лимита для обычных задач нет, но таблица шире 30–40 колонок плохо читается и не помещается при печати. Для Excel предел — 16 384 колонки.