Экспорт из 1С в Excel: от буфера обмена до COM-соединения
Содержание
Проще всего скопировать данные из 1С в Excel так: выделить строки в списке или таблице, нажать Ctrl+C, перейти в Excel и вставить через Ctrl+V. Для одного взгляда на цифры этого хватает. Но как только таблица большая или её нужно сохранять регулярно, буфер обмена начинает терять колонки, ломать даты и превращать длинные коды в 1,23E+11.
Поэтому способов перенести данные из 1С в Excel несколько, и выбор зависит от того, что именно вы выгружаете: список справочника, печатную форму, отчёт или весь массив из базы по расписанию. Ниже — рабочие варианты для платформы 8.3 (интерфейс «Такси»), от самого быстрого до программного, и разбор типовых ошибок кодировки и форматирования.
Буфер обмена: когда нужно быстро и немного
Самый короткий путь. Работает в любом списке и в любом табличном документе.
- Откройте список (например,
Продажи → Реализацииили любой справочник). - Выделите нужные строки: мышью с зажатым
Shift, либоCtrl+Aдля всех видимых. - Нажмите
Ctrl+C. - В Excel встаньте на ячейку
A1и нажмитеCtrl+V.
1С кладёт в буфер то, что видит пользователь: только отображаемые колонки списка и в том порядке, в котором они выведены на экран. Скрытые реквизиты не переносятся.
Хотите больше колонок — сначала настройте список: команда Еще → Изменить форму (или Еще → Настроить список), добавьте нужные поля, и только потом копируйте. Что на экране — то и в буфере.
Тот же Ctrl+C работает и внутри документа. Если нужно выгрузить не весь список, а, например, товары из одной накладной — откройте документ, встаньте на табличную часть «Товары», выделите строки и скопируйте. В буфер попадут видимые колонки табличной части. Это удобно, когда Excel нужен для разовой проверки спецификации, а не всей базы.
Минус буфера в том, что числа и даты вставляются как текст в том виде, в каком они показаны. Если в 1С стоит разделитель разрядов (1 234,56), Excel может не распознать это как число. Перед копированием больших сумм проверьте, как Excel их принял: если число прижато влево — это текст, считать по нему нельзя.
Сохранение списка в файл Excel
Когда строк много, надёжнее выгрузить список целиком в файл, а не через буфер.
- В списке нажмите кнопку
Ещев командной панели. - Выберите команду вывода списка (
Вывести список...). - В открывшемся окне отметьте, какие колонки выгружать, и выберите вид — табличный документ.
- Нажмите «ОК». 1С сформирует табличный документ — это внутренний аналог листа Excel.
- В окне табличного документа откройте главное меню (кнопка со значком меню слева вверху) →
Файл → Сохранить как. - В поле «Тип файла» выберите
Лист Microsoft Excel 2007 (*.xlsx)и сохраните.
Формат *.xlsx предпочтителен: он хранит и числа, и даты как значения, а не как текст. Старый *.xls берите только если файл открывают в очень старой версии Excel.
Этот же приём работает для журналов документов и для результатов любого отчёта — всё, что в 1С выглядит как таблица, внутри является табличным документом и сохраняется одинаково.
Выгрузка отчёта в Excel без потери форматирования
Отчёты (оборотно-сальдовая ведомость, анализ счёта, карточка и любые на СКД) выгружаются чище всего, потому что уже оформлены как табличный документ с группировками.
- Сформируйте отчёт кнопкой «Сформировать».
- Главное меню окна →
Файл → Сохранить как, либо простоCtrl+Sв окне отчёта. - Тип файла —
Лист Microsoft Excel 2007 (*.xlsx).
Группировки строк 1С выгружает как группировки Excel — слева появятся плюс-минусы для сворачивания. Объединённые ячейки шапки сохраняются. Это главное преимущество перед буфером: отчёт в Excel выглядит так же, как на экране.
Если отчёт многостраничный, Excel получит всё содержимое одним листом, а не постранично. Разбиение на страницы в 1С — это настройка печати, в *.xlsx она не переносится.
Для отчёта, который нужен регулярно, настройте и сохраните его вариант в самой 1С (кнопка настроек отчёта). Тогда каждый раз вы формируете готовую структуру и сохраняете её в один клик, не собирая колонки заново.
Есть ещё один формат, про который забывают: *.pdf. Если отчёт нужен не для расчётов, а чтобы отправить в неизменяемом виде (контрагенту, в суд, в архив), сохраняйте его в PDF из того же окна Файл → Сохранить как. В Excel такой документ никто случайно не поправит, а оформление останется точным. Для работы с цифрами PDF не годится — только *.xlsx.
Кодировка и «кракозябры»: почему текст превращается в иероглифы
Проблема возникает не при сохранении в *.xlsx, а при выгрузке в текстовые форматы — *.csv и *.txt. 1С по умолчанию может записать файл в кодировке UTF-8, а Excel в русской локали при двойном клике открывает *.csv в кодировке Windows-1251. Результат — à иал вместо «Реализация».
Что делать:
- 📥 Импортировать, а не открывать. В Excel:
Данные → Получить данные → Из текстового/CSV-файла. В мастере импорта явно укажите кодировку файла (UTF-8) и разделитель. Так Excel прочитает кириллицу правильно независимо от того, как сохранил 1С. - 🔤 Сохранить в Windows-1251. Если файл всё равно открывают двойным кликом, при сохранении из 1С выберите текстовый формат в кодировке, которую ждёт Excel. Тогда иероглифов не будет, но потеряются символы, которых нет в 1251 (редкие значки).
- 📋 Через буфер обмена кодировка не ломается вообще — Windows передаёт текст в Unicode. Если выгрузка небольшая, скопируйте напрямую, минуя CSV.
Разделитель колонок в русском CSV — больная тема. Excel в русской локали ждёт точку с запятой ;, а не запятую. Если все данные склеились в одну колонку — при импорте выберите правильный разделитель вручную.
Программная выгрузка через COM-соединение
Когда данные нужно выгружать по расписанию или из внешней программы (скрипт, VBA, другая система), подключаются к базе 1С через COM-соединение.
COM-соединение — это внешний компонент comcntr.dll, который позволяет коду вне 1С подключиться к
информационной базе и работать с её объектами. ProgID зависит от версии платформы: для 8.3 это V83.COMConnector.
// Пример из внешней обработки или скрипта на BSL
Коннектор = Новый COMОбъект("V83.COMConnector");
Соединение = Коннектор.Connect(
"File=""C:\Bases\Buh"";Usr=""Экспорт"";Pwd=""пароль""");
// получили доступ к базе — дальше читаем данные
Запрос = Соединение.NewObject("Запрос");
Запрос.Текст = "ВЫБРАТЬ Номер, Дата, Контрагент, СуммаДокумента
|ИЗ Документ.РеализацияТоваровУслуг";
Выборка = Запрос.Execute().Select();
Прочитав выборку, данные пишут в Excel уже другим COM-объектом — Excel.Application. Этот же приём работает и внутри самой 1С, без промежуточного соединения с базой:
Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Add();
Лист = Книга.WorkSheets(1);
Стр = 1;
Пока Выборка.Следующий() Цикл
Лист.Cells(Стр, 1).Value = Выборка.Номер;
Лист.Cells(Стр, 2).Value = Выборка.Дата;
Лист.Cells(Стр, 3).Value = Строка(Выборка.Контрагент);
Лист.Cells(Стр, 4).Value = Выборка.СуммаДокумента;
Стр = Стр + 1;
КонецЦикла;
Книга.SaveAs("C:\Export\realizacii.xlsx");
Эксель.Quit();
Для V83.COMConnector нужно зарегистрировать компонент в системе: из папки платформы выполнить regsvr32 comcntr.dll от имени администратора. Для Excel.Application на машине должен быть установлен сам Excel — на сервере его обычно нет, поэтому серверные выгрузки чаще делают через ТабличныйДокумент.
Внутри 1С без COM тот же результат даёт встроенный объект:
ТабДок = Новый ТабличныйДокумент;
// ... заполнили ячейки через ТабДок.Область(...) ...
ТабДок.Записать("C:\Export\realizacii.xlsx",
ТипФайлаТабличногоДокумента.XLSX);
Этот вариант не требует ни Excel, ни COM и работает на сервере. Для регулярных выгрузок он надёжнее.
Выбор между тремя программными путями сводится к условиям:
- данные читает внешняя программа (планировщик Windows, другой сервис) →
V83.COMConnectorдля подключения к базе; - выгрузку запускает сама 1С, но файл должен открываться в Excel с формулами и графиками →
Excel.Application, при условии что Excel установлен; - выгрузка идёт на сервере или без гарантии наличия Excel →
ТабличныйДокумент.Записатьв*.xlsx.
На клиент-серверной базе регламентное задание выполняется на сервере 1С. Если в его коде обратиться к Excel.Application, а на сервере Excel не установлен, задание упадёт с ошибкой создания COM-объекта. Поэтому серверные выгрузки почти всегда делают через ТабличныйДокумент.
Текстовые форматы для обмена: CSV, TXT, MXL
Если файл едет не человеку, а в другую программу, выбирают универсальный текстовый формат. При сохранении табличного документа (Файл → Сохранить как) 1С предлагает, кроме Excel, такие типы:
| Формат | Когда брать |
|---|---|
*.xlsx | Открывают люди в Excel, нужны формулы и форматирование |
*.csv | Загрузка в другую учётную систему, базу данных |
*.txt | Простой текст с табуляцией, импорт в нестандартные системы |
*.mxl | Передача между базами 1С без потери оформления |
*.ods | Открывают в LibreOffice / OpenOffice Calc |
Для *.csv и *.txt помните про кодировку из раздела выше. Формат *.mxl — «родной» для 1С: его открывает только 1С, зато он сохраняет всё оформление табличного документа один в один.
Частые ошибки при экспорте и как их обойти
Большинство проблем — не в 1С, а в том, как Excel интерпретирует полученные данные.
Какой способ выбрать
Коротко, чтобы не держать в голове всё сразу:
- 👀 Посмотреть и посчитать разово — буфер обмена (
Ctrl+C/Ctrl+V). - 📄 Выгрузить список или отчёт человеку —
Файл → Сохранить как → *.xlsx. - 🔁 Передать в другую систему —
*.csvс контролем кодировки и разделителя. - ⚙️ Регулярно и автоматически —
ТабличныйДокумент.Записатьвнутри 1С; COM-соединение — только если выгрузку запускает внешняя программа.
Правило простое: чем реже и меньше выгрузка — тем проще способ. Для цифр «на один раз» хватит буфера, для файла коллеге — сохранения в *.xlsx, для интеграции — текстового формата или кода.
Частые вопросы
Можно ли выгрузить данные из 1С в уже существующий файл Excel, а не в новый?
Excel.Application, открыв книгу методом WorkBooks.Open и указав нужный лист и строку.Почему при выгрузке в Excel теряется часть колонок списка?
Еще → Изменить форму (или настройку списка) — после этого они попадут и в файл.Как выгрузить данные без установленного на компьютере Excel?
*.xlsx через Файл → Сохранить как — для этого Excel не нужен, 1С формирует файл сама. Открыть его потом можно в LibreOffice Calc или Google Таблицах. COM-объект Excel.Application — единственный способ, которому Excel обязателен.Можно ли настроить автоматическую выгрузку по расписанию?
ТабличныйДокумент и пишет его методом Записать в заданную папку. На сервере это предпочтительнее COM, потому что не требует Excel.В какой кодировке 1С сохраняет CSV?
Данные → Получить данные → Из CSV с явным указанием кодировки.