Выгрузка базы 1С: .dt, XML, Excel и обмен с внешними системами

· 9 мин

Содержание

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

Быстрый ориентир. Перенос всей базы — выгрузка информационной базы в .dt из Конфигуратора. Регулярный обмен данными с другой базой 1С — планы обмена и XML. Отдать таблицу бухгалтеру или в банк — сохранение списка в Excel. Интеграция со сторонней системой — OData или внешнее соединение. Ниже разберём каждый путь с точными пунктами меню для платформы 8.3 (интерфейс «Такси»).

Что вы хотите экспортировать?

Выгрузка всей базы в файл .dt

Файл .dt — это снимок всей информационной базы: и конфигурации, и данных. Его переносят между компьютерами, отдают на доработку программисту, хранят как резервную копию. Для файловой и клиент-серверной базы способ одинаковый.

Через Конфигуратор:

  1. Запустите базу в режиме Конфигуратор.
  2. Попросите всех пользователей выйти — нужен монопольный доступ к базе. Если кто-то работает, выгрузка прервётся.
  3. Меню Администрирование → Выгрузить информационную базу.
  4. Укажите имя и папку для файла, нажмите Сохранить.

Обратная операция — Администрирование → Загрузить информационную базу. При загрузке текущее содержимое базы полностью заменяется, поэтому её выполняют только в чистую или в заведомо ненужную базу.

Загружать .dt можно на платформу той же версии или новее. На более старую платформу файл, выгруженный из новой, не встанет. Поэтому перед переносом сверьте номер версии платформы на обоих компьютерах: он должен быть не ниже, чем на той базе, где создавали файл.

Из командной строки то же самое делает Конфигуратор в пакетном режиме:

"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /F"C:\Bases\Buh" /DumpIB "D:\backup\buh.dt"

Для файловой базы путь задаётся ключом /F, для серверной — /S сервер\база. Этот же вызов удобно ставить в планировщик (см. раздел про автоматизацию).

Отдельно про резервные копии файловой базы. В типовых конфигурациях (например, Бухгалтерия 3.0) есть Администрирование → Обслуживание → Резервное копирование и восстановление. Этот механизм сохраняет копию прямо из режима 1С:Предприятие, без Конфигуратора, и умеет делать копии по расписанию. Для клиент-серверной базы на SQL Server резервные копии правильнее настраивать средствами самой СУБД.

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

Когда нужно не всю базу, а конкретные объекты — справочники контрагентов, документы за период, остатки, — используют XML. Это основной формат обмена данными внутри экосистемы 1С.

Есть несколько механизмов, выбор зависит от задачи:

  • Планы обмена. Штатный способ для регулярной синхронизации двух баз. Настраивается в разделе Администрирование → Синхронизация данных (в типовых конфигурациях). Данные выгружаются в XML-файлы и загружаются на приёмнике по правилам обмена.
  • Распределённая информационная база (РИБ). Частный случай плана обмена: главная база и подчинённые узлы обмениваются изменениями через файлы XML. Подходит для филиалов с нестабильной связью.
  • Типовая обработка выгрузки и загрузки данных XML. Внешняя обработка, которая умеет выгрузить выбранные объекты в XML и загрузить их в другую базу той же конфигурации. Удобна для разовых переносов, когда полноценный план обмена настраивать избыточно.

Для разовой выгрузки из кода подойдёт сериализация объектов. Простой пример — выгрузка одного элемента справочника в файл:

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

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

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

Самый частый бытовой экспорт — отдать таблицу в файл Excel. В 1С для этого не нужны обработки: любой список и любой отчёт выводятся в табличный документ, а тот сохраняется в .xlsx.

Из любого журнала или списка справочника:

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

Так же сохраняется любой отчёт: сформировали — и Сохранить как в нужном формате. Кроме Excel доступны PDF, HTML, ODF (для LibreOffice/OpenOffice) и «родной» формат 1С — .mxl.

Если принимающая программа ждёт не Excel, а текст с разделителями, табличный документ сохраняют в CSV через тот же диалог Сохранить как. Учтите две вещи: выгружается только видимое представление таблицы (объединённые ячейки и оформление в CSV теряются), а длинные числа и коды Excel при открытии может показать в экспоненциальном виде — для таких колонок заранее задайте текстовый формат на стороне приёмника.

Табличный документ и формат MXL

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

Когда выбирать какой формат при сохранении:

ФорматКогда использовать
.xlsxТаблицу будут править в Excel, считать формулами
.mxlНужно сохранить вид печатной формы 1С «как есть» и открыть снова в 1С
.pdfДокумент на подпись или в архив, без правок
.htmlВставка в письмо или на сайт

Из кода табличный документ выгружается методом Записать. Тип файла задаётся перечислением:

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

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

Экспорт через OData и внешнее соединение

Когда данные забирает не человек и не другая база 1С, а сторонняя система — сайт, CRM, аналитика, — прямой доступ к таблицам базы не используют. У файловой базы .1CD нет стандартного SQL-интерфейса, а в серверной базе на SQL Server таблицы названы техническими именами и их структура меняется при обновлении конфигурации. Читать их напрямую через ODBC — ненадёжно.

Правильных путей два.

Стандартный интерфейс OData. 1С отдаёт данные по протоколу REST/OData через веб-сервер. Внешняя программа читает справочники, документы и регистры по HTTP. Включается так:

  1. Опубликуйте базу на веб-сервере (Apache или IIS) из Конфигуратора: Администрирование → Публикация на веб-сервере.
  2. В режиме 1С:Предприятие откройте Администрирование → Настройка стандартного интерфейса OData и отметьте объекты, которые разрешено отдавать наружу.
  3. Внешняя система обращается к адресу публикации с суффиксом /odata/standard.odata/ и получает данные в формате Atom/JSON.

OData отдаёт данные под конкретным пользователем базы. Заведите для внешней системы отдельного пользователя с минимальными правами — только на чтение нужных объектов, — чтобы интеграция не могла изменить базу.

Внешнее соединение (COM). Объект V83.COMConnector позволяет подключиться к базе из внешней программы или скрипта и работать с её объектами средствами встроенного языка. Подходит для серверных сценариев на Windows, когда OData избыточен. Требует установленной платформы и регистрации компоненты.

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

Какой из двух путей выбрать? OData удобен, когда данные забирает веб-приложение или облачный сервис по сети и важна независимость от версии платформы. Внешнее соединение быстрее для локальных скриптов на том же сервере, где стоит 1С, но жёстко привязано к установленной платформе и правам пользователя Windows. Для публичного API почти всегда берут OData.

Автоматизация выгрузки по расписанию

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

Файловая база — bat плюс планировщик. Создайте .bat-файл с пакетным вызовом Конфигуратора (пример был в разделе про .dt) и добавьте его в Планировщик заданий Windows на нужное время — обычно ночью, когда в базе никто не работает .

set DT=%date:~6,4%-%date:~3,2%-%date:~0,2%
"C:\Program Files\1cv8\common\1cv8.exe" DESIGNER /F"C:\Bases\Buh" /DumpIB "D:\backup\buh_%DT%.dt" /DisableStartupMessages

Переменная %DT% подставляет дату в имя файла, чтобы копии не затирали друг друга. Ключ /DisableStartupMessages убирает всплывающие окна при пакетном запуске.

Результат пакетной выгрузки стоит контролировать. Конфигуратор возвращает код завершения: ноль — успех, иное значение — ошибка. В bat-файле его проверяют через %ERRORLEVEL% и, например, шлют уведомление администратору, если выгрузка сорвалась. Так вы узнаете о проблеме сразу, а не в день, когда копия понадобится для восстановления.

Пакетная выгрузка .dt тоже требует монопольного доступа. Если ночью кто-то оставил базу открытой, задание завершится с ошибкой. Для круглосуточной работы надёжнее серверные бэкапы на уровне СУБД.

Клиент-серверная база . Копии базы на SQL Server настраивают планом обслуживания в самой СУБД — это не нагружает платформу 1С и не требует монопольного доступа.

XML-обмен. Регулярную синхронизацию через планы обмена ставят на регламентное задание внутри базы: Администрирование → Синхронизация данных → расписание. Платформа сама выгружает изменения в заданные часы.

Перед автоматической выгрузкой проверьте
Выполнено: 0 / 4

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

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

Ещё одно частое недоразумение: пользователи путают выгрузку .dt с архивом файла базы. Скопировать файл .1CD можно, но только когда база закрыта и к ней никто не подключён. Копия работающей файловой базы может оказаться повреждённой. Штатная выгрузка .dt этого недостатка лишена — она делается из самой платформы.

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

Чем отличается выгрузка .dt от копирования файла 1Cv8.1CD?
.dt — это согласованный снимок базы, созданный платформой; его можно развернуть на любой подходящей платформе. Копия .1CD — это сырой файл базы, который должен быть закрыт в момент копирования, иначе копия может повредиться. Для переноса надёжнее .dt.
Можно ли экспортировать данные из Бухгалтерии сразу в Управление торговлей?
Напрямую — нет: это разные конфигурации с разной структурой объектов. Нужен обмен с правилами конвертации либо выгрузка таблиц в промежуточный формат (Excel, XML) и загрузка по своим правилам.
Как выгрузить только документы за определённый период?
Через план обмена или типовую обработку выгрузки XML с отбором по дате. Для просмотра человеком проще отфильтровать журнал по периоду и сохранить список в Excel.
Нужны ли права администратора, чтобы выгрузить базу в .dt?
Для выгрузки через Конфигуратор нужны права на административные функции и монопольный доступ к базе. Обычному пользователю без прав администрирования выгрузка информационной базы недоступна.
Как часто делать резервную копию базы?
Для активно используемой базы — ежедневно, в автоматическом режиме. Копии держат за несколько дней назад и хотя бы раз в месяц проверяют, что файл разворачивается в рабочую базу.