Как выгрузить данные из 1С в Excel: полное руководство

· 9 мин

Содержание

Список, отчёт или любую таблицу из 1С в Excel переносят тремя способами: командой «Вывести список » (для справочников и журналов), кнопкой «Сохранить» в готовом отчёте или обработкой/кодом, если нужна автоматизация. Для разовой выгрузки хватает первых двух, и у них нет ничего общего с «Универсальным обменом данными»: тот отдаёт XML, а не таблицу.

Выбор простой. Нужна таблица как на экране — сохраняйте отчёт. Нужен весь справочник с колонками на выбор — выводите список. Выгрузка повторяется каждый день или строк сотни тысяч — берите код или внешнюю обработку .

Выгрузка списка: справочники и журналы документов

Самый быстрый путь для номенклатуры, контрагентов, списка документов. Работает в любом списке обычных и управляемых форм.

Как это делается

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

💡 Быстрая альтернатива для небольших выборок: выделите строки мышью (Shift или Ctrl), нажмите Ctrl+C и вставьте в открытый Excel через Ctrl+V. Скорость отличная, но колонки придут ровно такими, как показаны в списке.

Если список иерархический, выгрузится то, что раскрыто на экране. Включите режим «Просмотр без групп» или раскройте дерево заранее, иначе потеряете вложенные элементы.

Что делать с количеством строк

Команда выводит строки порциями, пока список не закончится. На справочнике в 200 тысяч позиций вывод займёт заметное время и память клиента. Режьте выборку отбором: по группе, по дате изменения, по виду номенклатуры.

Сохранение отчёта и табличного документа в XLSX

Любой отчёт — оборотно-сальдовая ведомость, карточка счёта, отчёт по продажам — это табличный документ. Он сохраняется в файл без обработок.

  1. Сформируйте отчёт.
  2. Нажмите кнопку «Сохранить» (значок дискеты) на панели отчёта или Ctrl+S. В некоторых формах кнопка спрятана в «Еще».
  3. В окне сохранения укажите папку и имя файла.
  4. В списке «Тип файла» выберите формат: «Лист Excel 2007-… (.xlsx)» или «Лист Excel 97 (.xls)».
  5. Нажмите «Сохранить» и откройте файл.

Таблица форматов, которые предлагает 1С при сохранении:

ФорматКогда братьРиски
XLSXОсновной вариант: открывается везде, нет жёсткого лимита в 65 тысяч строкТяжёлые отчёты с группировками сохраняются дольше
XLSНужна совместимость со старым Excel 2003Лимит 65 536 строк и 256 колонок; лишнее обрежется молча
CSVЗагрузка в другие системы, большие объёмыТеряет форматирование, проблемы с кодировкой
MXLСвой формат 1С, чтобы потом открыть таблицу в 1СExcel его не откроет
PDFПросто показать или распечататьДанные не редактируются

Сохраняйте в XLSX, если нет особой причины для XLS. Старый формат режет данные без предупреждения: отчёт в 80 тысяч строк в XLS просто потеряет хвост.

Расшифровки и группировки

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

Подготовка таблицы для сводной и фильтров

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

  • 🧹 Уберите объединённые ячейки в шапке: сводная таблица на них не строится.
  • 🔢 Проверьте, что в колонках с суммами нет строк «Итого» посреди данных. Сводная посчитает их дважды.
  • 🏷 Оставьте одну строку заголовков. Двухэтажная шапка отчёта ломает автофильтр.
  • 📅 Выводите период отдельной колонкой, а не в шапке над таблицей.

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

Внешняя обработка выгрузки

Когда нужны особые колонки, объединение данных из нескольких справочников или произвольный отбор, ставят внешнюю обработку. Она открывается через «Файл» → «Открыть» (в управляемом интерфейсе, если разрешено открытие внешних файлов) или лежит в разделе «Администрирование» → «Печатные формы, отчёты и обработки» → «Дополнительные отчёты и обработки».

Что проверить до запуска:

  • 🔒 Откуда файл. Обработка выполняет код с правами вашего пользователя. Берите исходники у разработчика, а не из случайного архива.
  • 📦 Версия. Обработка под обычные формы не запустится в управляемом интерфейсе без доработки, и наоборот.
  • 👤 Права. В режиме безопасной работы дополнительная обработка видит только то, что ей разрешили.

Типовая обработка спрашивает объект (справочник или документ), набор реквизитов и путь файла. Минус внешних обработок один: они «не живут» вместе с конфигурацией. После обновления релиза проверьте, что реквизиты, которые она читает, не переименованы.

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

Запись в Excel из кода

Для программиста есть два способа, и они очень различаются по скорости.

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

Формируете ТабличныйДокумент, затем пишете его в файл одной командой:

ТабДок.Записать("C:\Temp\vygruzka.xlsx", ТипФайлаТабличногоДокумента.XLSX);

Работает на клиенте и на сервере, не требует установленного Excel. Это основной способ, если нужна просто таблица в файле. Для формата 97 используют значение XLS, для текста с разделителями — ЗаписьТекста.

Способ 2: управлять Excel через COM

Нужен, когда требуется настроить сам Excel: ширину колонок, формулы, несколько листов, диаграмму. На компьютере должен стоять Excel.

Попытка
    Excel = Новый COMОбъект("Excel.Application");
Исключение
    Сообщить("Excel не установлен или недоступен: " + ОписаниеОшибки());
    Возврат;
КонецПопытки;

Excel.Visible = Ложь;
Книга = Excel.Workbooks.Add();
Лист = Книга.Worksheets(1);

// Заголовок и данные массивом одним присваиванием, не по ячейкам
Данные = Новый Массив(3, 2);
Данные[0][0] = "Артикул"; Данные[0][1] = "Остаток";
// ... заполнение ...
Диапазон = Лист.Range(Лист.Cells(1, 1), Лист.Cells(3, 2));
Диапазон.Value = Данные;

Книга.SaveAs("C:\Temp\ostatki.xlsx");
Книга.Close();
Excel.Quit();

Запись в ячейку по одной через COM — медленная операция. Десять тысяч ячеек вы будете ждать минуты, массивом — секунды. Запись по ячейкам оставляйте для заголовков и форматирования.

Три особенности COM, о которых забывают:

  1. На сервере приложений Excel запускать нельзя: нет интерактивной сессии, процесс зависает. COM работает на стороне клиента.
  2. Если код упал до Excel.Quit(), процесс Excel остаётся висеть в памяти. В цикле это съедает всю оперативную память. Закрывайте приложение в блоке Исключение.
  3. Версия Excel и разрядность не должны мешать, но на терминальных серверах бывают нюансы с правами на запуск COM-объектов.

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

Кодировка, запятые и «кракозябры»

Самый частый сюрприз — не отсутствие данных, а искажённые данные. Разберём по симптомам.

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

Спецсимволы в самих данных

В названиях встречаются кавычки, переносы строк и точки с запятой. В CSV они ломают структуру: одна запись «разваливается» на несколько строк. Решение — заключайте значение в двойные кавычки, а внутренние кавычки удваивайте. В XLSX эта проблема не возникает: ячейка принимает любой текст. Это ещё один аргумент за XLSX, когда в данных много свободного текста: комментарии, адреса, наименования.

Неразрывные пробелы в числах (1 250,00 с «длинным» пробелом) тоже мешают: Excel не признаёт такое значение числом. Перед выгрузкой уберите форматирование чисел или сохраните в XLSX, где число остаётся числом.

XLS, XLSX или CSV: какой формат выбрать

КритерийXLSXLSXCSV
Максимум строк65 5361 048 576ограничен только программой, которая откроет
Максимум колонок25616 384без ограничений
Вес файласреднийменьше при сжатиисамый лёгкий
Форматированиеестьестьнет
Формулыестьестьнет
Открывается в 1С при загрузкедадада (через разбор текста)

Правило выбора, которым пользуются на практике:

  • 📊 Отчёт человеку для просмотра и расчётов — XLSX.
  • 📁 Миллион строк и больше или поток в другую систему — CSV, разбитый на файлы.
  • 🕰 Получатель сидит на Excel 2003 — XLS, но проверьте, что строк меньше 65 536.

Обратный путь тоже работает: загрузка из Excel в 1С идёт через обработку или встроенную загрузку данных из табличного документа. Структуру колонок при этом лучше заранее выровнять по справочнику, куда будете загружать.

Если не помогло

Выгрузка падает или даёт пустой файл — проверьте по порядку.

Проверка выгрузки
Выполнено: 0 / 6

Разберём несколько нетривиальных случаев.

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

Работа через веб-клиент. Файл не лежит там, куда вы указали: он сохраняется через загрузки браузера. Если браузер блокирует загрузку, разрешите её для адреса базы.

Огромный отчёт «висит». Формирование идёт на сервере, а сохранение в XLSX потом — на клиенте, поэтому тормозит именно запись. Попробуйте сохранить в CSV или уменьшить период.

Нужно выгрузить не то, что на экране. Выгрузка списка видит только показанные колонки. Спрятанные реквизиты добавьте через настройку списка («Еще» → «Изменить форму» или «Настроить список»), потом выводите снова.

Универсальный обмен данными делает XML-файл для загрузки в другую базу 1С. Если вам нужна именно таблица для людей, он не подходит. Для переноса между базами — подходит, но результат Excel не откроет.

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

Можно ли выгрузить данные из 1С в Excel без установленного Excel?
Да. Команда ТабличныйДокумент.Записать и кнопка «Сохранить» создают файл XLSX сами, офисный пакет не нужен. Он требуется только для управления Excel через COM.
Почему при открытии CSV в Excel русские буквы превращаются в кракозябры?
Файл в UTF-8, а Excel читает его как ANSI. Откройте его через «Данные» → «Из текста/CSV» и выберите UTF-8, либо сохраните файл с BOM.
Сколько строк можно выгрузить в один файл?
В XLS — до 65 536, в XLSX — до 1 048 576. Если строк больше, делите выгрузку по периодам или используйте CSV.
Как выгрузить только выбранные строки списка?
Выделите строки мышью с зажатым Ctrl или Shift, нажмите Ctrl+C и вставьте в Excel. Либо поставьте отбор в списке до команды «Вывести список».
Можно ли настроить выгрузку так, чтобы она шла каждый день сама?
Можно: регламентное задание формирует табличный документ и записывает его в сетевую папку через Записать. Excel на сервере при этом не нужен.