Плоская таблица из 1С для Excel: одна строка — одна запись, без объединённых ячеек
Содержание
Чтобы получить из 1С плоскую таблицу для Excel, уберите из отчёта все группировки и выведите нужные поля в детальные записи, отключите итоги, заголовок и вывод отборов, затем сохраните результат в формате xlsx. Для списков документов и справочников есть путь быстрее: команда Ещё → Вывести список... сразу даёт ровную таблицу без иерархии.
Ниже описано, как сделать это в пользовательском режиме 1С 8.3 (интерфейс «Такси»), в конструкторе СКД и программно, а также что делать, если файл в Excel уже пришёл с объединёнными ячейками и пустотами.
Что такое плоская таблица и чем ей мешает обычный отчёт 1С
Плоская таблица — это диапазон, где:
- ✅ первая строка — заголовки, по одному на столбец;
- ✅ каждая следующая строка — одна запись (документ, строка товара, сотрудник);
- ✅ в каждой ячейке строки заполнено своё значение, даже если оно повторяется;
- ✅ нет объединённых ячеек, промежуточных итогов, пустых строк-разделителей.
Именно такой диапазон нужен для сводной таблицы Excel, фильтров, функций ВПР/XLOOKUP, Power Query и загрузки в другие программы.
Типичный отчёт 1С устроен иначе. Он рассчитан на чтение глазами, поэтому:
- 📂 контрагент или номенклатура выводятся строкой-группой, а детали — под ней с отступом;
- 🔢 после каждой группы идёт строка с итогом;
- 🧱 шапка занимает две-три строки и собрана из объединённых ячеек;
- 📝 сверху выводятся название отчёта, период, отборы.
После сохранения в Excel всё это переезжает как есть. Сортировка ломается, сводная таблица считает итоги дважды, а фильтр по контрагенту показывает только строку группы.
Плоский отчёт в пользовательском режиме
Этот способ работает в отчётах на системе компоновки данных (СКД). На ней построены Универсальный отчёт и большинство отчётов в ЗУП 3.1, УТ 11, ERP и многие отчёты БП 3.0. Регламентированные отчёты и печатные формы так не настраиваются.
Вариант 1. Перенести поля в детальные записи
Это главный приём. Пока поле стоит в группировке, его значение выводится один раз на группу. Если поле стоит в детальных записях, оно выводится в каждой строке.
- Откройте отчёт и нажмите
Настройки. - Переключите форму настроек на расширенный вид (переключатель вида в верхней части формы).
- На вкладке со структурой отчёта удалите все группировки, оставив только «Детальные записи». Если удалить нельзя — снимите у группировок флажки использования.
- На вкладке полей отметьте всё, что должно попасть в столбцы: дату, документ, контрагента, номенклатуру, количество, сумму.
- Отключите итоги, вывод заголовка, параметров и отборов (см. таблицу ниже).
- Нажмите
Закрыть и сформировать.
Сохраните настройку как отдельный вариант отчёта, например «Плоская выгрузка». Тогда в следующий раз хватит выбрать вариант и указать период.
Вариант 2. Оставить группировки, но вывести их в отдельные колонки
Если группировки нужны для логики отчёта, поменяйте их расположение. Параметры вывода в расширенных настройках:
| Параметр | Значение для плоской таблицы | Что даёт |
|---|---|---|
| Расположение полей группировок | Отдельно | Каждая группировка в своём столбце, без отступов |
| Расположение реквизитов | Отдельно | Реквизиты (ИНН, артикул) в своих столбцах |
| Расположение общих итогов по вертикали | Нет | Убирает строку «Итого» внизу |
| Выводить заголовок | Не выводить | Нет названия отчёта над таблицей |
| Выводить параметры данных | Не выводить | Нет строки с периодом |
| Выводить отбор | Не выводить | Нет строки с условиями отбора |
У этого варианта есть минус. Значение группировки стоит только в строке группы, а ниже остаются пустые ячейки. Их придётся заполнять уже в Excel (приём описан ниже). Поэтому первый вариант почти всегда удобнее.
Вариант 3. Вывести список из формы списка
Для документов, справочников и журналов отчёт вообще не нужен:
- Откройте нужный список, например «Реализация (акты, накладные, УПД)».
- Установите отбор и сортировку, добавьте колонки через
Ещё → Изменить форму..., если чего-то не хватает. - Выполните
Ещё → Вывести список.... - В окне отметьте колонки и выберите вывод в табличный документ.
- Сохраните полученную таблицу в
xlsx.
Результат — строго одна строка на элемент списка, шапка в одну строку, без объединений.
Вариант 4. Универсальный отчёт
Если стандартного отчёта с нужными полями нет, откройте «Универсальный отчёт» (в БП 3.0 он находится в разделе Отчеты). В нём выбирают тип объекта (документ, справочник, регистр накопления или сведений), сам объект и поля. Затем к нему применяют те же настройки, что в варианте 1.
Настройка СКД в конфигураторе: схема под выгрузку
Если отчёт для выгрузки делает разработчик, плоский вид закладывается прямо в схему компоновки.
Структура
- 🧩 Добавьте в структуру варианта одну группировку без полей — она станет «Детальными записями».
- 🚫 Не добавляйте группировки по полям, а если иерархия справочника всё же нужна, задайте для группировки тип «Элементы», а не «Иерархия».
- 📋 На вкладке «Выбранные поля» перечислите все колонки в нужном порядке.
Параметры вывода
На вкладке «Другие настройки» варианта выставьте те же значения, что в таблице выше: группировки и реквизиты — «Отдельно», общие итоги — «Нет», заголовок, параметры и отбор — «Не выводить».
Ресурсы
Ресурсы (суммы, количества) нужны схеме для подсчёта итогов. В плоской выгрузке итоги не выводятся, поэтому числовые поля можно оставить просто полями набора данных. Если ресурсы описаны, они не помешают: при отключённых итогах лишних строк не будет.
Шапка в одну строку
Шапка разъезжается на несколько строк, когда у поля длинный заголовок или когда поля сгруппированы в папку на вкладке «Выбранные поля». Уберите группы полей и задайте короткие заголовки: «Дата», «Документ», «Сумма». Excel примет первую строку как названия столбцов.
Если вы правите типовой отчёт, делайте это в расширении конфигурации или в отдельном внешнем отчёте. Изменения прямо в типовой конфигурации снимут её с поддержки и усложнят обновления.
Сохранение в Excel и снятие объединения ячеек
Сохранение из 1С
- Сформируйте отчёт или список.
- Нажмите кнопку сохранения в командной панели табличного документа или используйте
Сохранить как...в меню программы. - В поле типа файла выберите «Лист Microsoft Excel 2007-…» (
*.xlsx). - Укажите папку и имя файла.
Формат xls (Excel 97) тоже доступен, но в нём ограничение 65 536 строк. Для больших выгрузок берите только xlsx.
Копирование через Ctrl+A и Ctrl+C из табличного документа с вставкой в Excel тоже работает, но переносит форматирование и объединения так же, как сохранение. Зато вставка через «Специальная вставка → Значения» в Excel даёт таблицу без оформления.
Если файл уже пришёл с объединёнными ячейками
Бывает, что настроить отчёт нельзя: прислали готовый файл или нет прав на изменение варианта. Тогда чинят в Excel.
Шаг 1. Снять объединение.
- Выделите весь лист:
Ctrl+A. - На вкладке
Главнаяраскройте кнопку «Объединить и поместить в центре» и выберите «Отменить объединение ячеек».
Значение останется только в верхней левой ячейке бывшего объединения. Остальные станут пустыми.
Шаг 2. Заполнить пустоты значением сверху.
- Выделите столбцы, где нужно протянуть значения (например, «Контрагент»).
- Нажмите
F5(илиCtrl+G) →Выделить...→ «Пустые ячейки» →ОК. - Не снимая выделения, введите
=и нажмите стрелку вверх. В активной ячейке появится ссылка на ячейку выше. - Нажмите
Ctrl+Enter— формула попадёт во все выделенные пустые ячейки. - Выделите столбцы снова, скопируйте и вставьте их как значения, чтобы формулы не сломались при сортировке.
Перед шагом 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 или УПД?
Ещё → Вывести список... прямо в форме документа или получить отчётом по продажам с детализацией по документам.Сохранится ли плоский вариант отчёта после обновления конфигурации?
Почему при выгрузке теряются ведущие нули в кодах и артикулах?
000123 в число 123. В CSV такие поля оставляйте в кавычках и при импорте через мастер задайте столбцу текстовый формат.