Выгрузка данных из 1С Предприятие: форматы и методы
Содержание
Чтобы выгрузить данные из 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С, её подключают как внешнюю (Файл → Открыть) или находят в составе типовых конфигураций.
Порядок выгрузки:
- Откройте обработку и перейдите на закладку выгрузки.
- Отметьте флажками объекты, которые нужно выгрузить: конкретные справочники, документы или целые ветки метаданных.
- Укажите путь к файлу
.xmlи запустите выгрузку. - В принимающей базе откройте ту же обработку и загрузите файл.
Ключевое условие: конфигурации базы-источника и базы-приёмника должны совпадать по структуре метаданных. Если в одной базе есть реквизит, которого нет в другой, загрузка завершится ошибкой или потеряет данные.
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 |
| Перенос объектов в такую же базу | Обработка выгрузки XML | XML |
| Обмен со старой программой, банком | Выгрузка через XBase | DBF |
| Автоматический доступ извне | COM-соединение / OLE | — |
| Регулярный обмен с другой конфигурацией | Синхронизация данных | EnterpriseData |
| Полная копия базы (бэкап) | Конфигуратор → выгрузить ИБ | DT |
Ещё → Вывести список) или сохраните отчёт через Файл → Сохранить как в формат XLSX. Настройка не нужна.XBase. Уточните структуру и кодировку файла у принимающей стороны.V83.COMConnector). Потребуется разработчик и права на подключение.Администрирование → Синхронизация данных, формат EnterpriseData.Частые ошибки при выгрузке и как их обойти
Большинство сбоев при экспорте предсказуемы и лечатся настройкой, а не доработкой.
.xls лимит 65 536 строк. Сохраняйте в .xlsx (до ~1 млн строк) или выгружайте данные порциями по периодам.OEM/866), а не ANSI. Переключите кодировку при создании файла.comcntr.dll не зарегистрирован. Приведите разрядность к одной и зарегистрируйте компонент.Перед выгрузкой персональных данных (ФИО, паспорта, зарплаты) во внешний файл убедитесь, что это допустимо по вашему регламенту обработки данных. Файл на диске защищён хуже, чем база.
Отдельно держите в голове: полная выгрузка информационной базы в файл .dt (Конфигуратор → Администрирование → Выгрузить информационную базу) — это бэкап всей базы целиком, а не выгрузка данных для обмена. Загрузить .dt можно только в пустую базу той же конфигурации, и она полностью затрёт существующую.
Частые вопросы
Можно ли выгрузить данные без прав администратора?
Чем отличается выгрузка в XML от синхронизации данных?
Как выгрузить всю базу 1С одним файлом?
Администрирование → Выгрузить информационную базу — получится файл .dt. Это полная копия базы для переноса или бэкапа, а не данные для стороннего приложения.Почему при выгрузке в Excel теряется часть строк?
.xls с лимитом 65 536 строк. Используйте .xlsx или дробите выгрузку на части.