Конвертация и выгрузка файлов 1С в другие форматы

· 9 мин

Содержание

Формат файла в 1С меняют не кнопкой «Сохранить как» в проводнике и не переименованием расширения, а повторной выгрузкой через подходящий механизм. Печатную форму и отчёт пересохраняют прямо из программы через Главное меню → Файл → Сохранить как, данные между базами переносят выгрузкой в XML или .dt, а таблицы конвертируют обработками загрузки и выгрузки.

Выбор способа зависит от того, что за файл и зачем он нужен. Переименовать otchet.mxl в otchet.xlsx не получится: Excel такой файл не прочитает, потому что внутри лежит двоичный формат 1С, а не книга Excel. Ниже разобран каждый тип файла и корректный путь его конвертации.

Какие форматы файлов встречаются в 1С

Прежде чем менять формат, нужно понять, с чем вы имеете дело. Расширения в экосистеме 1С отвечают за разные задачи, и конвертация одного в другой возможна не всегда.

ФорматЧто этоКак сменить формат
.mxlтабличный документ 1С: печатные формы, отчётыФайл → Сохранить как или метод Записать()
.xlsx / .xlsкнига Excelсохранение табличного документа в Excel
.pdfнеизменяемый документ для печати и пересылкисохранение табличного документа в PDF
.dbfтаблица dBase, старый формат обменаобъект XBase в коде
.txt / .csvтекст с разделителямиЧтениеТекста / ЗаписьТекста, обработки загрузки
.xmlперенос данных между базамивыгрузка/загрузка данных, универсальный обмен
.dtполная двоичная копия информационной базыКонфигуратор → Администрирование
.cf / .cfeконфигурация и расширение конфигурацииКонфигуратор → Конфигурация

Ключевое правило: двоичные форматы 1С (.mxl, .dt, .cf) переименованием не конвертируются. Их открывают средствами 1С и пересохраняют в нужный вид. Текстовые и табличные форматы (.csv, .xlsx, .dbf) переносимы и читаются сторонними программами.

Выгрузка и загрузка данных через встроенные обработки

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

🔹 Выгрузка и загрузка данных XML — переносит данные между базами одинаковой конфигурации. Выгружает справочники и документы в .xml, на приёмнике загружает обратно. Подходит для «переезда» базы по частям.

🔹 Универсальный обмен данными в формате XML — переносит данные между разными конфигурациями по правилам конвертации (готовятся в отдельной конфигурации «Конвертация данных »). Именно он нужен, когда структура баз не совпадает.

🔹 Загрузка данных из табличного документа — читает .xlsx, .xls или .mxl и создаёт по строкам элементы справочников или документы. Обратная задача — выгрузка списка в Excel.

🔹 Формат EnterpriseData — единый формат обмена между современными конфигурациями на управляемых формах. На нём работает типовая синхронизация данных: правила уже встроены, и обмен, например, «Бухгалтерия ↔ Управление торговлей» идёт через XML этого формата без ручной подготовки конвертации.

Эти обработки распространяются как внешние файлы .epf. Чтобы запустить, в режиме 1С:Предприятие откройте Главное меню → Файл → Открыть и выберите файл обработки с диска.

В типовых конфигурациях (БП 3.0, ЗУП 3.1, УТ 11) часть загрузок уже встроена: в списках номенклатуры и контрагентов есть команда загрузки из внешнего файла прямо в командной панели. Если она там есть, внешняя обработка не нужна.

Как сохранить печатную форму или отчёт в другом формате

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

  1. Откройте печатную форму или отчёт на экране.
  2. Зайдите в Главное меню → Файл → Сохранить как.
  3. В окне сохранения раскройте список Тип файла и выберите нужный формат.

Доступны, в частности:

  • 📄 Лист Excel 2007 (*.xlsx) — современный формат, без ограничения на число строк.
  • 📄 Лист Excel (*.xls) — старый формат; пригодится для древних систем, но ограничен 65 536 строками.
  • 📄 Документ PDF (*.pdf) — для пересылки и печати, редактировать нельзя.
  • 📄 Табличный документ (*.mxl) — родной формат 1С, открывается только в 1С.
  • 📄 Текстовый документ (*.txt) — без форматирования и формул.

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

ТабДок = Отчёт.СформироватьТабличныйДокумент();
ТабДок.Записать("C:\Выгрузка\osv.xlsx", ТипФайлаТабличногоДокумента.XLSX);
ТабДок.Записать("C:\Выгрузка\osv.pdf",  ТипФайлаТабличногоДокумента.PDF);

Обратное чтение — метод Прочитать: он загружает .mxl и книги Excel в объект табличного документа для дальнейшей обработки.

Отдельный случай — выгрузка в Excel не отчёта, а обычного списка: номенклатуры, контрагентов, документов. Откройте нужный список, нажмите кнопку Ещё в командной панели и выберите команду вывода списка. 1С соберёт видимые колонки в табличный документ, который дальше сохраняется в .xlsx тем же Файл → Сохранить как. Так формат меняют без всякой обработки: список → таблица → Excel.

При сохранении в PDF 1С печатает документ как есть, по текущим настройкам полей и ориентации. Проверьте предпросмотр печати, иначе таблица обрежется по краю листа.

Конвертация таблиц DBF и текстовых файлов в коде

Когда формат надо менять регулярно или нестандартно, помогает встроенный язык. Для таблиц .dbf служит объект XBase. Чтение идёт построчно, конец файла проверяют методом ВКонце():

Xbase = Новый XBase;
Xbase.ОткрытьФайл("C:\Обмен\price.dbf");
ТЗ = Новый ТаблицаЗначений;
ТЗ.Колонки.Добавить("Код");
ТЗ.Колонки.Добавить("Цена");
Пока НЕ Xbase.ВКонце() Цикл
    Стр = ТЗ.Добавить();
    Стр.Код  = Xbase.Значение("CODE");
    Стр.Цена = Xbase.Значение("PRICE");
    Xbase.Следующая();
КонецЦикла;
Xbase.ЗакрытьФайл();

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

Обратная операция — создать .dbf из данных базы. Сначала описывают поля, затем построчно пишут значения:

Xbase = Новый XBase;
Xbase.Поля.Добавить("CODE",  "S", 20);
Xbase.Поля.Добавить("PRICE", "N", 15, 2);
Xbase.СоздатьФайл("C:\Обмен\out.dbf");
Для Каждого Товар Из ВыборкаТоваров Цикл
    Xbase.Добавить();
    Xbase.Значение("CODE")  = Товар.Код;
    Xbase.Значение("PRICE") = Товар.Цена;
    Xbase.Записать();
КонецЦикла;
Xbase.ЗакрытьФайл();

Тип поля задаётся буквой: S — строка, N — число, D — дата, L — булево. Для .dbf важна и кодировка: старые системы ждут windows-1251, её задают свойством Кодировка до создания файла.

Текстовые файлы и кодировки: CSV, TXT и смена кодировки

Самая частая боль при обмене текстом — «кракозябры». Причина почти всегда одна: файл записан в одной кодировке, а открыт в другой. 1С умеет перекодировать файл на лету.

Чтение и запись текста задают кодировку явным параметром. Чтобы, например, переложить файл из windows-1251 в UTF-8:

Чтение = Новый ЧтениеТекста("C:\Обмен\in.csv", "windows-1251");
Запись = Новый ЗаписьТекста("C:\Обмен\out.csv", "UTF-8");
Строка = Чтение.ПрочитатьСтроку();
Пока Строка <> Неопределено Цикл
    Запись.ЗаписатьСтроку(Строка);
    Строка = Чтение.ПрочитатьСтроку();
КонецЦикла;
Запись.Закрыть();
Чтение.Закрыть();

Для CSV важен не только набор символов, но и разделитель. В русской локали Excel по умолчанию разделяет столбцы точкой с запятой, а не запятой. Если выгружаете файл для открытия в Excel двойным кликом — используйте ;. Если файл уйдёт в веб-сервис или базу данных — чаще нужны запятая и кодировка UTF-8.

Ещё одна скрытая причина сбоев приёмника — маркер BOM в начале UTF-8-файла. Одни системы его требуют, другие воспринимают как мусор в первой строке. Если принимающая сторона жалуется на «лишние символы» в начале файла, запишите текст в UTF-8 без BOM и проверьте снова.

Ведущие нули и длинные числа (ИНН, артикулы, штрихкоды) Excel обрезает или превращает в экспоненту. Выгружайте такие поля как текст, заключая значение в кавычки, либо задавайте текстовый формат ячейки в табличном документе до выгрузки.

Выгрузка информационной базы в .dt и обмен через XML

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

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

То же самое из командной строки — удобно для скриптов и бэкапов. Для файловой базы:

1cv8.exe DESIGNER /F "C:\Bases\Buh" /N "Администратор" /P "пароль" /DumpIB "C:\Backup\buh.dt"

Для серверной базы вместо /F "путь" указывают /S "сервер\база". Восстановление — параметр /RestoreIB "C:\Backup\buh.dt".

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

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

Автоматизация конвертации: пакетный режим и расписание

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

Регламентное задание внутри базы. В модуле задания размещают код выгрузки — например, формирование .xlsx или .csv и сохранение в каталог обмена. Расписание настраивают в Администрирование → Обслуживание → Регламентные и фоновые задания. Для серверной базы задание выполняется автоматически; для файловой нужна запущенная сессия или отдельное приложение.

Пакетный запуск из командной строки. Выгрузку .dt или запуск обработки оформляют в .bat-файл и ставят в планировщик Windows. Запуск обработки без участия пользователя:

1cv8.exe ENTERPRISE /F "C:\Bases\Buh" /N "Робот" /P "пароль" /Execute "C:\Обработки\vygruzka.epf" /DisableStartupMessages

Добавьте к команде ключ /Out "C:\Logs\convert.log" — платформа запишет в этот файл сообщения о ходе выполнения, и после ночного прогона вы увидите, всё ли прошло без ошибок. Обработка внутри получает управление в модуле объекта и сама пишет файлы в нужном формате в цикле по данным. Так за один прогон можно перевести сотни печатных форм в PDF или весь справочник номенклатуры в CSV.

Для разовой массовой конвертации файлов на диске (например, пачки .mxl в .pdf) напишите обработку, которая перебирает каталог методом НайтиФайлы, читает каждый табличный документ Прочитать и сохраняет Записать с нужным типом. Цикл по файлам решает задачу без ручного открытия каждого.

Частые ошибки при смене формата

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

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

Можно ли открыть файл .dt без 1С?
Нет. Это внутренний двоичный формат платформы. Его читает и пишет только Конфигуратор 1С. Сторонних просмотрщиков нет.
Чем отличается `.dt` от выгрузки в XML?
.dt — это полная двоичная копия базы (данные и конфигурация), разворачивается только в совместимую конфигурацию. XML — переносимые данные, их можно загрузить в том числе в другую конфигурацию по правилам конвертации.
Почему при сохранении в `.xls` пропала часть строк?
Старый формат Excel (.xls) ограничен 65 536 строками. При большем объёме используйте .xlsx — там ограничение свыше миллиона строк.
Как перенести данные из старой базы в новую конфигурацию?
Через «Универсальный обмен данными в формате XML» с правилами конвертации. Прямая загрузка .dt или простого XML между разными конфигурациями не работает.
Можно ли конвертировать файлы пачкой, не открывая каждый?
Да. Напишите обработку, которая перебирает каталог методом НайтиФайлы, читает каждый документ и сохраняет в нужном формате, и запустите её регламентным заданием или через командную строку с ключом /Execute.