DBF из 1С: просмотр, правка и конвертация таблиц

· 10 мин

Содержание

Быстрее всего 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 напрямую.

  1. Запустите Excel и выберите Файл → Открыть → Обзор.
  2. В списке типов файлов выберите «Все файлы» или «Файлы dBase».
  3. Укажите нужный .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). Достаточно проверить пять мест заголовка:

  1. Байт 0 — версия формата. Значения 03, 83, 8B, F5, 30 нормальны. Любое другое — файл не DBF или повреждён.
  2. Байты 4–7 — число записей (little-endian).
  3. Байты 8–9 — длина заголовка.
  4. Байты 10–11 — длина одной записи.
  5. Байт 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.

По виду текста легко понять, что происходит:

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

Порядок действий такой:

  1. Откройте файл в LibreOffice, он покажет диалог выбора кодировки и предпросмотр.
  2. Переберите варианты CP866, Windows-1251, UTF-8, пока текст не станет читаемым.
  3. Запомните подходящую и укажите её в той программе, где будете работать дальше.
  4. При необходимости пересохраните файл в нужной кодировке и поправьте байт 29 в заголовке: 65 для CP866, C9 для Windows-1251. Тогда остальные программы определят её сами.

Чтение DBF из самой 1С и через ODBC

Для автоматической загрузки данных не нужен промежуточный просмотр. Есть два пути.

Объект XBase в 1С:Предприятии 8.3

В платформе есть встроенный объект XBase. Работа с ним идёт по обычной схеме:

  1. Создать объект: Таблица = Новый XBase;.
  2. Задать кодировку свойством Кодировка (значения вида КодировкаXBase.OEM или КодировкаXBase.ANSI).
  3. Открыть файл методом ОткрытьФайл, при необходимости указав файл индекса.
  4. Перебирать записи циклом Пока Не Таблица.ВКонце() Цикл, в конце цикла вызывая Следующая().
  5. Значения полей брать через коллекцию Поля объекта; имена полей смотрите в справке платформы по XBase.
  6. Закрыть файл методом Закрыть().

Эти операции выполняются на клиенте или на сервере, но файл должен быть доступен той стороне, где работает код. Если 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.

Разрядность драйвера должна совпадать с разрядностью программы, которая к нему обращается. Это самая частая причина ошибки «источник данных не найден и не указан драйвер по умолчанию».

Что вам нужно сделать с DBF?

Если файл не открывается или данные «потерялись»

Типичные ситуации и что с ними делать.

Программа пишет, что файл не является таблицей 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?
Для dBase это .dbt, для FoxPro — .fpt. Файл должен лежать в одной папке с .dbf и иметь то же имя.
Можно ли открыть DBF в Excel 64-bit?
Да, Excel открывает DBF самостоятельно, драйверы для этого не нужны. Разрядность важна только при подключении через ODBC.
Как понять, в какой кодировке хранится файл?
Откройте файл в HEX-редакторе и посмотрите байт 29: 65 — CP866, C9 — Windows-1251. Если там 00, подбирайте кодировку вручную в LibreOffice.
Почему в файле осталась «удалённая» запись, хотя я её убрал?
В DBF запись только помечается на удаление. Она остаётся в файле до упаковки (PACK), и в просмотрщиках с включённым показом удалённых её видно.
Можно ли восстановить повреждённый DBF?
Если оборван конец файла, часто удаётся прочитать записи до места обрыва просмотрщиком. Исправляют число записей в заголовке, но без копии оригинала лучше не экспериментировать.