Как выгрузить данные из 1С в Excel, XML и другие форматы

· 9 мин

Содержание

Самый частый повод для паники — «в 1С нет кнопки Экспорт». Её и правда нет под таким названием, но выгрузить можно почти всё: список документов, отчёт, справочник, движения регистра. Любой список и любой отчёт сохраняются во внешний файл за два-три клика, а регулярные выгрузки ставятся на расписание.

Форматов несколько, и путают их чаще всего именно новички. Для человека, который откроет файл глазами, нужен xlsx или pdf. Для загрузки в другую программу — csv, xml или json. Для переноса между базами 1С — не файл выгрузки отчёта, а обмен через планы обмена. Ниже — как сделать каждый вариант и где обычно спотыкаются.

С чего начать: какой формат выгрузки выбрать

Выбор формата зависит не от того, что красивее, а от того, кто и чем будет открывать файл. Ошибка на этом шаге стоит дорого: выгрузили «красивый» xlsx со шапкой и объединёнными ячейками, а бухгалтер на той стороне не может загрузить его в свою программу.

Короткая логика выбора:

  • 📊 Excel (xlsx, ods) — для просмотра человеком, ручной правки, печати, пересылки.
  • 📄 PDF — когда файл нельзя менять: акт сверки контрагенту, отчёт на подпись.
  • 🔢 CSV — для загрузки в банк-клиент, маркетплейс, стороннюю учётную систему.
  • 🧩 XML — структурированный обмен: выгрузка для другой базы 1С, госсистемы, оператора.
  • 🌐 JSON — обмен с веб-сервисами и современными API.
  • 🗂 Табличный документ (mxl) — родной формат 1С, открывается только в 1С, сохраняет всё оформление.
Кому и зачем нужен файл?

Если файл нужен «чтобы посмотреть», почти всегда правильный ответ — Excel. Усложнять есть смысл только когда на той стороне стоит программа, которая ждёт конкретный формат.

Как выгрузить список или отчёт в Excel

Это самый массовый сценарий, и он работает одинаково почти везде в 1С 8.3 с интерфейсом «Такси».

Любой список (документы, справочник, журнал):

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

Любой отчёт:

  1. Сформируйте отчёт (Отчёты → …), дождитесь построения.
  2. Главное меню Файл → Сохранить как.
  3. Выберите формат: xlsx, ods, pdf, mxl, html.
  4. Укажите папку и имя файла.

Перед выгрузкой проверьте отбор и период отчёта — иначе в файл попадут лишние строки или, наоборот, не все данные.

Чем сохранение отчёта отличается от «Вывести список »: отчёт выгружается с группировками, итогами и оформлением как на экране, а «Вывести список» даёт плоскую таблицу строк — её удобнее загружать дальше в другую программу.

Если нужно быстро перекинуть пару колонок в уже открытый Excel, файл сохранять не обязательно: выделите строки в табличном документе 1С, скопируйте Ctrl+C и вставьте на лист Excel. Для разовой задачи это быстрее, но типы ячеек и оформление переносятся не всегда корректно — для аккуратной выгрузки используйте Сохранить как.

Объединённые ячейки, подзаголовки и итоги в xlsx мешают автоматической загрузке. Если файл поедет в стороннюю систему, выгружайте плоский список без оформления или сразу в CSV.

Экспорт в CSV для загрузки в другие программы

CSV — это текст, где строки разделены переводом строки, а колонки — разделителем (точка с запятой или запятая). Банки, маркетплейсы и бухгалтерские сервисы чаще всего ждут именно его.

Получить CSV можно двумя путями:

  • Через отчёт или список. Файл → Сохранить как → тип «Текстовый документ с разделителями (*.csv)» (если он доступен для этой формы) либо сначала в xlsx, затем пересохранить в Excel как CSV.
  • Через обработку выгрузки, если формат файла строго задан принимающей стороной (порядок колонок, кодировка, разделитель).

Главная засада CSV — кодировка и разделитель. Если принимающая программа ждёт UTF-8, а вы отдали файл в Windows-1251, кириллица превратится в «кракозябры». Разделитель тоже уточняйте заранее: где-то это ;, где-то ,.

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

Экспорт в XML и обмен между базами 1С

Здесь чаще всего возникает путаница. «Сохранить отчёт в XML» и «выгрузить данные для другой базы 1С» — это разные задачи.

Если нужен просто файл отчёта в XML — Файл → Сохранить как, выбрать XML. Получите разметку конкретной печатной формы, пригодную для просмотра, но не для загрузки в учётную систему.

Если нужно перенести данные между базами 1С (справочники, документы, остатки), файл выгрузки отчёта не подойдёт. Используйте один из штатных механизмов:

  • Планы обмена — настраиваются в разделе Администрирование → Синхронизация данных. Подходят для регулярного двустороннего обмена между типовыми конфигурациями.
  • Универсальный формат EnterpriseData — общий XML-формат, на котором построена синхронизация современных типовых решений. Базы договариваются о структуре заранее.
  • Типовая обработка выгрузки-загрузки данных в XML — для разовых переносов отдельных объектов, когда полноценный обмен настраивать избыточно.

Своими силами XML собирают сериализацией объекта встроенного языка:

ЗаписьXML = Новый ЗаписьXML;
ЗаписьXML.ОткрытьФайл("C:\exchange\nomenclature.xml");
СериализаторXDTO.ЗаписатьXML(ЗаписьXML, ОбъектСсылка.ПолучитьОбъект());
ЗаписьXML.Закрыть();

Такой файл содержит все реквизиты объекта и читается обратно через СериализаторXDTO.ПрочитатьXML. Но если на той стороне тоже 1С, настроенный обмен почти всегда надёжнее ручной сериализации — он сам следит за ссылками и порядком загрузки.

XML чувствителен к структуре. Принимающая сторона должна знать схему (какие теги и в каком порядке), иначе файл не загрузится. Схему согласовывают до первой выгрузки, а не после.

Автоматизация: обработки, внешние отчёты и расписание

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

Внешняя обработка (.epf) — отдельный файл с кодом выгрузки. Открывается через Файл → Открыть, не требует изменения конфигурации, легко переносится между базами. В ней пишут логику: собрать данные запросом и записать в файл нужного формата.

Внешний отчёт (.erf) — то же самое, но для формирования отчётных табличных документов, которые потом сохраняются в xlsx/pdf.

Регламентное задание — ставит обработку на расписание. Для файловых баз задание выполняется, пока открыт сеанс; для клиент-серверных работает на сервере без участия пользователя. Расписание (например, ежедневно в 23:00) настраивается в разделе администрирования.

Типичный каркас обработки-выгрузки по шагам:

  1. Запрос собирает нужные данные из таблиц.
  2. Результат обходится в цикле.
  3. Строки пишутся в файл выбранного формата.
  4. Файл кладётся в согласованную папку или отправляется получателю.

JSON средствами языка формируется так:

ЗаписьJSON = Новый ЗаписьJSON;
ЗаписьJSON.ОткрытьФайл("C:\exchange\orders.json");
ЗаписатьJSON(ЗаписьJSON, ДанныеСтруктура);
ЗаписьJSON.Закрыть();

Здесь ДанныеСтруктура — заранее собранная структура или массив структур; платформа сама превратит их в корректный JSON.

Не прописывайте путь к папке в коде жёстко. Вынесите его в константу или параметр обработки — при переносе на другой компьютер не придётся править и перекомпилировать.

Выгрузка через API: OData и веб-сервисы

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

  • Стандартный интерфейс OData (REST) — включается при публикации базы на веб-сервере. Внешняя система обращается по HTTP и получает данные справочников, документов и регистров в формате JSON или atom/xml. Состав доступных объектов настраивается, чтобы не открывать наружу лишнее.
  • Собственные HTTP- и Web-сервисы — когда нужен не «сырой» доступ к таблицам, а конкретная операция: «отдай остатки по складу X на дату Y». Логику такого сервиса пишет программист, наружу торчит только нужный метод.

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

Это уже территория разработчика и администратора: публикация требует настроенного веб-сервера и прав на базу.

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

Типичные ошибки при экспорте и как их обойти

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

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

Как ускорить выгрузку большого объёма данных

На сотнях тысяч строк «выгрузить всё одной кнопкой» превращается в зависший сеанс. Скорость экономят не магией, а правильным подходом к данным.

  • Собирайте данные запросом, а не обходом объектов. Чтение через ПолучитьОбъект() в цикле на больших объёмах медленное — запрос к таблицам на порядок быстрее.
  • Выгружайте только нужные поля. Лишние колонки и реквизиты раздувают и запрос, и файл.
  • Дробите на порции. Миллион строк лучше отдать пачками (например, по дате или по диапазону), чем одним куском, который упирается в память.
  • Запускайте тяжёлую выгрузку в фоновом задании. Пользовательский сеанс не виснет, а работа идёт на сервере.
  • Планируйте на нерабочее время. Регулярные большие выгрузки ставьте на ночь, когда база не занята пользователями.
  • Не держите весь результат в памяти. Пишите строки в файл по мере обхода выборки, а не накапливайте гигантскую таблицу значений целиком перед записью.

Если выгрузка каждый раз отдаёт все данные с начала времён, добавьте отбор по дате изменения и отдавайте только новые и изменённые строки. Объём файла и время падают в разы.

Можно ли выгрузить данные из 1С без программиста?
Да. Любой список и любой отчёт сохраняются в Excel или PDF штатными средствами через Еще → Вывести список и Файл → Сохранить как. Программист нужен только для обменов, API и нестандартных форматов файлов.
Чем отличается «Вывести список» от сохранения отчёта?
«Вывести список» даёт плоскую таблицу строк — её удобно загружать в другую программу. Сохранение отчёта переносит группировки, итоги и оформление как на экране.
Как сделать так, чтобы выгрузка шла автоматически по расписанию?
Нужна обработка выгрузки и регламентное задание с расписанием. В клиент-серверной базе оно отработает без пользователя; в файловой — только при открытом сеансе.
Почему Excel-файл из 1С не загружается в стороннюю систему?
Как правило, мешают объединённые ячейки, шапка и итоги. Выгрузите плоский список без оформления или в CSV с согласованными кодировкой и разделителем.
Как перенести справочники и документы в другую базу 1С?
Не файлом выгрузки отчёта, а синхронизацией: планы обмена и универсальный формат в разделе синхронизации данных, либо типовая обработка выгрузки-загрузки в XML для разовых переносов.