Выгрузка данных из 1С Предприятие: форматы и методы

· 9 мин

Содержание

Чтобы выгрузить данные из 1С, в большинстве случаев хватает одной кнопки: откройте нужный список или отчёт и сохраните его в Excel через Файл → Сохранить как. Но «выгрузить данные» — это широкий запрос: кому-то нужен файл для бухгалтера, кому-то обмен с другой базой по XML, кому-то выгрузка в DBF для старой банковской программы, а кому-то прямой доступ к базе из внешнего приложения через OLE.

Способ зависит от того, что на выходе: таблица для человека, файл для переноса в такую же базу 1С или поток данных для чужой системы. Ниже — все рабочие методы экспорта для 1С 8.3 с точными путями меню, фрагментами кода и разбором ошибок, на которые чаще всего натыкаются.

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

Самый частый сценарий — вытащить данные в Excel. Для этого ничего настраивать не нужно.

Выгрузка любого списка. Откройте журнал документов , справочник или список (например, Продажи → Реализация (акты, накладные)). Нажмите Ещё → Вывести список. 1С предложит выбрать колонки и тип вывода — выберите Табличный документ. Полученную таблицу сохраните через Файл → Сохранить как.

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

В окне сохранения доступны форматы:

  • 📊 Лист Excel 2007 (*.xlsx) — основной, до ~1 млн строк;
  • 📄 Лист Excel (*.xls) — старый формат, лимит 65 536 строк;
  • 📑 Документ ODF (*.ods) — для LibreOffice/OpenOffice;
  • 🗎 Документ PDF (*.pdf) — для печати и пересылки без изменений;
  • Табличный документ (*.mxl) — родной формат 1С, открывается только в 1С;
  • Текстовый документ (*.txt) и Веб-страница (*.html).

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

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

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

Тип файла задаётся перечислением ТипФайлаТабличногоДокумента: кроме XLSX доступны XLS, ODF, PDF, MXL, HTML, TXT — тот же набор, что и в окне сохранения. Это удобно для внешних обработок, которые формируют выгрузку по кнопке.

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

Обмен через XML: перенос объектов между базами

XML — формат для переноса данных между информационными базами 1С. Он сохраняет структуру объектов: справочники, документы, их реквизиты и ссылки друг на друга.

Штатный инструмент — обработка «Выгрузка и загрузка данных XML». Это стандартная обработка от фирмы 1С, её подключают как внешнюю (Файл → Открыть) или находят в составе типовых конфигураций.

Порядок выгрузки:

  1. Откройте обработку и перейдите на закладку выгрузки.
  2. Отметьте флажками объекты, которые нужно выгрузить: конкретные справочники, документы или целые ветки метаданных.
  3. Укажите путь к файлу .xml и запустите выгрузку.
  4. В принимающей базе откройте ту же обработку и загрузите файл.

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

XML-обмен переносит объекты «как есть», вместе с внутренними идентификаторами (GUID). Не используйте его для слияния двух рабочих баз с пересекающимися данными — получите дубли. Для этого есть синхронизация.

Порядок выгрузки важен: если выгружаете документы, которые ссылаются на справочники (контрагентов, номенклатуру), эти справочники тоже должны попасть в файл или уже существовать в приёмнике. Иначе при загрузке ссылки окажутся «битыми». Обработка умеет выгружать объект вместе со всеми зависимостями — для этого при отборе включают выгрузку по ссылкам.

После загрузки проверьте результат выборочно: откройте несколько перенесённых документов и убедитесь, что реквизиты и суммы на месте, а ссылки открываются. Молчаливая потеря части данных при несовпадении структур — типичный исход неаккуратного XML-обмена.

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

Выгрузка в DBF для старых программ и банков

Формат DBF (dBase) до сих пор встречается в обмене с банк-клиентами, старыми учётными программами и ведомственными системами. В 1С 8.3 работа с DBF идёт через встроенный объект XBase.

Простой пример выгрузки справочника в DBF:

ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.OEM; // DOS-кодировка (866)
ДБФ.Поля.Добавить("CODE", "S", 9);
ДБФ.Поля.Добавить("NAME", "S", 50);
ДБФ.СоздатьФайл("C:\Обмен\spr.dbf");

Выборка = Справочники.Контрагенты.Выбрать();
Пока Выборка.Следующий() Цикл
    ДБФ.Добавить();
    ДБФ.CODE = Выборка.Код;
    ДБФ.NAME = Выборка.Наименование;
    ДБФ.Записать();
КонецЦикла;

ДБФ.ЗакрытьФайл();

Ключевой момент — кодировка. Большинство старых программ ждут DOS-кодировку (OEM, она же 866). Если выгрузить в ANSI (windows-1251), принимающая сторона покажет «кракозябры». Формат имени поля в DBF ограничен: до 10 символов, латиница.

Точную структуру DBF-файла (имена и длину полей) всегда берите из описания формата принимающей стороны — у банка это документация к системе ДБО. Угадывать поля бессмысленно: файл с неверной структурой просто не загрузится.

DBF — это нишевый, но живой формат. Если контрагент требует именно его, других вариантов обычно нет.

Прямой экспорт через OLE и COM-соединение

Когда данные нужно забирать из 1С регулярно и автоматически — например, во внешний скрипт, Excel с макросом или чужую программу, — используют OLE-подключение.

Есть два механизма:

  • COM-соединение (V83.COMConnector) — внешняя программа подключается к базе без запуска интерфейса 1С, в фоне. Быстрее и легче.
  • Automation-сервер (V83.Application) — внешняя программа запускает полноценный экземпляр 1С. Медленнее, но доступен весь функционал прикладного решения.

Пример подключения и чтения данных из VBScript:

Set Connector = CreateObject("V83.COMConnector")
Set Conn = Connector.Connect("Srvr=""server"";Ref=""buh"";Usr=""Экспорт"";Pwd=""***""")

Set Выборка = Conn.Справочники.Номенклатура.Выбрать()
Do While Выборка.Следующий()
    WScript.Echo Выборка.Код & " " & Выборка.Наименование
Loop

Обратная задача — выгрузить из 1С в Excel напрямую, тоже через OLE, но уже из встроенного языка:

Эксель = Новый COMОбъект("Excel.Application");
Книга = Эксель.WorkBooks.Add();
Лист = Книга.WorkSheets(1);
Лист.Cells(1, 1).Value = "Контрагент";
// ... заполнение ячеек в цикле
Книга.SaveAs("C:\Обмен\report.xlsx");
Эксель.Quit();

Для COM-соединения критична разрядность: 32-битный клиент не подключится к 64-битному comcntr.dll и наоборот. Если возникает «Неизвестная ошибка при создании COMConnector» — проверьте, что разрядность внешней программы и компонента 1С совпадает, и что компонент зарегистрирован.

При работе через COM-соединение внешняя программа действует от имени указанного пользователя 1С и видит ровно те данные, к которым у этого пользователя есть права. Поэтому под автоматические выгрузки заводят отдельного пользователя с минимально необходимыми правами на чтение — так доступ не выходит за рамки задачи.

OLE даёт максимум гибкости, но требует программиста и прав доступа. Для одноразовой задачи это избыточно — проще выгрузить список в Excel.

Универсальный обмен: EnterpriseData и правила конвертации

Для регулярного обмена между разными конфигурациями (например, «Бухгалтерия» ↔ «Управление торговлей») XML-выгрузки недостаточно: структуры баз различаются. Здесь работает универсальный формат EnterpriseData.

Это тоже XML, но описанный по единой схеме, не зависящей от конкретной конфигурации. Настраивается обмен в разделе Администрирование → Синхронизация данных. Там задаётся, какие объекты и по каким правилам уходят в файл или напрямую в другую базу.

Когда стандартных правил не хватает, данные перекладывают через конфигурацию «Конвертация данных » (редакции 2.0 и 3.0). В ней вручную описывают соответствие: какой реквизит источника ложится в какой реквизит приёмника — например, код номенклатуры источника в артикул приёмника, а контрагент сопоставляется по ИНН, а не по внутренней ссылке.

Главное отличие от простой XML-выгрузки — сопоставление идёт по бизнес-данным (ИНН, коды, наименования), а не по внутренним идентификаторам объектов. Поэтому обмен работает между базами, которые ведут учёт независимо.

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

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

Какой способ выгрузки выбрать

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

ЗадачаСпособФормат
Таблица для человека, разовоВывод списка / сохранение отчётаXLSX, PDF
Перенос объектов в такую же базуОбработка выгрузки XMLXML
Обмен со старой программой, банкомВыгрузка через XBaseDBF
Автоматический доступ извнеCOM-соединение / OLE—
Регулярный обмен с другой конфигурациейСинхронизация данныхEnterpriseData
Полная копия базы (бэкап)Конфигуратор → выгрузить ИБDT
Что вы делаете с выгруженными данными?

Частые ошибки при выгрузке и как их обойти

Большинство сбоев при экспорте предсказуемы и лечатся настройкой, а не доработкой.

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

Перед выгрузкой персональных данных (ФИО, паспорта, зарплаты) во внешний файл убедитесь, что это допустимо по вашему регламенту обработки данных. Файл на диске защищён хуже, чем база.

Отдельно держите в голове: полная выгрузка информационной базы в файл .dt (Конфигуратор → Администрирование → Выгрузить информационную базу) — это бэкап всей базы целиком, а не выгрузка данных для обмена. Загрузить .dt можно только в пустую базу той же конфигурации, и она полностью затрёт существующую.

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

Можно ли выгрузить данные без прав администратора?
Да. Вывод списка в Excel и сохранение отчётов доступны обычному пользователю — для этого нужны только права на просмотр самих данных. XML-обмен, OLE и синхронизацию обычно настраивает администратор.
Чем отличается выгрузка в XML от синхронизации данных?
XML-обработка переносит объекты между идентичными базами разово и вручную. Синхронизация (EnterpriseData) работает между разными конфигурациями, по расписанию и двусторонне, но требует настройки правил.
Как выгрузить всю базу 1С одним файлом?
Через Конфигуратор: Администрирование → Выгрузить информационную базу — получится файл .dt. Это полная копия базы для переноса или бэкапа, а не данные для стороннего приложения.
Почему при выгрузке в Excel теряется часть строк?
Скорее всего, сохранение шло в старый формат .xls с лимитом 65 536 строк. Используйте .xlsx или дробите выгрузку на части.
Нужна ли лицензия на отдельное рабочее место для COM-соединения?
Фоновое COM-соединение занимает лицензию в кластере, как обычный сеанс. Если лицензий впритык, регулярные подключения стоит планировать так, чтобы не блокировать работу пользователей.