Выгрузка информации из 1С: от Excel до REST-интерфейса

· 9 мин

Содержание

Самый частый случай — выгрузить список документов или готовый отчёт в Excel: это делается за два клика командой Ещё → Вывести список, программист не нужен. Если же данные нужно перенести в другую базу 1С или отдать внешней программе, в ход идут XML, JSON, COM-соединение, REST-интерфейс OData и выгрузка базы через Конфигуратор.

Способ зависит от того, что именно вы выгружаете и куда. Разовый список — в файл Excel. Регулярный обмен с сайтом или сторонним сервисом — через OData или внешнюю обработку . Полный перенос базы на другой компьютер — файл .dt. Ниже разобран каждый способ с точными путями меню и примерами.

Сохранение списков и отчётов в Excel

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

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

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

  • 📊 *.xlsx — лист Excel 2007 и новее;
  • 📄 *.ods — таблица OpenDocument (LibreOffice/OpenOffice);
  • 🧩 *.mxl — родной формат табличного документа 1С;
  • 🖨 *.pdf — документ для печати и пересылки;
  • *.txt, *.html — текст и веб-страница.

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

Полезные мелочи, которые ускоряют работу:

  • выгрузить можно не весь список, а только отмеченные строки — выделите нужные с зажатым Ctrl, и в файл попадёт выборка;
  • если файл нужен для правки, берите xlsx или ods; если только для просмотра и печати — pdf, его не изменят по дороге;
  • колонки в диалоге Вывести список можно переставлять и отключать — в файл уйдёт ровно то, что отметили, а не весь набор реквизитов.

Выгрузка списка на десятки тысяч строк может подвесить сеанс и съесть память. Перед выводом ограничьте список отбором по периоду или по организации — так файл сформируется быстрее и откроется в Excel без зависаний.

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

Выгрузка в XML и JSON для обмена

XML — универсальный формат переноса данных между базами 1С и обмена со сторонними системами. Есть несколько путей.

Стандартная обработка «Выгрузка загрузка данных XML». Она выгружает объекты базы (справочники, документы, регистры) в один файл XML по составу метаданных и загружает их в другую базу той же конфигурации. Обработка поставляется на диске ИТС; открывается через Файл → Открыть. Подходит для переноса части данных — например, только справочника контрагентов и номенклатуры.

Универсальный обмен в формате XML. Работает по правилам обмена (файл с расширением .xml), которые описывают соответствие объектов двух конфигураций. Используется, когда структуры баз различаются.

Выгрузка в коде. Если нужен нестандартный формат, данные сериализуют программно — объектами ЗаписьXML и СериализаторXDTO или средствами JSON. Встроенная поддержка JSON появилась в платформе 8.3.6: объекты ЗаписьJSON, ЧтениеJSON и функция ЗаписатьJSON.

Минимальный пример выгрузки произвольных данных в JSON (запускается во внешней обработке или в модуле):

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

Здесь Данные — структура или массив, собранные запросом к базе. JSON удобен, когда принимающая сторона — веб-сервис или мобильное приложение .

Для обмена между двумя базами одной и той же конфигурации проще всего XML-обработка с диска ИТС. Свой формат (XML или JSON) пишут, когда данные уходят во внешнюю систему со своими требованиями к структуре файла.

Внешние обработки для регулярной выгрузки

Внешняя обработка (.epf) — это готовый инструмент выгрузки, который не меняет конфигурацию и запускается поверх любой базы. Способ открыть зависит от того, как обработка подключается.

Разовый запуск. Файл → Открыть, выбрать файл .epf. Обработка откроется как обычная форма — настраиваете отбор и жмёте кнопку выгрузки.

Постоянное подключение. Обработку можно зарегистрировать как дополнительную — тогда она доступна из интерфейса без ручного открытия файла. В «1С:Бухгалтерии 3.0» это Администрирование → Печатные формы, отчёты и обработки → Дополнительные отчёты и обработки. Потребуется включённый флажок использования дополнительных обработок в настройках этого же раздела.

Автоматизация по расписанию. Внешнюю обработку с методом ВыполнитьЗадание можно повесить на регламентное задание — тогда выгрузка в файл будет формироваться ночью сама, без участия пользователя. Это рабочий вариант для ежедневной отдачи данных в сторонний сервис.

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

Внешние обработки — золотая середина: гибче, чем ручное сохранение в Excel, и не требуют правок конфигурации, которые слетают при обновлении.

COM-соединение и OLE для связи с другими программами

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

Два варианта доступа:

ОбъектЧто делаетКогда брать
V83.COMConnectorСерверный контекст без форм, быстроЧтение и запись данных из скрипта
V83.ApplicationЗапускает полноценный клиент 1СНужны формы и интерактив

Регистрация компоненты. Перед первым использованием зарегистрируйте библиотеку COM-соединения (запуск от администратора):

regsvr32 "C:\Program Files\1cv8\8.3.XX.XXXX\bin\comcntr.dll"

Номер версии подставьте свой — это каталог установленной платформы.

Подключение к файловой базе из скрипта (VBScript):

Set Connector = CreateObject("V83.COMConnector")
Set Base = Connector.Connect("File=""C:\Bases\Buh"";Usr=""Администратор"";Pwd="""";")
' дальше обращаемся к объектам базы: Base.Справочники, Base.Документы, Base.Запрос

Для серверной базы вместо File= указывают Srvr= (адрес сервера) и Ref= (имя базы).

Разрядность comcntr.dll должна совпадать с разрядностью вызывающей программы. 32-разрядный Excel не подключится к 64-разрядной компоненте — зарегистрируйте библиотеку из каталога bin платформы той же разрядности.

Каждое COM-соединение занимает сеанс и лицензию, как обычный пользователь. Для нагруженного обмена это учитывают при планировании числа лицензий.

REST-интерфейс OData

Начиная с платформы 8.3.5, 1С умеет автоматически отдавать данные по протоколу OData — это REST-интерфейс поверх HTTP, удобный для сайтов, мобильных приложений и облачных сервисов. Код в конфигурации писать не нужно, достаточно настроек.

Порядок включения:

  1. Опубликуйте базу на веб-сервере: Конфигуратор → Администрирование → Публикация на веб-сервере.
  2. В этом же окне включите флажок публикации стандартного интерфейса OData.
  3. Задайте состав интерфейса — какие справочники, документы и регистры отдавать наружу. Делается в Конфигураторе через настройку состава стандартного интерфейса OData.

Как забрать данные. Список доступных сущностей вернёт корневой адрес:

http://server/base/odata/standard.odata/

Конкретный справочник в формате JSON:

http://server/base/odata/standard.odata/Catalog_Номенклатура?$format=json

OData понимает фильтры и отбор: $filter, $select, $top. Это позволяет выгрузить не всю таблицу, а только нужные поля и строки — например, товары одной группы. Запрос с отбором и выбором полей выглядит так:

.../odata/standard.odata/Catalog_Номенклатура?$format=json&$select=Code,Description&$top=100

Такой адрес вернёт код и наименование первых ста элементов номенклатуры — ровно то, что нужно внешнему каталогу, без лишних реквизитов и без нагрузки на базу.

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

Способ современный и не нагружает пользователей: внешняя система сама забирает данные по HTTP, когда ей нужно.

Выгрузка базы целиком через Конфигуратор

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

Путь: Конфигуратор → Администрирование → Выгрузить информационную базу. Укажите имя файла .dt — в него попадут и данные, и конфигурация целиком.

Загружается такой файл в пустую или совместимую базу через Конфигуратор → Администрирование → Загрузить информационную базу. Загрузка полностью затирает содержимое базы-приёмника — не загружайте .dt в рабочую базу с данными.

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

Чем .dt отличается от обычной архивной копии файловой базы:

  • 📦 .dt — платформенная выгрузка, переносится между разными ОС и типами баз (файловая ↔ серверная);
  • 💾 архивная копия файловой базы — это просто копия файла 1Cv8.1CD, работает только в той же среде.

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

Отдельно стоит выгрузка конфигурации без данных — Конфигуратор → Конфигурация → Выгрузить конфигурацию в файл (формат .cf). Это нужно разработчику для переноса доработок между базами, а не для выгрузки учётных данных. Если задача в том, чтобы забрать справочники и документы, .cf не подходит — используйте XML-обработку или .dt.

Как выбрать способ и не ошибиться

Коротко по задачам: разовая таблица — Excel; перенос между базами 1С — XML-обработка; обмен с внешней системой — OData или JSON; переезд базы целиком — .dt.

Какой способ выгрузки подойдёт в вашем случае?

Частые промахи, из-за которых выгрузка не идёт:

  • выгрузка огромного списка в Excel зависает — ставьте отбор по периоду, а не грузите всё;
  • COM-компонента не подключается — не совпала разрядность comcntr.dll и вызывающей программы;
  • OData возвращает пустоту — объект не включён в состав стандартного интерфейса;
  • .dt не грузится — версия платформы приёмника ниже, чем у источника; номер платформы должен быть не ниже исходного.

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

Можно ли выгрузить данные из 1С без программиста?
Да. Любой список и любой готовый отчёт сохраняются в Excel через Ещё → Вывести список и Файл → Сохранить как. Доработка конфигурации для этого не нужна.
В каком формате выгружать данные для переноса в другую базу 1С?
Для одинаковых конфигураций — XML через стандартную обработку «Выгрузка загрузка данных XML». Для переезда всей базы — файл .dt через Конфигуратор.
Чем выгрузка .dt отличается от резервной копии базы?
.dt — это платформенная выгрузка, её можно развернуть на другой ОС и в базе другого типа (файловой или серверной). Архивная копия файловой базы — просто копия файла 1Cv8.1CD, она привязана к той же среде.
Как настроить выгрузку по расписанию?
Через внешнюю обработку, подключённую к регламентному заданию, либо через OData, когда данные по графику забирает внешний сервис. Пользователям при этом ничего делать не нужно.
Нужна ли лицензия для COM-соединения?
Да. Каждое COM-соединение занимает сеанс и лицензию, как обычный пользователь. При частом обмене это учитывают в общем количестве лицензий.