Строки в колонки: транспонирование отчётов и табличных документов 1С
Содержание
Перевернуть таблицу в 1С проще всего в настройках самого отчёта: группировку, которая сейчас выводится строками, переносят в колонки таблицы компоновки данных, и наоборот. Если отчёт на системе компоновки данных (СКД), это делается без программирования. Если отчёт жёсткий или нужна разовая выгрузка, таблицу сохраняют в Excel и транспонируют там через специальную вставку.
Типичная ситуация: руководитель просит продажи по месяцам «в линию», а отчёт выдаёт 12 строк на каждый товар. Или наоборот: в колонках 40 складов, и таблица не помещается на лист. Ниже разобраны все рабочие способы — от двух щелчков мышью до кода, который переворачивает любой табличный документ.
Какой способ транспонирования выбрать
Выбор зависит от того, как устроен отчёт и нужен ли результат один раз или постоянно.
| Способ | Когда подходит | Что учесть |
|---|---|---|
| Настройки отчёта (структура «Таблица») | Отчёт на СКД, перевёрнутый вид нужен регулярно | Настройку можно сохранить как свой вариант |
| Параметр «Расположение ресурсов» | Показатели (сумма, количество) нужно вывести не рядом, а друг под другом | Меняет только ресурсы, группировки остаются на месте |
| Excel, специальная вставка | Разовая задача, отчёт без гибких настроек | Мешают объединённые ячейки, нет связи с базой |
| Свой отчёт (внешний .erf) | Нужен фиксированный макет «как на бумаге» | Нужны права на подключение отчётов |
| Программный код | Перевернуть готовый табличный документ или выборку запроса | Нужен разработчик и тестовая база |
Как перевернуть таблицу в типовом отчёте через настройки
Большинство отчётов в БП 3.0, ЗУП 3.1 и УТ 11 построены на СКД и библиотеке стандартных подсистем. У них единая форма настроек, поэтому порядок действий почти одинаков.
Шаг 1. Откройте расширенные настройки
- Сформируйте отчёт, который нужно перевернуть.
- Нажмите кнопку настроек на панели отчёта.
- Переключите вид настроек с простого на расширенный. В простом виде структуры не видно.
- Перейдите на вкладку «Структура».
Шаг 2. Посмотрите, из чего состоит отчёт
В дереве структуры вы увидите один из двух вариантов:
- 📄 Группировки идут друг под другом. Это обычный список: товар, внутри него период, и так далее. Колонок-группировок здесь нет в принципе.
- 📊 Есть элемент «Таблица» с узлами «Строки» и «Колонки». Это уже сводная таблица, её можно переворачивать.
Шаг 3. Поменяйте строки и колонки местами
Если таблица уже есть, перенесите группировку из узла «Строки» в узел «Колонки» (и наоборот). Перенос делается перетаскиванием мышью или удалением группировки в одном узле и добавлением того же поля в другом.
Если таблицы нет, её нужно добавить:
- Выделите корень структуры и добавьте новый элемент — таблицу.
- В узел «Строки» добавьте группировку, которая должна идти вниз, например по номенклатуре.
- В узел «Колонки» — группировку, которая должна уйти вправо, например по периоду.
- Старую группировку-список удалите, иначе отчёт выведет данные дважды.
Для периода в колонках выбирайте поле с нужной периодичностью: Период месяц даст 12 колонок за год, Период день — 365. Второе на экране читать невозможно.
Шаг 4. Сохраните вариант
Сформируйте отчёт и проверьте результат. Если всё устраивает, сохраните настройку как новый вариант отчёта через команду сохранения варианта в меню Ещё. Тогда не придётся повторять перестройку каждый раз, а исходный вариант останется нетронутым.
Не во всех отчётах есть вкладка «Структура». Оборотно-сальдовая ведомость, анализ счёта и карточка счёта в БП 3.0 имеют собственную форму настроек: там можно менять группировку и детализацию, но строки в колонки они не переводят. Для таких отчётов переходите к способу через Excel или к своему отчёту.
Компоновка данных: строки, колонки и расположение ресурсов
Иногда «перевернуть» значит не поменять группировки, а развернуть показатели. Например, отчёт выводит «Количество» и «Сумма» в двух соседних колонках, а нужно, чтобы они шли строками под каждым товаром.
За это отвечает параметр вывода «Расположение ресурсов» в СКД. У него два значения:
| Значение | Что получится |
|---|---|
| Горизонтально | Ресурсы стоят рядом, каждый в своей колонке (обычный вид) |
| Вертикально | Ресурсы идут друг под другом в одной колонке |
Параметр находится среди параметров вывода отчёта. В расширенных настройках типового отчёта он обычно на вкладке оформления или других настроек; в конструкторе СКД — на закладке «Настройки», внизу, на вкладке «Другие настройки».
Рядом лежат ещё два параметра, которые влияют на вид перевёрнутой таблицы:
- 🔢 Расположение общих итогов — по вертикали и по горизонтали отдельно. После переноса группировки в колонки итог по строке может уехать в начало или исчезнуть. Здесь это правится.
- 🗂️ Расположение полей группировок — выводить ли поля группировки вместе в одной колонке или отдельно.
Расположение ресурсов не меняет местами группировки. Если вам нужно, чтобы товары ушли в шапку, а месяцы — вниз, работайте со структурой «Таблица», а не с этим параметром.
Как это выглядит в конструкторе СКД
Тем, кто правит отчёт в Конфигураторе или в консоли компоновки данных, порядок такой:
- Откройте схему компоновки и перейдите на закладку «Настройки».
- В дереве структуры через контекстное меню корня добавьте новую таблицу.
- Внутри таблицы появятся узлы «Строки» и «Колонки». Через контекстное меню каждого узла добавьте новую группировку и укажите поле.
- На вкладке «Выбранные поля» оставьте ресурсы, которые должны стоять на пересечении.
Перевернуть таблицу 1С через Excel
Это универсальный путь. Он работает для любого отчёта, печатной формы и даже списка документов.
Сохраните таблицу из 1С
- Отчёт или печатную форму сохраните кнопкой с дискетой на панели формы или через главное меню
Файл → Сохранить как. Выберите формат «Лист Microsoft Excel 2007» (.xlsx). - Список справочника или журнала документов сначала выведите командой
Ещё → Вывести список, затем сохраните полученный табличный документ так же.
Транспонируйте в Excel
- Откройте файл и выделите диапазон таблицы вместе с шапкой.
- Скопируйте его (
Ctrl+C). - Щёлкните по пустой ячейке на новом листе.
- Выберите «Специальная вставка» и отметьте флажок «Транспонировать».
Если исходные данные будут меняться, вместо вставки используйте формулу =ТРАНСП(A1:M40). В современных версиях Excel она сама растекается на нужный диапазон. Для регулярной обработки подойдёт Power Query: там есть отдельная команда «Транспонировать» на вкладке преобразования.
Что мешает транспонированию
- 🧱 Объединённые ячейки. Шапки отчётов 1С часто объединены. Excel откажется вставлять такой диапазон. Снимите объединение со всего диапазона перед копированием.
- 📏 Лимит колонок. В Excel 16 384 колонки. Отчёт на 20 000 строк в колонки не развернётся — его придётся сначала сгруппировать или отфильтровать.
- 🔢 Числа как текст. После сохранения числа с пробелами-разделителями иногда становятся текстом. Проверьте выравнивание: текст прижат влево. Лечится заменой неразрывного пробела на пустую строку.
Не загружайте обработанный в Excel файл обратно в 1С без проверки — перевёрнутая таблица уже не соответствует структуре, которую ожидает загрузка.
Свой отчёт с нужной ориентацией
Если перевёрнутый вид нужен каждый день, а типовой отчёт его не даёт, надёжнее сделать внешний отчёт. Пользователю он ничем не отличается от встроенного.
Как собрать внешний отчёт
- В Конфигураторе создайте новый внешний отчёт через меню
Файл → Новый. - Добавьте основную схему компоновки данных.
- Напишите запрос к нужным регистрам. Конструктор запроса поможет выбрать поля без кода.
- На закладке «Ресурсы» отметьте суммируемые показатели.
- На закладке «Настройки» постройте таблицу: что в «Строки», что в «Колонки».
- Сохраните файл с расширением
.erf.
Как подключить его к базе
В БП 3.0 и ЗУП 3.1 внешний отчёт подключают в разделе Администрирование → Печатные формы, отчеты и обработки. Там должна быть включена работа с дополнительными отчётами и обработками. После регистрации отчёт появится в разделе, который вы укажете при размещении.
Вариант без подключения: откройте .erf через Файл → Открыть. Так удобно проверять отчёт, но платформа может запросить подтверждение безопасности, а у пользователя должны быть права на открытие внешних отчётов.
Когда структура отчёта сложная и стандартная таблица СКД не даёт нужной шапки, используют макет: на закладке «Макеты» схемы описывают, как выводить заголовки групп. Это уже работа программиста, но результат точно повторяет бумажную форму.
Программные методы: табличный документ и запрос
Транспонирование готового табличного документа
Если обработка уже формирует ТабличныйДокумент, его можно перевернуть целиком. Функция ниже обходит все ячейки и переносит каждую из позиции (строка, колонка) в позицию (колонка, строка).
Функция ТранспонироватьТабличныйДокумент(Источник) Экспорт
Результат = Новый ТабличныйДокумент;
Высота = Источник.ВысотаТаблицы;
Ширина = Источник.ШиринаТаблицы;
Для НомерСтроки = 1 По Высота Цикл
Для НомерКолонки = 1 По Ширина Цикл
Ячейка = Источник.Область(НомерСтроки, НомерКолонки, НомерСтроки, НомерКолонки);
Цель = Результат.Область(НомерКолонки, НомерСтроки, НомерКолонки, НомерСтроки);
Цель.Текст = Ячейка.Текст;
Цель.Шрифт = Ячейка.Шрифт;
Цель.ЦветФона = Ячейка.ЦветФона;
КонецЦикла;
КонецЦикла;
Возврат Результат;
КонецФункции
Что учесть:
- Переносится текст, шрифт и фон. Границы, ширина колонок и объединения не переносятся — их задают отдельно.
- Объединённая ячейка в источнике даст текст только в первой ячейке результата. Остальные будут пустыми.
- Таблица 5 000 × 10 — это 50 000 обращений к областям. Для разовой задачи нормально, для отчёта, который строят каждый час, лучше переворачивать данные до вывода.
Разворот прямо в запросе
В языке запросов 1С нет операции вида PIVOT. Но если колонок заранее известное число (12 месяцев, 4 квартала, 3 склада), их собирают конструкцией ВЫБОР:
ВЫБРАТЬ
Обороты.Номенклатура КАК Номенклатура,
СУММА(ВЫБОР КОГДА МЕСЯЦ(Обороты.Период) = 1 ТОГДА Обороты.СуммаОборот ИНАЧЕ 0 КОНЕЦ) КАК Январь,
СУММА(ВЫБОР КОГДА МЕСЯЦ(Обороты.Период) = 2 ТОГДА Обороты.СуммаОборот ИНАЧЕ 0 КОНЕЦ) КАК Февраль,
СУММА(ВЫБОР КОГДА МЕСЯЦ(Обороты.Период) = 3 ТОГДА Обороты.СуммаОборот ИНАЧЕ 0 КОНЕЦ) КАК Март
ИЗ
РегистрНакопления.Продажи.Обороты(&НачалоПериода, &КонецПериода, Месяц, ) КАК Обороты
СГРУППИРОВАТЬ ПО
Обороты.Номенклатура
Имя регистра и ресурса здесь условное — подставьте свои. Запрос рассчитан на период внутри одного года: месяцы разных лет с этой схемой сложатся. Если колонок заранее неизвестно сколько, не пишите запрос под каждую — постройте таблицу СКД, она соберёт колонки сама.
Если нужно повернуть не таблицу, а лист при печати
Часто под «перевернуть таблицу» имеют в виду другое: широкий отчёт не помещается на книжный лист, и его хочется развернуть боком. Данные при этом остаются на месте, меняется только ориентация страницы.
- Сформируйте отчёт или откройте печатную форму.
- Откройте главное меню
Файл → Параметры страницы. - В поле ориентации выберите альбомную.
- Там же включите масштаб «по ширине страницы», чтобы все колонки уместились на лист.
- Проверьте результат в предварительном просмотре перед печатью.
Для своих обработок ориентацию задают в коде до вывода на печать:
ТабДок.ОриентацияСтраницы = ОриентацияСтраницы.Ландшафт;
ТабДок.АвтоМасштаб = Истина;
Если и в альбомной ориентации колонок слишком много, это сигнал перевернуть саму таблицу одним из способов выше: длинную таблицу печатать проще, чем широкую.
Почему таблица не переворачивается: частые ошибки
Частые вопросы
Сохранится ли перевёрнутый вид для других пользователей?
Можно ли перевернуть регламентированный отчёт или декларацию?
Почему в моём отчёте нет вкладки «Структура»?
Не сломает ли перестройка типовой отчёт?
Ещё.