Плоская таблица из 1С для Excel: одна строка — одна запись, без объединённых ячеек

· 10 мин

Содержание

Чтобы получить из 1С плоскую таблицу для Excel, уберите из отчёта все группировки и выведите нужные поля в детальные записи, отключите итоги, заголовок и вывод отборов, затем сохраните результат в формате xlsx. Для списков документов и справочников есть путь быстрее: команда Ещё → Вывести список... сразу даёт ровную таблицу без иерархии.

Ниже описано, как сделать это в пользовательском режиме 1С 8.3 (интерфейс «Такси»), в конструкторе СКД и программно, а также что делать, если файл в Excel уже пришёл с объединёнными ячейками и пустотами.

Что такое плоская таблица и чем ей мешает обычный отчёт 1С

Плоская таблица — это диапазон, где:

  • ✅ первая строка — заголовки, по одному на столбец;
  • ✅ каждая следующая строка — одна запись (документ, строка товара, сотрудник);
  • ✅ в каждой ячейке строки заполнено своё значение, даже если оно повторяется;
  • ✅ нет объединённых ячеек, промежуточных итогов, пустых строк-разделителей.

Именно такой диапазон нужен для сводной таблицы Excel, фильтров, функций ВПР/XLOOKUP, Power Query и загрузки в другие программы.

Типичный отчёт 1С устроен иначе. Он рассчитан на чтение глазами, поэтому:

  • 📂 контрагент или номенклатура выводятся строкой-группой, а детали — под ней с отступом;
  • 🔢 после каждой группы идёт строка с итогом;
  • 🧱 шапка занимает две-три строки и собрана из объединённых ячеек;
  • 📝 сверху выводятся название отчёта, период, отборы.

После сохранения в Excel всё это переезжает как есть. Сортировка ломается, сводная таблица считает итоги дважды, а фильтр по контрагенту показывает только строку группы.

Плоский отчёт в пользовательском режиме

Этот способ работает в отчётах на системе компоновки данных (СКД). На ней построены Универсальный отчёт и большинство отчётов в ЗУП 3.1, УТ 11, ERP и многие отчёты БП 3.0. Регламентированные отчёты и печатные формы так не настраиваются.

Вариант 1. Перенести поля в детальные записи

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

  1. Откройте отчёт и нажмите Настройки.
  2. Переключите форму настроек на расширенный вид (переключатель вида в верхней части формы).
  3. На вкладке со структурой отчёта удалите все группировки, оставив только «Детальные записи». Если удалить нельзя — снимите у группировок флажки использования.
  4. На вкладке полей отметьте всё, что должно попасть в столбцы: дату, документ, контрагента, номенклатуру, количество, сумму.
  5. Отключите итоги, вывод заголовка, параметров и отборов (см. таблицу ниже).
  6. Нажмите Закрыть и сформировать.

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

Вариант 2. Оставить группировки, но вывести их в отдельные колонки

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

ПараметрЗначение для плоской таблицыЧто даёт
Расположение полей группировокОтдельноКаждая группировка в своём столбце, без отступов
Расположение реквизитовОтдельноРеквизиты (ИНН, артикул) в своих столбцах
Расположение общих итогов по вертикалиНетУбирает строку «Итого» внизу
Выводить заголовокНе выводитьНет названия отчёта над таблицей
Выводить параметры данныхНе выводитьНет строки с периодом
Выводить отборНе выводитьНет строки с условиями отбора

У этого варианта есть минус. Значение группировки стоит только в строке группы, а ниже остаются пустые ячейки. Их придётся заполнять уже в Excel (приём описан ниже). Поэтому первый вариант почти всегда удобнее.

Вариант 3. Вывести список из формы списка

Для документов, справочников и журналов отчёт вообще не нужен:

  1. Откройте нужный список, например «Реализация (акты, накладные, УПД)».
  2. Установите отбор и сортировку, добавьте колонки через Ещё → Изменить форму..., если чего-то не хватает.
  3. Выполните Ещё → Вывести список....
  4. В окне отметьте колонки и выберите вывод в табличный документ.
  5. Сохраните полученную таблицу в xlsx.

Результат — строго одна строка на элемент списка, шапка в одну строку, без объединений.

Вариант 4. Универсальный отчёт

Если стандартного отчёта с нужными полями нет, откройте «Универсальный отчёт» (в БП 3.0 он находится в разделе Отчеты). В нём выбирают тип объекта (документ, справочник, регистр накопления или сведений), сам объект и поля. Затем к нему применяют те же настройки, что в варианте 1.

Настройка СКД в конфигураторе: схема под выгрузку

Если отчёт для выгрузки делает разработчик, плоский вид закладывается прямо в схему компоновки.

Структура

  • 🧩 Добавьте в структуру варианта одну группировку без полей — она станет «Детальными записями».
  • 🚫 Не добавляйте группировки по полям, а если иерархия справочника всё же нужна, задайте для группировки тип «Элементы», а не «Иерархия».
  • 📋 На вкладке «Выбранные поля» перечислите все колонки в нужном порядке.

Параметры вывода

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

Ресурсы

Ресурсы (суммы, количества) нужны схеме для подсчёта итогов. В плоской выгрузке итоги не выводятся, поэтому числовые поля можно оставить просто полями набора данных. Если ресурсы описаны, они не помешают: при отключённых итогах лишних строк не будет.

Шапка в одну строку

Шапка разъезжается на несколько строк, когда у поля длинный заголовок или когда поля сгруппированы в папку на вкладке «Выбранные поля». Уберите группы полей и задайте короткие заголовки: «Дата», «Документ», «Сумма». Excel примет первую строку как названия столбцов.

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

Сохранение в Excel и снятие объединения ячеек

Сохранение из 1С

  1. Сформируйте отчёт или список.
  2. Нажмите кнопку сохранения в командной панели табличного документа или используйте Сохранить как... в меню программы.
  3. В поле типа файла выберите «Лист Microsoft Excel 2007-…» (*.xlsx).
  4. Укажите папку и имя файла.

Формат xls (Excel 97) тоже доступен, но в нём ограничение 65 536 строк. Для больших выгрузок берите только xlsx.

Копирование через Ctrl+A и Ctrl+C из табличного документа с вставкой в Excel тоже работает, но переносит форматирование и объединения так же, как сохранение. Зато вставка через «Специальная вставка → Значения» в Excel даёт таблицу без оформления.

Если файл уже пришёл с объединёнными ячейками

Бывает, что настроить отчёт нельзя: прислали готовый файл или нет прав на изменение варианта. Тогда чинят в Excel.

Шаг 1. Снять объединение.

  1. Выделите весь лист: Ctrl+A.
  2. На вкладке Главная раскройте кнопку «Объединить и поместить в центре» и выберите «Отменить объединение ячеек».

Значение останется только в верхней левой ячейке бывшего объединения. Остальные станут пустыми.

Шаг 2. Заполнить пустоты значением сверху.

  1. Выделите столбцы, где нужно протянуть значения (например, «Контрагент»).
  2. Нажмите F5 (или Ctrl+G) → Выделить... → «Пустые ячейки» → ОК.
  3. Не снимая выделения, введите = и нажмите стрелку вверх. В активной ячейке появится ссылка на ячейку выше.
  4. Нажмите Ctrl+Enter — формула попадёт во все выделенные пустые ячейки.
  5. Выделите столбцы снова, скопируйте и вставьте их как значения, чтобы формулы не сломались при сортировке.

Перед шагом 2 удалите строки итогов и строки-заголовки групп, иначе их значения «протянутся» вниз и испортят данные.

Шаг 3. Убрать лишнее.

  • 🗑 Удалите строки над шапкой (название отчёта, период, отборы).
  • 🗑 Удалите строки «Итого» — их удобно найти фильтром по слову «Итого».
  • 🔤 Оставьте шапку в одну строку, при необходимости склеив две строки заголовков вручную.

Числа, которые Excel считает текстом

При копировании через буфер числа иногда приходят с неразрывным пробелом между разрядами: 1 250 000,00. Excel видит в них текст, и СУММ даёт ноль.

Исправление: Ctrl+H, в поле «Найти» введите неразрывный пробел (удерживая Alt, наберите 0160 на цифровом блоке), поле «Заменить на» оставьте пустым, Заменить все. После этого установите для столбца числовой формат.

Автоматизация: внешняя обработка с выгрузкой в CSV

Когда одну и ту же таблицу выгружают каждую неделю, проще написать внешнюю обработку . Самый плоский формат — CSV: в нём физически не бывает объединений, итогов и оформления. Excel с русской локалью открывает CSV с разделителем ; сразу по столбцам.

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

&НаСервере
Процедура ВыгрузитьВCSV(ИмяФайла)

    Запрос = Новый Запрос;
    Запрос.Текст =
    "ВЫБРАТЬ
    |    Номенклатура.Код КАК Код,
    |    Номенклатура.Наименование КАК Наименование,
    |    Номенклатура.Артикул КАК Артикул,
    |    ПРЕДСТАВЛЕНИЕ(Номенклатура.Родитель) КАК Группа
    |ИЗ
    |    Справочник.Номенклатура КАК Номенклатура
    |ГДЕ
    |    НЕ Номенклатура.ЭтоГруппа";
    Таблица = Запрос.Выполнить().Выгрузить();

    Запись = Новый ЗаписьТекста(ИмяФайла, КодировкаТекста.UTF8);

    Заголовки = Новый Массив;
    Для Каждого Колонка Из Таблица.Колонки Цикл
        Заголовки.Добавить(Колонка.Имя);
    КонецЦикла;
    Запись.ЗаписатьСтроку(СтрСоединить(Заголовки, ";"));

    Для Каждого Стр Из Таблица Цикл
        Поля = Новый Массив;
        Для Каждого Колонка Из Таблица.Колонки Цикл
            Поля.Добавить(ЗначениеДляCSV(Стр[Колонка.Имя]));
        КонецЦикла;
        Запись.ЗаписатьСтроку(СтрСоединить(Поля, ";"));
    КонецЦикла;

    Запись.Закрыть();

КонецПроцедуры

&НаСервереБезКонтекста
Функция ЗначениеДляCSV(Значение)

    Если ТипЗнч(Значение) = Тип("Число") Тогда
        Возврат Формат(Значение, "ЧРД=,; ЧГ=0; ЧН=0");
    ИначеЕсли ТипЗнч(Значение) = Тип("Дата") Тогда
        Возврат Формат(Значение, "ДФ=dd.MM.yyyy");
    КонецЕсли;

    // текст берём в кавычки, внутренние кавычки удваиваем
    Текст = СтрЗаменить(Строка(Значение), """", """""");
    Возврат """" + Текст + """";

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

Что здесь сделано ради «плоскости»:

  • 🔢 числа выводятся без разделителя разрядов (ЧГ=0) и с запятой, поэтому Excel распознаёт их как числа; ноль выводится как 0, а не пустой строкой;
  • 📅 даты идут в формате dd.MM.yyyy, который русский Excel понимает как дату;
  • 🔤 текст обёрнут в кавычки, так что точка с запятой в наименовании не разорвёт строку на лишние столбцы;
  • 🔗 для ссылок в запросе использовано ПРЕДСТАВЛЕНИЕ(): так платформа не делает отдельное обращение к базе на каждую строку при вызове Строка().

Кодировка UTF8 в ЗаписьТекста пишет файл с BOM, и Excel правильно показывает кириллицу.

Процедура выполняется на сервере, и путь ИмяФайла — это путь на компьютере сервера 1С. В файловой базе это ваш компьютер. В клиент-серверной базе указывайте общую сетевую папку, к которой есть доступ у пользователя, от имени которого работает сервер 1С.

Если нужен именно xlsx, выведите тот же результат в табличный документ (через СКД с плоским вариантом из предыдущего раздела) и сохраните его методом Записать() с типом ТипФайлаТабличногоДокумента.XLSX.

Частые ошибки при выгрузке плоской таблицы

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

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

Можно ли сделать плоскую таблицу из печатной формы, например из ТОРГ-12 или УПД?
Печатная форма собрана из макета с объединёнными ячейками, и настроить её нельзя. Табличную часть документа удобнее вывести через Ещё → Вывести список... прямо в форме документа или получить отчётом по продажам с детализацией по документам.
Сохранится ли плоский вариант отчёта после обновления конфигурации?
Пользовательские варианты отчётов хранятся отдельно от конфигурации и при обычном обновлении остаются. Если в новом релизе изменили поля отчёта, часть колонок может пропасть из варианта — проверьте его после обновления.
Почему при выгрузке теряются ведущие нули в кодах и артикулах?
Excel превращает строку 000123 в число 123. В CSV такие поля оставляйте в кавычках и при импорте через мастер задайте столбцу текстовый формат.
Сколько строк можно выгрузить за один раз?
Лист xlsx вмещает 1 048 576 строк. Реальное ограничение обычно в памяти: при сотнях тысяч строк табличный документ формируется долго, и для таких объёмов лучше подходит выгрузка в CSV.
Что выбрать, если таблицу нужно обновлять в Excel регулярно?
Сделайте плоский вариант отчёта или обработку с выгрузкой в CSV в одну и ту же папку, а в Excel подключите файл через Power Query. Тогда новые данные подтягиваются кнопкой «Обновить всё».