Файлы с расширением .DBF (Database File) — это стандартный формат хранения табличных данных, который активно используется в 1С:Предприятие для обмена информацией между конфигурациями, выгрузки отчетов или интеграции с внешними системами. Несмотря на появление более современных форматов вроде XML или JSON, DBF остаётся востребованным благодаря своей простоте, компактности и поддержке во всех версиях 1С — от 7.7 до 8.3.

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

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

1. Что такое DBF и почему он важен для 1С

Формат DBF (Database File) был разработан компанией Ashton-Tate для СУБД dBASE ещё в 1980-х годах, но благодаря своей простоте и универсальности он до сих пор используется в современных системах. В контексте 1С:Предприятие DBF выполняет несколько ключевых функций:

  • 📤 Обмен данными между разными конфигурациями 1С (например, выгрузка справочников из 1С:Бухгалтерии в 1С:Зарплату).
  • 📊 Экспорт отчетов в табличном виде для дальнейшей обработки в Excel или других программах.
  • 🔄 Интеграция с устаревшими системами, которые не поддерживают современные форматы обмена.
  • 📂 Хранение промежуточных данных при миграции или резервном копировании.

В 1С:Предприятие 7.7 DBF был основным форматом для работы с данными, а в 1С:Предприятие 8.x его роль несколько уменьшилась, но не исчезла. Например, в типовой конфигурации 1С:Бухгалтерия 3.0 выгрузка данных в ПФР или ФНС часто происходит именно в DBF. Кроме того, многие банки и госорганы до сих пор принимают отчетность в этом формате.

Особенность DBF в том, что он хранит данные в бинарном виде, что обеспечивает высокую скорость чтения/записи, но требует корректной обработки кодировок (особенно при работе с кириллицей). В 1С для этого предусмотрены специальные механизмы, о которых мы поговорим далее.

📊 С какой целью вы чаще всего работаете с DBF в 1С?
Обмен данными между базами
Импорт справочников от контрагентов
Экспорт отчетов для госорганов
Интеграция со старыми системами
Другое

2. Встроенные механизмы 1С для чтения DBF

Платформа 1С:Предприятие 8.x имеет встроенные инструменты для работы с DBF, которые не требуют установки дополнительных компонент. Эти механизмы подходят для большинства типовых задач, но имеют ограничения — например, не поддерживают некоторые редкие форматы DBF (например, Visual FoxPro с мемо-полями).

2.1. Чтение DBF через объект «ТаблицаЗначений»

Самый простой способ прочитать DBF — использовать метод ПрочитатьDBF объекта ТаблицаЗначений. Этот метод автоматически преобразует данные из DBF в таблицу, с которой можно дальше работать в 1С.

Пример кода:

// Создаем новую таблицу значений

ТаблицаДанных = Новый ТаблицаЗначений;

// Читаем DBF-файл

ТаблицаДанных.ПрочитатьDBF("C:\Обмен\СправочникКонтрагентов.dbf");

// Выводим результат в сообщение (для проверки)

Сообщить("Прочитано строк:" + ТаблицаДанных.Количество);

Этот метод подходит для файлов с простой структурой, где не требуется ручная настройка типов данных. Однако он не обрабатывает ошибки кодировки — если в DBF используется нестандартная кодировка (например, CP866 вместо UTF-8), данные могут отобразиться кракозябрами.

2.2. Использование объекта «DBF» (для 1С 7.7 и совместимости)

В 1С:Предприятие 7.7 и частично в 8.x (в режиме совместимости) можно работать с DBF через объект DBF. Этот способ даёт больше контроля над процессом чтения, но требует знания структуры файла.

Пример:

DBF = СоздатьОбъект("DBF");

Если DBF.ОткрытьФайл("C:\Обмен\Товары.dbf") Тогда

Пока DBF.СледующаяЗапись Цикл

КодТовара = DBF.Получить("Код");

Наименование = DBF.Получить("Наименование");

Сообщить(КодТовара +" |" + Наименование);

КонецЦикла;

DBF.ЗакрытьФайл;

КонецЕсли;

Этот метод удобен, если нужно обработать только часть данных из DBF или применить дополнительную логику при чтении. Однако в 1С 8.3 он считается устаревшим, и лучше использовать ТаблицаЗначений.ПрочитатьDBF.

☑️ Подготовка к чтению DBF в 1С

Выполнено: 0 / 4

3. Чтение DBF через внешние обработки

Если встроенные механизмы 1С не подходят (например, из-за нестандартного формата DBF или необходимости обработки больших файлов), можно использовать внешние обработки. Они предлагают расширенные возможности, такие как:

  • 🔍 Предпросмотр структуры DBF перед чтением.
  • 🔄 Конвертация кодировок на лету (например, из CP866 в UTF-8).
  • 📈 Обработка больших файлов (более 100 000 строк) без зависаний.
  • 🛠️ Исправление повреждённых DBF (восстановление заголовков, удаление битых записей).

Ниже приведены наиболее популярные обработки, которые можно бесплатно скачать с порталов Infostart или 1С:ИТС.

3.1. Обработка «Универсальный обмен данными в формате DBF»

Эта обработка позволяет:

  • 📂 Выбирать файлы DBF через диалоговое окно.
  • 👁️ Просматривать структуру полей до чтения.
  • 🔄 Настраивать соответствие полей DBF и реквизитов 1С.
  • 📥 Импортировать данные в справочники, документы или регистры.

Скачать её можно на Infostart (указать ID обработки). После загрузки её нужно подключить в 1С через Файл → Открыть.

3.2. Обработка «DBF Мастер»

«DBF Мастер» — более продвинутый инструмент, который поддерживает:

  • 📊 Работу с мемо-полями (длинные тексты).
  • 🔍 Поиск и фильтрацию данных внутри DBF.
  • 📤 Экспорт данных обратно в DBF с настройкой структуры.
  • 🛡️ Проверку целостности файла перед чтением.

Эта обработка платная, но имеет бесплатную демо-версию с ограничением на количество строк. Подходит для регулярной работы с DBF, особенно если файлы приходят от разных контрагентов с разной структурой.

💡

Если при чтении DBF в 1С появляются вопросы знаки вместо кириллицы, попробуйте в настройках обработки указать кодировку CP866 (OEM) или Windows-1251. Часто это решает проблему без дополнительных конвертаций.

4. Чтение DBF через внешние утилиты (если 1С не справилась)

В некоторых случаях — например, если DBF повреждён или имеет нестандартную структуру — встроенные средства 1С и обработки могут не справиться. Тогда на помощь приходят внешние утилиты, которые позволяют просмотреть и отредактировать DBF перед импортом в 1С.

Преимущества этого подхода:

  • 🔧 Восстановление повреждённых файлов (например, с битыми заголовками).
  • 📋 Ручное редактирование данных перед загрузкой в 1С.
  • 🔄 Конвертация в другие форматы (CSV, XLSX) для дальнейшей обработки.

4.1. DBF Viewer 2000

DBF Viewer 2000 — бесплатная утилита для просмотра и редактирования DBF-файлов. Она поддерживает:

  • 📂 Все версии DBF (dBASE III/IV, FoxPro, Visual FoxPro).
  • 🔍 Поиск и замену данных.
  • 📥 Экспорт в CSV, XLS, XML.
  • 🛠️ Восстановление структуры повреждённых файлов.

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

4.2. Excel + плагин для работы с DBF

Если у вас установлен Microsoft Excel, можно открыть DBF напрямую через него:

  1. Откройте Excel.
  2. Перейдите в Файл → Открыть.
  3. В поле «Тип файлов» выберите Файлы dBase (*.dbf).
  4. Выберите нужный файл и нажмите Открыть.

Excel автоматически преобразует DBF в таблицу, которую потом можно сохранить в XLSX или CSV и загрузить в 1С через ЗагрузкаДанныхИзТабличногоДокумента.

⚠️ Внимание: При открытии DBF в Excel данные с типом Date могут отобразиться некорректно (например, дата «01.01.2023» станет «31.12.1899»). Всегда проверяйте формат ячеек после импорта!

5. Чтение DBF программно (для разработчиков 1С)

Если вы разрабатываете собственные решения на и нужно гибко работать с DBF, можно использовать внешние компоненты или COM-объекты. Этот способ требует знаний программирования, но даёт максимальный контроль над процессом.

5.1. Использование COM-объекта «ADODB.Connection»

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

Пример кода:

Попытка

Соединение = Новый COMОбъект("ADODB.Connection");

Соединение.ConnectionString ="Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Обмен\;Extended Properties=""dBASE IV;""";

Соединение.Open;

Запрос = Новый COMОбъект("ADODB.Recordset");

Запрос.Open("SELECT * FROM Справочник.dbf", Соединение);

ТаблицаРезультат = Новый ТаблицаЗначений;

ТаблицаРезультат.Колонки.Добавить("Код");

ТаблицаРезультат.Колонки.Добавить("Наименование");

Пока Не Запрос.EOF Цикл

НоваяСтрока = ТаблицаРезультат.Добавить;

НоваяСтрока.Код = Запрос.Fields("Код").Value;

НоваяСтрока.Наименование = Запрос.Fields("Наименование").Value;

Запрос.MoveNext;

КонецЦикла;

Соединение.Close;

Исключение

Сообщить("Ошибка при чтении DBF:" + ОписаниеОшибки);

КонецПопытки;

Этот метод работает быстро и надёжно, но требует установленного Microsoft Jet OLE DB Provider (входит в состав Microsoft Access или MDAC).

5.2. Работа с DBF через внешнюю компоненту «DBF.dll»

Для сложных задач (например, работы с мемо-полями или файлами Visual FoxPro) можно подключить специализированную DLL. Одна из самых популярных — DBF.dll от WhiteTown Software.

Пример подключения:

// Подключаем внешнюю компоненту

DBF = Новый COMОбъект("DBF.DBFComponent");

// Открываем файл

DBF.Open("C:\Обмен\Товары.dbf");

// Читаем данные

Пока DBF.EOF = 0 Цикл

Код = DBF.GetField("Код");

Наименование = DBF.GetField("Наименование");

Сообщить(Код +" -" + Наименование);

DBF.Next;

КонецЦикла;

// Закрываем файл

DBF.Close;

Преимущества этого метода:

  • 🔧 Поддержка всех версий DBF, включая FoxPro.
  • 📈 Высокая скорость чтения больших файлов.
  • 🛠️ Встроенные функции восстановления повреждённых файлов.
⚠️ Внимание: При использовании внешних компонент убедитесь, что они совместимы с вашей версией 1С и разрядностью системы (x86 или x64). Некоторые DLL могут не работать в 1С:Предприятие 8.3.20+ из-за ужесточения политики безопасности.

6. Типичные ошибки при чтении DBF и как их исправить

При работе с DBF в 1С пользователи часто сталкиваются с типичными ошибками. Разберём самые распространённые и способы их решения.

Ошибка Причина Решение
Ошибка при открытии файла DBF: неверный формат Файл повреждён или имеет нестандартную структуру (например, создан в Visual FoxPro) Используйте внешнюю утилиту (например, DBF Viewer 2000) для восстановления или конвертации в CSV
Вместо кириллицы отображаются кракозябры (например, Номенклатура) Несовпадение кодировок (в DBF — CP866, в 1С — UTF-8) Укажите кодировку вручную при чтении или конвертируйте файл через Notepad++ с плагином ConvertEncoding
Поле не найдено в DBF Опечатка в имени поля или регистрозависимый поиск (в DBF имена полей могут быть в верхнем регистре) Проверьте структуру DBF через ТаблицаЗначений.ПрочитатьDBF или внешнюю утилиту
1С зависает при чтении большого DBF (более 50 000 строк) Недостаточно памяти или не оптимизирован код чтения Читайте файл порциями (например, по 10 000 строк) или используйте внешнюю обработку с поддержкой потокового чтения
Дата в DBF отображается как 1899-12-30 Неправильная интерпретация формата даты (в DBF даты хранятся как количество дней с 1899 года) Используйте функцию ДобавитьМесяц(Дата(1899,12,30), ЧислоДней) для корректного преобразования

Если ни одно из решений не помогло, попробуйте следующее:

  1. Создайте тестовый DBF с минимальным набором данных и проверьте, читается ли он.
  2. Убедитесь, что файл не заблокирован другим процессом (например, антивирусом).
  3. Попробуйте открыть DBF на другом компьютере — возможно, проблема в настройках системы.
Что делать, если DBF вообще не открывается?

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

1. Восстановить резервную копию файла.

2. Использовать утилиты вроде DBF Recovery Toolbox (платно).

3. Обратиться к отправителю файла с просьбой выслать его повторно.

7. Оптимизация работы с DBF в 1С

Если вы регулярно работаете с DBF в 1С, стоит оптимизировать процесс, чтобы сэкономить время и избежать ошибок. Вот несколько советов:

  • 📁 Стандартизируйте пути к файлам: Храните все DBF в одной папке (например, C:\ОбменDBF\) и используйте относительные пути в коде.
  • 🔄 Автоматизируйте обработку: Напишите типовую обработку для чтения DBF и сохраните её как шаблон.
  • 📋 Ведите журнал операций: Записывайте дату/время чтения, имя файла и количество строк — это поможет отследить ошибки.
  • 🛡️ Проверяйте данные на корректность: После чтения DBF сравнивайте количество строк и контрольные суммы с исходным файлом.

Пример кода для ведения журнала:

Процедура ЗаписатьВЖурнал(ИмяФайла, КоличествоСтрок, Статус)

Журнал = Новый ТекстовыйДокумент;

Журнал.ДобавитьСтроку(ТекущаяДата +" |" + ИмяФайла +" | Строк:" + КоличествоСтрок +" | Статус:" + Статус);

Журнал.Записать("C:\Обмен\ЖурналDBF.log", КодировкаТекста.UTF8, true);

КонецПроцедуры

Если вы работаете с большими файлами (более 100 000 строк), рассмотрите возможность:

  • 📊 Чтения данными порциями (по 10 000–20 000 строк за раз).
  • 🔧 Использования временных таблиц в 1С для промежуточного хранения.
  • ⏱️ Запуска обработки в фоновом режиме (через ФоновоеЗадание).
💡

Для ускорения чтения больших DBF отключите индексирование полей в 1С на время загрузки. Это можно сделать через параметр ИндексироватьПоля = Ложь при создании таблицы значений.

8. Альтернативы DBF в 1С: когда стоит переходить на другие форматы

Несмотря на универсальность DBF, в некоторых случаях целесообразно использовать другие форматы обмена. Рассмотрим альтернативы:

Формат Преимущества Недостатки Когда использовать
XML Поддерживает иерархические данные, универсален, читается любыми системами Больший размер файла, медленнее обрабатывается Обмен с веб-сервисами, госорганами (ФНС, ПФР)
JSON Легковесный, удобен для API, поддерживает сложные структуры Не подходит для табличных данных с большим количеством строк Интеграция с современными веб-сервисами
CSV Простота, совместимость с Excel, маленький размер Нет поддержки типов данных (всё хранится как текст) Экспорт отчетов для дальнейшей обработки в Excel
SQL Высокая скорость, поддержка транзакций, работа с большими объёмами Требует настройки подключения к базе данных Обмен между базами 1С или с внешними СУБД

Переход на другой формат оправдан, если:

  • 🔄 Вам нужно передавать иерархические данные (например, документы с табличными частями).
  • 📈 Объём данных превышает 1 ГБ (DBF плохо справляется с такими файлами).
  • 🌐 Требуется интеграция с веб-сервисами (большинство API работают с JSON/XML).
  • 🔒 Нужна поддержка шифрования (DBF не предоставляет встроенных средств защиты).

Однако если ваши контрагенты или госорганы требуют именно DBF, альтернативы не остаётся — придётся работать с этим форматом, оптимизируя процесс по максимуму.

⚠️ Внимание: При переходе на другой формат обмена убедитесь, что все участники процесса (контрагенты, банки, госорганы) поддерживают новый формат. В противном случае может потребоватьсяная выгрузка — и в DBF, и в XML/JSON.

FAQ: Частые вопросы по работе с DBF в 1С

Можно ли прочитать DBF из Visual FoxPro в 1С?

Да, но стандартные методы 1С (например, ТаблицаЗначений.ПрочитатьDBF) могут не справиться с мемо-полями или нестандартными типами данных. В этом случае используйте:

  • Внешнюю обработку «DBF Мастер» (поддерживает FoxPro).
  • COM-объект ADODB.Connection с провайдером VFPOLEDB.
  • Утилиту DBF Viewer 2000 для конвертации в CSV.
Как исправить ошибку «Неверный формат DBF»?

Эта ошибка возникает, если:

  1. Файл повреждён (например, некорректно скопирован по сети).
  2. DBF создан в несовместимой версии (например, dBASE VII).
  3. В файле используются мемо-поля или бинарные данные.

Решения:

  • Откройте файл в DBF Viewer 2000 и сохраните в формате dBASE IV.
  • Используйте внешнюю компоненту DBF.dll для чтения.
  • Попросите отправителя выслать файл в другом формате (например, CSV).
Почему после чтения DBF в 1С пропадают последние строки?

Это типичная проблема при работе с большими файлами (>50 000 строк). Причины:

  • Не хватает памяти (особенно в 1С 8.2).
  • В коде не учтён конец файла (например, отсутствует проверка EOF).
  • Файл был прерван при записи (например, при копировании по сети).

Решения:

  • Читайте файл порциями (по 10 000 строк).
  • Используйте внешнюю обработку с поддержкой потокового чтения.
  • Проверьте размер исходного DBF и сравните с количеством прочитанных строк.
Как конвертировать DBF в Excel без потери кириллицы?

Проблемы с кодировкой при конвертации в Excel возникают из-за того, что:

  • Excel по умолчанию открывает DBF в кодировке Windows-1252 (латиница).
  • В DBF может быть использована кодировка CP866 или KOI8-R.

Решения:

  1. Откройте DBF в DBF Viewer 2000 и сохраните в XLS с указанием кодировки Windows-1251.
  2. Используйте LibreOffice Calc — он лучше распознаёт кодировки.
  3. Конвертируйте DBF в CSV через 1С, указав нужную кодировку:
Таблица.ПрочитатьDBF("файл.dbf", КодировкаТекста.CP866