Справочники и Данные · 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 и аналоги) — показывают структуру полей, позволяют переключать кодировку и редактировать записи;
- блокноты с поддержкой бинарного просмотра — только чтобы увидеть заголовок и понять версию формата, для работы с данными не подходят.
Сравнение вариантов просмотра
Быстро и всегда доступен, но ломает кодировку DOS и может не открыть нестандартные файлы.
Позволяет выбрать кодировку при открытии, бесплатен; интерфейс менее привычен.
Показывают структуру полей и поддерживают все версии формата; требуют установки отдельной программы.
Как загрузить 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"), иначе при отсутствии колонки обработка упадёт с ошибкой. Поставщики нередко меняют структуру прайсов без предупреждения.
ДБФ = Новый XBase;
ДБФ.Кодировка = КодировкаXBase.ANSI;
ДБФ.ОткрытьФайл("C:\Данные\price.dbf");
ДБФ.Первая();
Пока Не ДБФ.ВКонце() Цикл
Сообщить(ДБФ.NAME);
ДБФ.Следующая();
КонецЦикла;
ДБФ.ЗакрытьФайл();Типовые обработки загрузки DBF в конфигурациях 1С
Писать код самостоятельно не всегда нужно. Во многих конфигурациях есть готовые механизмы. В «1С:Управление торговлей» и «Комплексной автоматизации» загрузка прайсов поставщиков выполняется через «Регистрацию цен поставщиков» и обработки импорта, где источником может быть внешний файл. В «1С:Бухгалтерии» есть универсальная «Загрузка данных из табличного документа» — DBF придётся предварительно открыть и пересохранить в Excel или скопировать в табличный документ.
Также широко распространены внешние универсальные обработки загрузки из DBF: пользователь указывает файл, сопоставляет колонки полям справочника или документа и запускает загрузку. Такие обработки удобны разовыми задачами — например, перенести номенклатуру из старой базы.
При использовании любой обработки придерживайтесь порядка: сначала тестовая загрузка небольшого фрагмента (или запуск в копии базы), проверка результата, и только потом полная загрузка в рабочую базу.
- 1Откройте файл в просмотрщике и определите структуру полей и кодировку
- 2Сделайте резервную копию базы 1С или работайте в копии
- 3Запустите обработку загрузки и сопоставьте колонки DBF полям объектов 1С
- 4Выполните тестовую загрузку нескольких строк и проверьте результат
- 5Запустите полную загрузку и сверьте количество записей с исходным файлом
Проблема кодировки: как убрать «кракозябры»
Самая частая жалоба при работе с DBF — нечитаемый русский текст. Причина всегда одна: программа читает файл в кодировке, отличной от той, в которой он записан. Файлы из старых DOS-программ и 1С 7.7 обычно в кодировке DOS-866 (OEM), файлы из Windows-приложений — в Windows-1251 (ANSI).
Признаки неправильной кодировки: вместо букв — символы псевдографики, знаки вопроса или латиница с диакритикой. Лечение простое: открыть файл повторно, указав другую кодировку. В LibreOffice Calc это делается в диалоге открытия, в XBase — сменой значения свойства Кодировка, в DBF-просмотрщиках — кнопкой переключения ANSI/OEM.
Если ни одна из двух стандартных кодировок не помогает, возможны варианты: файл записан в UTF-8 (нестандартно для классического DBF, но встречается), либо текст внутри уже «дважды перекодирован» на стороне источника — тогда корректные данные сможет выдать только поставщик файла.
Ограничения формата и частые ошибки загрузки
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: у каждого поля доступны имя, тип, длина и точность.
Обработка падает с ошибкой «Поле не найдено». В чём причина?
Обработка обращается к колонке по имени, которого нет в файле: поставщик переименовал или удалил колонку. Откройте файл в просмотрщике, сверьте фактические имена полей с теми, что ожидает обработка, и скорректируйте сопоставление или код.