К статье
Практический материал

Справочники и Данные · 11 мин

DBF: чем открыть и как загрузить файл в 1С

Чем открыть DBF-файл и как загрузить его в 1С: встроенные средства платформы, Excel, обработки, типовые ошибки кодировки и проверка результата.

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

Ситуация осложняется тем, что DBF — это семейство форматов (dBase III, dBase IV, FoxPro, Clipper), у которых различаются кодировки и структура заголовков. Файл, который нормально открывается в одной программе, в другой может показать «кракозябры» вместо русского текста или вовсе не читаться.

Ниже разобраны рабочие способы: просмотр DBF без 1С, загрузка через встроенный объект платформы XBase, типовые обработки, а также решение главных проблем — кодировки, типов полей и повреждённых файлов.

Что такое DBF и почему он встречается в учёте

DBF — табличный формат базы данных, появившийся ещё в эпоху dBase. Файл состоит из заголовка с описанием полей (имя, тип, длина) и строк данных. Внутри 1С 7.7 именно DBF-файлы лежали в основе базы: каждый справочник и журнал хранился в отдельном файле вроде SC172.dbf или DH3245.dbf.

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

Важно понимать: DBF не содержит «оформления», формул и нескольких листов, как Excel. Это одна плоская таблица с жёстко заданными типами полей: символьное, числовое, дата, логическое, мемо. Отсюда и ограничения при загрузке — например, длина строкового поля обрезает текст, если он длиннее заданного размера.

Чем открыть DBF без 1С: просмотр содержимого

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

Самый доступный вариант — Excel: файл открывается двойным щелчком или через «Файл → Открыть», выбрав тип «Все файлы». Ограничение: Excel плохо работает с кодировкой DOS-866 (текст превращается в нечитаемые символы) и может не открыть файл с полями типа мемо или нестандартным заголовком.

Более надёжные варианты для просмотра:

  • LibreOffice Calc — при открытии предлагает выбрать кодировку вручную, что решает проблему «кракозябр»;
  • специализированные просмотрщики DBF (DBF Viewer, DBF Commander и аналоги) — показывают структуру полей, позволяют переключать кодировку и редактировать записи;
  • блокноты с поддержкой бинарного просмотра — только чтобы увидеть заголовок и понять версию формата, для работы с данными не подходят.

Сравнение вариантов просмотра

Excel

Быстро и всегда доступен, но ломает кодировку DOS и может не открыть нестандартные файлы.

LibreOffice Calc

Позволяет выбрать кодировку при открытии, бесплатен; интерфейс менее привычен.

DBF-просмотрщики

Показывают структуру полей и поддерживают все версии формата; требуют установки отдельной программы.

Как загрузить DBF в 1С через объект XBase

Встроенный механизм платформы 1С для работы с DBF — объект XBase. Он доступен в любой конфигурации и позволяет читать файл построчно, обращаясь к полям по имени. Именно так устроены большинство типовых и самописных обработок загрузки.

Типовая логика чтения выглядит так: создаётся объект XBase, указывается кодировка, открывается файл, затем в цикле перебираются записи. Пример кода на встроенном языке:

ДБФ = Новый XBase;

ДБФ.Кодировка = КодировкаXBase.ANSI; // или OEM для DOS-866

ДБФ.ОткрытьФайл("C:\Данные\price.dbf");

ДБФ.Первая();

Пока Не ДБФ.ВКонце() Цикл

Наименование = СокрЛП(ДБФ.NAME);

Цена = ДБФ.PRICE;

// здесь создание или поиск элемента справочника

ДБФ.Следующая();

КонецЦикла;

ДБФ.ЗакрытьФайл();

Ключевой момент — свойство Кодировка. Значение ANSI соответствует Windows-1251, OEM — DOS-866. Если после загрузки вместо русских букв видны символы вроде «РїСЂРёРІРµС‚» или вопросительные знаки — кодировка выбрана неверно, и файл нужно перечитать с другим значением.

Ещё одна тонкость: перед чтением поля стоит проверять его существование через ДБФ.Поля.Найти("NAME"), иначе при отсутствии колонки обработка упадёт с ошибкой. Поставщики нередко меняют структуру прайсов без предупреждения.

bsl
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.ANSI;
ДБФ.ОткрытьФайл("C:\Данные\price.dbf");
ДБФ.Первая();
Пока Не ДБФ.ВКонце() Цикл
	Сообщить(ДБФ.NAME);
	ДБФ.Следующая();
КонецЦикла;
ДБФ.ЗакрытьФайл();

Типовые обработки загрузки DBF в конфигурациях 1С

Писать код самостоятельно не всегда нужно. Во многих конфигурациях есть готовые механизмы. В «1С:Управление торговлей» и «Комплексной автоматизации» загрузка прайсов поставщиков выполняется через «Регистрацию цен поставщиков» и обработки импорта, где источником может быть внешний файл. В «1С:Бухгалтерии» есть универсальная «Загрузка данных из табличного документа» — DBF придётся предварительно открыть и пересохранить в Excel или скопировать в табличный документ.

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

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

Порядок загрузки DBF в 1С
  1. 1
    Откройте файл в просмотрщике и определите структуру полей и кодировку
  2. 2
    Сделайте резервную копию базы 1С или работайте в копии
  3. 3
    Запустите обработку загрузки и сопоставьте колонки DBF полям объектов 1С
  4. 4
    Выполните тестовую загрузку нескольких строк и проверьте результат
  5. 5
    Запустите полную загрузку и сверьте количество записей с исходным файлом

Проблема кодировки: как убрать «кракозябры»

Самая частая жалоба при работе с DBF — нечитаемый русский текст. Причина всегда одна: программа читает файл в кодировке, отличной от той, в которой он записан. Файлы из старых DOS-программ и 1С 7.7 обычно в кодировке DOS-866 (OEM), файлы из Windows-приложений — в Windows-1251 (ANSI).

Признаки неправильной кодировки: вместо букв — символы псевдографики, знаки вопроса или латиница с диакритикой. Лечение простое: открыть файл повторно, указав другую кодировку. В LibreOffice Calc это делается в диалоге открытия, в XBase — сменой значения свойства Кодировка, в DBF-просмотрщиках — кнопкой переключения ANSI/OEM.

Если ни одна из двух стандартных кодировок не помогает, возможны варианты: файл записан в UTF-8 (нестандартно для классического DBF, но встречается), либо текст внутри уже «дважды перекодирован» на стороне источника — тогда корректные данные сможет выдать только поставщик файла.

Типичные ошибки при работе с DBF
01
Загрузка без указания кодировки — русский текст превращается в нечитаемые символы, приходится очищать справочник и грузить заново
02
Загрузка сразу в рабочую базу без копии — при ошибке в сопоставлении полей данные приходится удалять вручную
03
Обращение к полям по имени без проверки — обработка падает, если поставщик переименовал колонку
04
Игнорирование обрезки строк — длинные наименования усекаются до длины поля DBF, и в 1С попадают неполные названия

Ограничения формата и частые ошибки загрузки

DBF накладывает жёсткие ограничения, которые нужно учитывать. Имена полей в классических версиях формата ограничены 10 символами, поэтому колонки часто называются загадочно: KOD, NAIM, CENA. Строковые поля имеют фиксированную длину — текст длиннее неё обрезается уже на стороне источника, и восстановить его при загрузке невозможно.

Числа в DBF хранятся с фиксированным количеством знаков после запятой. Если поле цены объявлено с двумя знаками, а вам нужны четыре — точность уже потеряна в файле. Даты обычно имеют тип Date и читаются корректно, но встречаются файлы, где дата записана текстом в произвольном формате — тогда при загрузке нужен разбор строки.

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

Проверка результата и альтернативы DBF

После загрузки убедитесь, что данные попали в базу полностью и корректно. Контрольные точки: количество загруженных строк совпадает с количеством записей в файле, русский текст читается, цены и количество имеют правильный порядок (не «съехала» запятая), даты распознаны как даты, а не как пустые значения.

Если вы влияете на источник данных, рассмотрите отказ от DBF в пользу современных форматов. Для обмена с внешними системами удобнее CSV с явной кодировкой UTF-8, XLSX или XML/JSON. Они лишены ограничений на длину полей, не имеют проблем с типами и лучше документируются. DBF имеет смысл оставлять только там, где формат жёстко задан внешней системой — банком, кассой, госпорталом.

Для регулярных загрузок настройте разовую обработку и сохраните её как внешнюю, добавив в дополнительные отчеты и обработки конфигурации. Это исключит ручные ошибки при повторных импортах и позволит запускать загрузку пользователю без программиста.

Контрольные точки

Как проверить результат загрузки

Количество записей
Норма

Совпадает с числом строк, которые показывает просмотрщик DBF

Тревожный признак

Загружено меньше строк — возможно, файл повреждён или оборвался

Русский текст
Норма

Наименования читаются нормально

Тревожный признак

Кракозябры или знаки вопроса — неверная кодировка

Числа и цены
Норма

Значения совпадают с исходными с точностью до копеек

Тревожный признак

Цены сдвинуты на разряды или обнулены

Даты
Норма

Даты распознаны и попадают в ожидаемый период

Тревожный признак

Пустые даты или 01.01.0001 — поле прочитано как текст

Итог

Что важно запомнить

DBF открывается в Excel, LibreOffice или специальных просмотрщиках, а в 1С загружается через объект XBase или типовые обработки. Ключ к успеху — правильная кодировка (ANSI или OEM), проверка структуры полей и загрузка сначала в копию базы.

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

Excel открывает DBF с нечитаемыми символами. Что делать?

Excel не предлагает выбор кодировки при открытии DBF и часто неверно определяет её автоматически. Откройте файл в LibreOffice Calc — при загрузке появится диалог, где можно выбрать кодировку (попробуйте Cyrillic DOS/OS2-866 или Windows-1251). Либо используйте любой DBF-просмотрщик с кнопкой переключения ANSI/OEM.

Можно ли открыть DBF из каталога базы 1С 7.7?

Можно, но только копию файла, скопированную в отдельную папку. Открытие оригинального файла работающей базы в стороннем редакторе или даже просмотрщике с правом записи может повредить структуру базы. Для доступа к данным безопаснее запустить саму 1С 7.7 и выгрузить нужное штатными средствами.

Загрузились не все строки из файла. Почему?

Частые причины: в заголовке файла указано неверное число записей (бывает у файлов из самописных программ), файл был занят другой программой при копировании, либо обработка остановилась на записи с ошибкой. Сравните количество строк в просмотрщике и в базе, а также проверьте журнал ошибок обработки.

Чем заменить DBF для обмена с поставщиком?

Если поставщик может выгружать в другом формате, попросите CSV (UTF-8), XLSX или XML. Эти форматы не обрезают длинные строки, не имеют проблем с кодировкой при правильной настройке и легко загружаются типовой обработкой «Загрузка данных из табличного документа» в большинстве конфигураций 1С.

Как понять, какие поля есть в DBF-файле?

Откройте файл в DBF-просмотрщике — он покажет список полей с типами и длинами. Программно в 1С структуру можно получить через коллекцию ДБФ.Поля после открытия файла объектом XBase: у каждого поля доступны имя, тип, длина и точность.

Обработка падает с ошибкой «Поле не найдено». В чём причина?

Обработка обращается к колонке по имени, которого нет в файле: поставщик переименовал или удалил колонку. Откройте файл в просмотрщике, сверьте фактические имена полей с теми, что ожидает обработка, и скорректируйте сопоставление или код.