Как выгрузить данные из 1С в Excel: полное руководство
Содержание
Список, отчёт или любую таблицу из 1С в Excel переносят тремя способами: командой «Вывести список » (для справочников и журналов), кнопкой «Сохранить» в готовом отчёте или обработкой/кодом, если нужна автоматизация. Для разовой выгрузки хватает первых двух, и у них нет ничего общего с «Универсальным обменом данными»: тот отдаёт XML, а не таблицу.
Выбор простой. Нужна таблица как на экране — сохраняйте отчёт. Нужен весь справочник с колонками на выбор — выводите список. Выгрузка повторяется каждый день или строк сотни тысяч — берите код или внешнюю обработку .
Выгрузка списка: справочники и журналы документов
Самый быстрый путь для номенклатуры, контрагентов, списка документов. Работает в любом списке обычных и управляемых форм.
Как это делается
- Откройте нужный список, например «Номенклатура».
- Если нужны не все строки, отберите их: фильтр, отбор по колонке или поиск. Выгружается то, что видно в списке.
- Нажмите «Еще» (или «Все действия» в старом интерфейсе) и выберите «Вывести список».
- В окне выберите колонки: снимите галочки с ненужных, стрелками задайте порядок.
- Выводить в «Табличный документ». Остальное оставьте по умолчанию и нажмите «ОК».
- Откроется таблица. Дальше — сохранение в файл (см. следующий раздел) или копирование.
💡 Быстрая альтернатива для небольших выборок: выделите строки мышью (Shift или Ctrl), нажмите Ctrl+C и вставьте в открытый Excel через Ctrl+V. Скорость отличная, но колонки придут ровно такими, как показаны в списке.
Если список иерархический, выгрузится то, что раскрыто на экране. Включите режим «Просмотр без групп» или раскройте дерево заранее, иначе потеряете вложенные элементы.
Что делать с количеством строк
Команда выводит строки порциями, пока список не закончится. На справочнике в 200 тысяч позиций вывод займёт заметное время и память клиента. Режьте выборку отбором: по группе, по дате изменения, по виду номенклатуры.
Сохранение отчёта и табличного документа в XLSX
Любой отчёт — оборотно-сальдовая ведомость, карточка счёта, отчёт по продажам — это табличный документ. Он сохраняется в файл без обработок.
- Сформируйте отчёт.
- Нажмите кнопку «Сохранить» (значок дискеты) на панели отчёта или
Ctrl+S. В некоторых формах кнопка спрятана в «Еще». - В окне сохранения укажите папку и имя файла.
- В списке «Тип файла» выберите формат: «Лист Excel 2007-… (.xlsx)» или «Лист Excel 97 (.xls)».
- Нажмите «Сохранить» и откройте файл.
Таблица форматов, которые предлагает 1С при сохранении:
| Формат | Когда брать | Риски |
|---|---|---|
| XLSX | Основной вариант: открывается везде, нет жёсткого лимита в 65 тысяч строк | Тяжёлые отчёты с группировками сохраняются дольше |
| XLS | Нужна совместимость со старым Excel 2003 | Лимит 65 536 строк и 256 колонок; лишнее обрежется молча |
| CSV | Загрузка в другие системы, большие объёмы | Теряет форматирование, проблемы с кодировкой |
| MXL | Свой формат 1С, чтобы потом открыть таблицу в 1С | Excel его не откроет |
| Просто показать или распечатать | Данные не редактируются |
Сохраняйте в 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, о которых забывают:
- На сервере приложений Excel запускать нельзя: нет интерактивной сессии, процесс зависает. COM работает на стороне клиента.
- Если код упал до
Excel.Quit(), процесс Excel остаётся висеть в памяти. В цикле это съедает всю оперативную память. Закрывайте приложение в блокеИсключение. - Версия Excel и разрядность не должны мешать, но на терминальных серверах бывают нюансы с правами на запуск COM-объектов.
Если нужна выгрузка по расписанию без Excel, берите способ 1 с регламентным заданием: файл появляется в сетевой папке, а 1С не зависит от офисного пакета.
Кодировка, запятые и «кракозябры»
Самый частый сюрприз — не отсутствие данных, а искажённые данные. Разберём по симптомам.
; или в мастере импорта укажите нужный.Спецсимволы в самих данных
В названиях встречаются кавычки, переносы строк и точки с запятой. В CSV они ломают структуру: одна запись «разваливается» на несколько строк. Решение — заключайте значение в двойные кавычки, а внутренние кавычки удваивайте. В XLSX эта проблема не возникает: ячейка принимает любой текст. Это ещё один аргумент за XLSX, когда в данных много свободного текста: комментарии, адреса, наименования.
Неразрывные пробелы в числах (1 250,00 с «длинным» пробелом) тоже мешают: Excel не признаёт такое значение числом. Перед выгрузкой уберите форматирование чисел или сохраните в XLSX, где число остаётся числом.
XLS, XLSX или CSV: какой формат выбрать
| Критерий | XLS | XLSX | CSV |
|---|---|---|---|
| Максимум строк | 65 536 | 1 048 576 | ограничен только программой, которая откроет |
| Максимум колонок | 256 | 16 384 | без ограничений |
| Вес файла | средний | меньше при сжатии | самый лёгкий |
| Форматирование | есть | есть | нет |
| Формулы | есть | есть | нет |
| Открывается в 1С при загрузке | да | да | да (через разбор текста) |
Правило выбора, которым пользуются на практике:
- 📊 Отчёт человеку для просмотра и расчётов — XLSX.
- 📁 Миллион строк и больше или поток в другую систему — CSV, разбитый на файлы.
- 🕰 Получатель сидит на Excel 2003 — XLS, но проверьте, что строк меньше 65 536.
Обратный путь тоже работает: загрузка из Excel в 1С идёт через обработку или встроенную загрузку данных из табличного документа. Структуру колонок при этом лучше заранее выровнять по справочнику, куда будете загружать.
Если не помогло
Выгрузка падает или даёт пустой файл — проверьте по порядку.
Разберём несколько нетривиальных случаев.
Кнопка «Сохранить» неактивна. Табличный документ открыт только для просмотра в режиме, где сохранение запрещено ролью. Проверьте права пользователя или откройте отчёт из другого раздела.
Работа через веб-клиент. Файл не лежит там, куда вы указали: он сохраняется через загрузки браузера. Если браузер блокирует загрузку, разрешите её для адреса базы.
Огромный отчёт «висит». Формирование идёт на сервере, а сохранение в XLSX потом — на клиенте, поэтому тормозит именно запись. Попробуйте сохранить в CSV или уменьшить период.
Нужно выгрузить не то, что на экране. Выгрузка списка видит только показанные колонки. Спрятанные реквизиты добавьте через настройку списка («Еще» → «Изменить форму» или «Настроить список»), потом выводите снова.
Универсальный обмен данными делает XML-файл для загрузки в другую базу 1С. Если вам нужна именно таблица для людей, он не подходит. Для переноса между базами — подходит, но результат Excel не откроет.
Частые вопросы
Можно ли выгрузить данные из 1С в Excel без установленного Excel?
ТабличныйДокумент.Записать и кнопка «Сохранить» создают файл XLSX сами, офисный пакет не нужен. Он требуется только для управления Excel через COM.Почему при открытии CSV в Excel русские буквы превращаются в кракозябры?
Сколько строк можно выгрузить в один файл?
Как выгрузить только выбранные строки списка?
Ctrl или Shift, нажмите Ctrl+C и вставьте в Excel. Либо поставьте отбор в списке до команды «Вывести список».Можно ли настроить выгрузку так, чтобы она шла каждый день сама?
Записать. Excel на сервере при этом не нужен.