Как выгрузить данные из 1С в Excel, XML и другие форматы
Содержание
Самый частый повод для паники — «в 1С нет кнопки Экспорт». Её и правда нет под таким названием, но выгрузить можно почти всё: список документов, отчёт, справочник, движения регистра. Любой список и любой отчёт сохраняются во внешний файл за два-три клика, а регулярные выгрузки ставятся на расписание.
Форматов несколько, и путают их чаще всего именно новички. Для человека, который откроет файл глазами, нужен xlsx или pdf. Для загрузки в другую программу — csv, xml или json. Для переноса между базами 1С — не файл выгрузки отчёта, а обмен через планы обмена. Ниже — как сделать каждый вариант и где обычно спотыкаются.
С чего начать: какой формат выгрузки выбрать
Выбор формата зависит не от того, что красивее, а от того, кто и чем будет открывать файл. Ошибка на этом шаге стоит дорого: выгрузили «красивый» xlsx со шапкой и объединёнными ячейками, а бухгалтер на той стороне не может загрузить его в свою программу.
Короткая логика выбора:
- 📊 Excel (
xlsx,ods) — для просмотра человеком, ручной правки, печати, пересылки. - 📄 PDF — когда файл нельзя менять: акт сверки контрагенту, отчёт на подпись.
- 🔢 CSV — для загрузки в банк-клиент, маркетплейс, стороннюю учётную систему.
- 🧩 XML — структурированный обмен: выгрузка для другой базы 1С, госсистемы, оператора.
- 🌐 JSON — обмен с веб-сервисами и современными API.
- 🗂 Табличный документ (
mxl) — родной формат 1С, открывается только в 1С, сохраняет всё оформление.
xlsx). Выгружается из любого списка и отчёта, открывается где угодно.Если файл нужен «чтобы посмотреть», почти всегда правильный ответ — Excel. Усложнять есть смысл только когда на той стороне стоит программа, которая ждёт конкретный формат.
Как выгрузить список или отчёт в Excel
Это самый массовый сценарий, и он работает одинаково почти везде в 1С 8.3 с интерфейсом «Такси».
Любой список (документы, справочник, журнал):
- Откройте нужный список, например
Продажи → Реализация (акты, накладные). - При необходимости отфильтруйте строки и настройте колонки через
Еще → Настроить список. - Нажмите
Еще → Вывести список. - В окне выберите, какие колонки выгружать, и подтвердите — данные лягут в табличный документ.
- В этом документе: главное меню
Файл → Сохранить как, тип файла — «Лист Excel 2007 (*.xlsx)».
Любой отчёт:
- Сформируйте отчёт (
Отчёты → …), дождитесь построения. - Главное меню
Файл → Сохранить как. - Выберите формат:
xlsx,ods,pdf,mxl,html. - Укажите папку и имя файла.
Перед выгрузкой проверьте отбор и период отчёта — иначе в файл попадут лишние строки или, наоборот, не все данные.
Чем сохранение отчёта отличается от «Вывести список »: отчёт выгружается с группировками, итогами и оформлением как на экране, а «Вывести список» даёт плоскую таблицу строк — её удобнее загружать дальше в другую программу.
Если нужно быстро перекинуть пару колонок в уже открытый 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) настраивается в разделе администрирования.
Типичный каркас обработки-выгрузки по шагам:
- Запрос собирает нужные данные из таблиц.
- Результат обходится в цикле.
- Строки пишутся в файл выбранного формата.
- Файл кладётся в согласованную папку или отправляется получателю.
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, ограничивайте список объектов и закрывайте доступ отдельной учётной записью с минимальными правами. Открывать весь состав «на всякий случай» нельзя.
Типичные ошибки при экспорте и как их обойти
Большинство проблем выгрузки — это не сбой программы, а несогласованный формат или неверные ожидания.
UTF-8, иногда Windows-1251 — и выгрузите в ней.; или ,) и формат даты до выгрузки.Файл → Сохранить как.Как ускорить выгрузку большого объёма данных
На сотнях тысяч строк «выгрузить всё одной кнопкой» превращается в зависший сеанс. Скорость экономят не магией, а правильным подходом к данным.
- Собирайте данные запросом, а не обходом объектов. Чтение через
ПолучитьОбъект()в цикле на больших объёмах медленное — запрос к таблицам на порядок быстрее. - Выгружайте только нужные поля. Лишние колонки и реквизиты раздувают и запрос, и файл.
- Дробите на порции. Миллион строк лучше отдать пачками (например, по дате или по диапазону), чем одним куском, который упирается в память.
- Запускайте тяжёлую выгрузку в фоновом задании. Пользовательский сеанс не виснет, а работа идёт на сервере.
- Планируйте на нерабочее время. Регулярные большие выгрузки ставьте на ночь, когда база не занята пользователями.
- Не держите весь результат в памяти. Пишите строки в файл по мере обхода выборки, а не накапливайте гигантскую таблицу значений целиком перед записью.
Если выгрузка каждый раз отдаёт все данные с начала времён, добавьте отбор по дате изменения и отдавайте только новые и изменённые строки. Объём файла и время падают в разы.
Можно ли выгрузить данные из 1С без программиста?
Еще → Вывести список и Файл → Сохранить как. Программист нужен только для обменов, API и нестандартных форматов файлов.