Экспорт из 1С в Excel: от буфера обмена до COM-соединения

· 9 мин

Содержание

Проще всего скопировать данные из 1С в Excel так: выделить строки в списке или таблице, нажать Ctrl+C, перейти в Excel и вставить через Ctrl+V. Для одного взгляда на цифры этого хватает. Но как только таблица большая или её нужно сохранять регулярно, буфер обмена начинает терять колонки, ломать даты и превращать длинные коды в 1,23E+11.

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

Буфер обмена: когда нужно быстро и немного

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

  1. Откройте список (например, Продажи → Реализации или любой справочник).
  2. Выделите нужные строки: мышью с зажатым Shift, либо Ctrl+A для всех видимых.
  3. Нажмите Ctrl+C.
  4. В Excel встаньте на ячейку A1 и нажмите Ctrl+V.

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

Хотите больше колонок — сначала настройте список: команда Еще → Изменить форму (или Еще → Настроить список), добавьте нужные поля, и только потом копируйте. Что на экране — то и в буфере.

Тот же Ctrl+C работает и внутри документа. Если нужно выгрузить не весь список, а, например, товары из одной накладной — откройте документ, встаньте на табличную часть «Товары», выделите строки и скопируйте. В буфер попадут видимые колонки табличной части. Это удобно, когда Excel нужен для разовой проверки спецификации, а не всей базы.

Минус буфера в том, что числа и даты вставляются как текст в том виде, в каком они показаны. Если в 1С стоит разделитель разрядов (1 234,56), Excel может не распознать это как число. Перед копированием больших сумм проверьте, как Excel их принял: если число прижато влево — это текст, считать по нему нельзя.

Сохранение списка в файл Excel

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

  1. В списке нажмите кнопку Еще в командной панели.
  2. Выберите команду вывода списка (Вывести список...).
  3. В открывшемся окне отметьте, какие колонки выгружать, и выберите вид — табличный документ.
  4. Нажмите «ОК». 1С сформирует табличный документ — это внутренний аналог листа Excel.
  5. В окне табличного документа откройте главное меню (кнопка со значком меню слева вверху) → Файл → Сохранить как.
  6. В поле «Тип файла» выберите Лист Microsoft Excel 2007 (*.xlsx) и сохраните.

Формат *.xlsx предпочтителен: он хранит и числа, и даты как значения, а не как текст. Старый *.xls берите только если файл открывают в очень старой версии Excel.

Этот же приём работает для журналов документов и для результатов любого отчёта — всё, что в 1С выглядит как таблица, внутри является табличным документом и сохраняется одинаково.

Выгрузка отчёта в Excel без потери форматирования

Отчёты (оборотно-сальдовая ведомость, анализ счёта, карточка и любые на СКД) выгружаются чище всего, потому что уже оформлены как табличный документ с группировками.

  1. Сформируйте отчёт кнопкой «Сформировать».
  2. Главное меню окна → Файл → Сохранить как, либо просто Ctrl+S в окне отчёта.
  3. Тип файла — Лист 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С, зато он сохраняет всё оформление табличного документа один в один.

Перед регулярной выгрузкой проверьте
Выполнено: 0 / 5

Частые ошибки при экспорте и как их обойти

Большинство проблем — не в 1С, а в том, как Excel интерпретирует полученные данные.

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

Какой способ выбрать

Коротко, чтобы не держать в голове всё сразу:

  • 👀 Посмотреть и посчитать разово — буфер обмена (Ctrl+C / Ctrl+V).
  • 📄 Выгрузить список или отчёт человеку — Файл → Сохранить как → *.xlsx.
  • 🔁 Передать в другую систему — *.csv с контролем кодировки и разделителя.
  • ⚙️ Регулярно и автоматически — ТабличныйДокумент.Записать внутри 1С; COM-соединение — только если выгрузку запускает внешняя программа.

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

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

Можно ли выгрузить данные из 1С в уже существующий файл Excel, а не в новый?
Штатное сохранение из 1С всегда создаёт новый файл. Дописать данные в конкретный лист существующей книги можно только через COM-объект Excel.Application, открыв книгу методом WorkBooks.Open и указав нужный лист и строку.
Почему при выгрузке в Excel теряется часть колонок списка?
1С выгружает только те колонки, что видны на форме. Добавьте нужные реквизиты через Еще → Изменить форму (или настройку списка) — после этого они попадут и в файл.
Как выгрузить данные без установленного на компьютере Excel?
Сохраняйте в *.xlsx через Файл → Сохранить как — для этого Excel не нужен, 1С формирует файл сама. Открыть его потом можно в LibreOffice Calc или Google Таблицах. COM-объект Excel.Application — единственный способ, которому Excel обязателен.
Можно ли настроить автоматическую выгрузку по расписанию?
Да, через регламентное задание в 1С, которое формирует ТабличныйДокумент и пишет его методом Записать в заданную папку. На сервере это предпочтительнее COM, потому что не требует Excel.
В какой кодировке 1С сохраняет CSV?
Зависит от версии платформы и выбранного при сохранении типа файла. Чтобы не гадать, не открывайте CSV двойным кликом, а импортируйте через Данные → Получить данные → Из CSV с явным указанием кодировки.