DBF из 1С: просмотр, правка и конвертация таблиц
Содержание
Быстрее всего DBF открывается в Excel или LibreOffice Calc: файл подхватывается как обычная таблица. Если нужно править записи, смотреть memo-поля и индексы или работать с большими файлами, берут специальный просмотрщик (DBF Viewer 2000, DBF Commander, CDBF). Для автоматической обработки подключают ODBC-драйвер или читают файл прямо из 1С.
Выбор зависит от задачи. Просто посмотреть справочник БИК или выгрузку из банка — хватит Excel. Исправить десяток строк и сохранить в том же формате — просмотрщик. Загрузить данные в базу 1С — объект XBase или обработка загрузки.
Перед любой правкой сделайте копию файла. DBF не хранит историю изменений, а неудачное сохранение в Excel может испортить структуру.
Откуда в 1С берутся DBF и что внутри файла
Формат родом из dBase, потом его подхватили FoxPro и Clipper. В 1С он встречается в нескольких местах:
- 🗄 Базы 1С:Предприятия 7.7. Данные лежали в наборе DBF-файлов (справочники, документы, регистры) плюс
1Cv7.MDс описанием метаданных. - 🏦 Обмен с банками и внешними системами. Старые банк-клиенты, кассовое оборудование и складские программы выдают таблицы в DBF.
- 📄 Справочники и классификаторы. Часть общероссийских справочников годами распространялась именно в DBF.
- 📤 Выгрузки для сторонних программ. Некоторые отчётные модули и ЕГРН-сервисы просят данные в этом формате.
Файл состоит из трёх частей: заголовок (версия формата, число записей, длина записи), описание полей (имя до 10 символов, тип, длина) и сами записи фиксированной длины. Первый байт файла показывает «диалект»: 03 — dBase III без memo, 83 — с memo, F5 — FoxPro с memo, 30 — Visual FoxPro. Это пригодится, когда программа отказывается открывать файл.
Рядом с основным файлом могут лежать:
| Файл | Что хранит | Что будет, если потерять |
|---|---|---|
.dbt или .fpt | Текст memo-полей | Основные поля читаются, длинные тексты пропадают или файл не открывается |
.cdx, .mdx, .ntx | Индексы | Данные целы, но поиск медленнее; программы без поддержки индекса его игнорируют |
Поэтому копируйте и переносите весь комплект файлов с одним именем, а не только .dbf.
Excel и LibreOffice: быстрый просмотр без установки программ
Excel умеет открывать DBF напрямую.
- Запустите Excel и выберите
Файл → Открыть → Обзор. - В списке типов файлов выберите «Все файлы» или «Файлы dBase».
- Укажите нужный
.dbf. Таблица откроется сразу, без мастера импорта.
Что не понравится:
- 🔤 Кодировка выбирается автоматически и часто неверно. Русский текст превращается в «╨Ф╨░╨▓╨░╨╣» или «Ïðèâåò».
- 🔢 Длинные числовые коды (ИНН, номера счетов) превращаются в «1,23E+11», если Excel счёл их числом. Тип поля в DBF символьный, но результат зависит от версии Excel.
- 📎 Memo-поля читаются нестабильно.
- 💾 Сохранение обратно в DBF поддерживается только в формате dBase, длина имён полей урезается до 10 символов, а часть типов теряется.
LibreOffice Calc в этом смысле удобнее: при открытии DBF он спрашивает кодировку. Выберите «Кириллица (DOS/OEM-866)» или «Windows-1251» и сразу видите результат. Это самый простой способ подобрать кодировку, не лезя в байты.
Для разовой правки удобно открыть DBF в LibreOffice, исправить данные и сохранить как dBase (.dbf). Excel для этой задачи подходит хуже.
Специальные просмотрщики и редакторы DBF
Если с DBF приходится работать регулярно, ставьте отдельную программу. Они читают заголовок, сами определяют кодировку, показывают удалённые записи и позволяют менять структуру.
| Программа | Подходит для | Нюансы |
|---|---|---|
| DBF Viewer 2000 | Просмотр, правка, экспорт в Excel и CSV, SQL-запросы | Платная; бесплатная версия ограничивает число записей |
| DBF Commander | Правка, фильтры, работа с индексами | Платная, есть пробный период |
| CDBF | Русскоязычная, привычна администраторам 1С 7.7 | Платная с демо-режимом |
| Visual FoxPro | Полноценная работа с форматом, включая индексы и memo | Устарел, на новых Windows ставится с трудом |
Что стоит уметь делать в таких программах:
- 👁 Включить показ удалённых записей. В DBF запись не стирается физически, а помечается звёздочкой в первом байте. Пока не выполнена упаковка (
PACK), «пропавшие» данные можно вернуть. - 🔧 Переключать кодировку без перезаписи файла.
- 🔍 Фильтровать и искать по любому полю.
- 📊 Экспортировать в CSV, XLSX, XML, чтобы дальше работать другими инструментами.
Упаковка (PACK) удаляет помеченные записи навсегда. Выполняйте её только на копии и только когда уверены, что удалённые данные не нужны.
Просмотр содержимого без таблицы: текстовый редактор и HEX
Бывает, что ни одна программа не открывает файл: пишет «неверный формат» или «файл повреждён». Тогда помогает HEX-редактор (HxD, а в Notepad++ — плагин HEX-Editor). Достаточно проверить пять мест заголовка:
- Байт 0 — версия формата. Значения
03,83,8B,F5,30нормальны. Любое другое — файл не DBF или повреждён. - Байты 4–7 — число записей (little-endian).
- Байты 8–9 — длина заголовка.
- Байты 10–11 — длина одной записи.
- Байт 29 — идентификатор языкового драйвера:
65соответствует кодировке CP866,C9— Windows-1251,00— не указано.
Проверка простая. Размер файла должен примерно равняться длина заголовка + число записей × длина записи. Если файл заметно короче, он оборван при копировании или записи, и проще получить его заново, чем лечить.
Текстовый редактор годится, чтобы быстро увидеть названия полей и убедиться, что внутри действительно данные, а не HTML-страница ошибки, сохранённая под именем .dbf. Так часто бывает при скачивании с сайтов.
Не сохраняйте DBF в обычном текстовом редакторе. Двоичные байты заголовка будут испорчены, и файл станет нечитаемым.
Когда вместо файла нужен онлайн-конвертер
Если на компьютере нельзя ничего ставить, есть веб-сервисы, которые принимают DBF и отдают CSV или XLSX. Подходят они для необязательных данных.
Прежде чем загружать, взвесьте риски:
- 🔒 Файл уходит на чужой сервер. Для справочников и публичных выгрузок это нормально, для баз с персональными данными, зарплатой, остатками — нет.
- 📏 У бесплатных сервисов есть лимит на размер файла.
- 🔤 Кодировку многие определяют автоматически, и результат стоит проверять.
Для конфиденциальных данных надёжнее локальный путь: LibreOffice, просмотрщик или скрипт на Python.
import pandas as pd
from dbfread import DBF
table = DBF("data.dbf", encoding="cp866")
df = pd.DataFrame(iter(table))
df.to_csv("data.csv", index=False, encoding="utf-8-sig")
Этот скрипт читает файл с кодировкой CP866 и сохраняет таблицу в CSV, который Excel открывает без кракозябр. Библиотека ставится командой pip install dbfread pandas. Для Windows-1251 замените значение encoding.
Кракозябры вместо русского текста: как подобрать кодировку
Это самая частая проблема, и корень её простой: в DBF нет жёсткого правила, в какой кодировке хранить текст. В файлах из DOS-программ и 1С 7.7 чаще всего используется CP866 (OEM). Новые выгрузки нередко идут в Windows-1251.
По виду текста легко понять, что происходит:
Порядок действий такой:
- Откройте файл в LibreOffice, он покажет диалог выбора кодировки и предпросмотр.
- Переберите варианты CP866, Windows-1251, UTF-8, пока текст не станет читаемым.
- Запомните подходящую и укажите её в той программе, где будете работать дальше.
- При необходимости пересохраните файл в нужной кодировке и поправьте байт 29 в заголовке:
65для CP866,C9для Windows-1251. Тогда остальные программы определят её сами.
Чтение DBF из самой 1С и через ODBC
Для автоматической загрузки данных не нужен промежуточный просмотр. Есть два пути.
Объект XBase в 1С:Предприятии 8.3
В платформе есть встроенный объект XBase. Работа с ним идёт по обычной схеме:
- Создать объект:
Таблица = Новый XBase;. - Задать кодировку свойством
Кодировка(значения видаКодировкаXBase.OEMилиКодировкаXBase.ANSI). - Открыть файл методом
ОткрытьФайл, при необходимости указав файл индекса. - Перебирать записи циклом
Пока Не Таблица.ВКонце() Цикл, в конце цикла вызываяСледующая(). - Значения полей брать через коллекцию
Поляобъекта; имена полей смотрите в справке платформы поXBase. - Закрыть файл методом
Закрыть().
Эти операции выполняются на клиенте или на сервере, но файл должен быть доступен той стороне, где работает код. Если DBF лежит на вашем компьютере, а код идёт на сервере, платформа файл не увидит. Сначала перенесите его во временное хранилище или на сетевой ресурс, доступный серверу.
Альтернатива без программирования — готовые обработки «Загрузка данных из табличного документа» и подобные: сначала открываете DBF в Excel, сохраняете в XLSX, потом загружаете в 1С.
ODBC и OLE DB
Если данные читают другие системы (Access, Power BI, скрипты), используют драйверы:
- Microsoft dBase Driver (*.dbf). Есть только в 32-разрядном виде. Настраивать его нужно в 32-битном администраторе источников данных
C:\Windows\SysWOW64\odbcad32.exe. Если открыть обычныйodbcad32.exeиз панели управления, нужного драйвера в списке не будет. - Microsoft Access Database Engine. Устанавливается как отдельный компонент; читает dBase-файлы из 64-битных приложений.
- VFPOLEDB. Провайдер OLE DB для Visual FoxPro, умеет работать с memo, индексами и SQL-запросами к DBF.
Разрядность драйвера должна совпадать с разрядностью программы, которая к нему обращается. Это самая частая причина ошибки «источник данных не найден и не указан драйвер по умолчанию».
.dbt/.fpt рядом.XBase или конвертируйте в XLSX и загружайте обработкой.Если файл не открывается или данные «потерялись»
Типичные ситуации и что с ними делать.
Программа пишет, что файл не является таблицей DBF. Скорее всего, это CSV, HTML или архив с расширением .dbf. Откройте файл блокнотом: если видите читаемый текст со скобками и запятыми, это не DBF.
Не хватает данных из memo-полей. Рядом должен лежать файл .dbt (dBase) или .fpt (FoxPro) с тем же именем. Если его нет, длинные тексты утрачены. Запросите полный комплект у отправителя.
Записей меньше, чем ожидали. Проверьте, не включён ли фильтр. В просмотрщиках также стоит включить показ удалённых записей: часть «потерянных» строк окажется только помеченной на удаление.
Excel обрезал код или превратил его в число. Откройте файл не двойным щелчком, а через импорт данных с явным указанием типа столбца «Текст». Для ИНН и номеров счетов это обязательно.
Файл огромный и вешает компьютер. У Excel лимит около миллиона строк. Просмотрщики и ODBC-запросы с фильтром (SELECT ... WHERE) справляются с десятками миллионов записей.
Если DBF пришёл из 1С:Предприятия 7.7, сам по себе он редко нужен: справочники и документы лежат в десятках файлов, связанных через 1Cv7.MD. Для переноса данных в 8.3 используют штатные обработки конвертации, а не ручную работу с отдельными таблицами.
Какое расширение у memo-поля в DBF?
.dbt, для FoxPro — .fpt. Файл должен лежать в одной папке с .dbf и иметь то же имя.Можно ли открыть DBF в Excel 64-bit?
Как понять, в какой кодировке хранится файл?
65 — CP866, C9 — Windows-1251. Если там 00, подбирайте кодировку вручную в LibreOffice.Почему в файле осталась «удалённая» запись, хотя я её убрал?
PACK), и в просмотрщиках с включённым показом удалённых её видно.