Конвертация и выгрузка файлов 1С в другие форматы
Содержание
Формат файла в 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С — счёт, акт, оборотно-сальдовую ведомость — можно пересохранить в десяток форматов без всякого кода.
- Откройте печатную форму или отчёт на экране.
- Зайдите в
Главное меню → Файл → Сохранить как. - В окне сохранения раскройте список
Тип файлаи выберите нужный формат.
Доступны, в частности:
- 📄 Лист 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 только в совместимую базу; для переноса между разными конфигурациями используйте выгрузку в XML с правилами конвертации.windows-1251 для открытия в Excel двойным кликом, UTF-8 для веб-сервисов и баз данных.Файл → Сохранить как в .xlsx или .pdf.Частые вопросы
Можно ли открыть файл .dt без 1С?
Чем отличается `.dt` от выгрузки в XML?
.dt — это полная двоичная копия базы (данные и конфигурация), разворачивается только в совместимую конфигурацию. XML — переносимые данные, их можно загрузить в том числе в другую конфигурацию по правилам конвертации.Почему при сохранении в `.xls` пропала часть строк?
.xls) ограничен 65 536 строками. При большем объёме используйте .xlsx — там ограничение свыше миллиона строк.Как перенести данные из старой базы в новую конфигурацию?
.dt или простого XML между разными конфигурациями не работает.Можно ли конвертировать файлы пачкой, не открывая каждый?
НайтиФайлы, читает каждый документ и сохраняет в нужном формате, и запустите её регламентным заданием или через командную строку с ключом /Execute.