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

Разработка и Конфигурация · 10 мин

Как открыть DBF файл в 1С

Как открыть DBF файл в 1С: объект XBase, обработка открытия, чтение и запись данных, кодировка, типичные ошибки и способы проверки результата.

Формат DBF (dBase) до сих пор встречается в обмене данными: банковские выписки, выгрузки из старых учётных систем, справочники контрагентов и классификаторы часто приходят именно в нём. В 1С нет кнопки «открыть DBF» в стандартном меню «Файл», но платформа содержит встроенный объект XBase, который позволяет читать и записывать такие файлы программно.

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

Перед началом работы важно понять структуру файла: какие поля в нём есть, какого они типа и в какой кодировке записан текст. Большинство проблем при открытии DBF связано именно с кодировкой — старые файлы часто сохранены в DOS-кодировке (CP866), и при чтении без её указания русские буквы превращаются в нечитаемые символы.

Что такое DBF и когда он встречается в работе с 1С

DBF — это табличный формат базы данных, где каждый файл представляет одну таблицу с фиксированным набором полей. Поля имеют строгий тип: символьное (C), числовое (N), дата (D), логическое (L) и мемо (M). В отличие от Excel, структура жёсткая: длина символьного поля и число знаков после запятой заданы в заголовке файла.

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

Открытие DBF через объект XBase: базовый код

Основной инструмент — объект XBase. Минимальный код для чтения файла выглядит так: создаётся объект, задаётся кодировка, файл открывается, затем записи перебираются в цикле. Ниже пример, который читает файл и выводит значения полей в сообщения.

bsl
ФайлДБФ = Новый XBase;
ФайлДБФ.Кодировка = КодировкаXBase.OEM; // для файлов в DOS-кодировке
ФайлДБФ.ОткрытьФайл("C:\Обмен\sprav.dbf");

Пока ФайлДБФ.Следующая() Цикл
    Наименование = ФайлДБФ.NAME;
    Код = ФайлДБФ.CODE;
    Сообщить(Код + " | " + Наименование);
КонецЦикла;

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

Обращение к полям идёт по имени, как к свойствам объекта: ФайлДБФ.NAME. Метод Следующая() переводит указатель на следующую запись и возвращает Ложь, когда записи закончились. Если файл не существует или повреждён, метод ОткрытьФайл() вызовет исключение, поэтому в рабочем коде его оборачивают в попытку-исключение.

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

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

Просмотр DBF без программирования

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

Альтернатива — открыть файл сторонними средствами: LibreOffice Calc и Excel старых версий читают DBF напрямую. Это удобно для предварительной оценки: вы быстро видите структуру, количество записей и понимаете, какие поля нужны для загрузки. Однако сохранять файл обратно из Excel не стоит — он может потерять структуру полей или испортить кодировку, и последующая загрузка в 1С сломается.

Кодировка: почему появляются «кракозябры»

Самая частая проблема при открытии DBF — неправильная кодировка. Файлы, созданные в DOS-эпоху и в 1С 7.7 по умолчанию, используют OEM-кодировку (CP866). Файлы из Windows-приложений обычно в ANSI (Windows-1251). Если кодировка указана неверно, числа и даты читаются корректно, а русский текст превращается в бессмысленный набор символов.

В объекте XBase кодировка задаётся свойством Кодировка со значениями КодировкаXBase.OEM или КодировкаXBase.ANSI. Практический приём: откройте файл с одной кодировкой, прочитайте несколько записей и посмотрите на текстовые поля. Если символы нечитаемы — закройте файл, смените кодировку и откройте заново. Признаки читаемого текста видны сразу.

Маршрут решения

Как выбрать кодировку

Файл пришёл из 1С 7.7, DOS-программы или старого банк-клиентаИспользуйте КодировкаXBase.OEM (CP866)
Файл создан в Windows-приложении или современной выгрузкойПопробуйте КодировкаXBase.ANSI (Windows-1251)
Текст нечитаем в обоих вариантахПроверьте файл в стороннем просмотрщике DBF — возможно, файл повреждён или имеет нестандартный заголовок

Загрузка данных из DBF в справочники 1С

Чтение файла — только половина задачи. Обычно данные нужно перенести в базу: создать элементы справочника, заполнить документы или регистр сведений. Типовой алгоритм: в цикле перебора записей ищется существующий элемент по коду или наименованию, при отсутствии создаётся новый, поля заполняются значениями из DBF, затем объект записывается.

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

Перед массовой загрузкой выполните пробный прогон на первых 50–100 записях с выводом результата в таблицу значений. Так вы увидите несоответствие типов и кодировки до того, как в базе появятся тысячи некорректных элементов.
ПЗ
Практическое замечание

Запись и создание DBF-файлов из 1С

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

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

Типичные ошибки и их устранение

Типичные ошибки
01
Открытие файла без указания кодировки — русский текст читается неправильно; задавайте Кодировку явно
02
Чтение помеченных на удаление записей — в базу попадают лишние строки; проверяйте ЗаписьУдалена()
03
Отсутствие ЗакрытьФайл() — файл остаётся заблокированным и недоступен другим процессам
04
Обращение к несуществующему полю по имени — возникает ошибка; сначала изучите коллекцию Поля
05
Загрузка без проверки дублей — справочник заполняется повторяющимися элементами; ищите существующие элементы перед созданием

Отдельная группа проблем — права доступа и пути. На сервере 1С файл должен быть доступен учётной записи агента сервера, а не пользователю клиента. Код, выполняемый на сервере, не увидит файл на локальном диске C: пользователя. Решение — передавать файл на сервер через временное хранилище или размещать его в сетевом каталоге, доступном серверу.

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

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

Количество загруженных записей
Норма

Совпадает с числом записей в DBF (за вычетом удалённых)

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

Меньше — часть записей потеряна; больше — загружены дубли или удалённые записи

Кириллица в текстовых полях
Норма

Текст читается, ФИО и наименования корректны

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

Нечитаемые символы — неверная кодировка

Числа и даты
Норма

Суммы совпадают с источником, даты в правильном формате

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

Даты сдвинуты или пусты, числа обрезаны — ошибка типизации

Часто задаваемые вопросы

Можно ли открыть DBF в 1С без программирования?

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

Почему русские буквы отображаются нечитаемыми символами?

Причина почти всегда в кодировке. Файлы из 1С 7.7 и DOS-программ записаны в CP866 — задайте свойству Кодировка значение КодировкаXBase.OEM. Если не помогло, попробуйте ANSI (Windows-1251).

Как пропустить удалённые записи при чтении DBF?

В цикле перебора проверяйте метод ЗаписьУдалена(): если он возвращает Истина, запись помечена на удаление и её следует пропустить через Продолжить.

Файл открывается на клиенте, но не виден на сервере. Что делать?

Сервер 1С работает под отдельной учётной записью и не имеет доступа к локальным дискам пользователя. Передайте файл на сервер через временное хранилище (ПоместитьВоВременноеХранилище) или положите его в сетевую папку, доступную агенту сервера.

Можно ли из 1С создать новый DBF-файл?

Да. Заполните коллекцию Поля объекта XBase описаниями полей (имя, тип, длина, точность), вызовите СоздатьФайл() и добавляйте записи методом Добавить(). Помните об ограничениях: короткие имена полей и фиксированная длина строк.

Чем DBF отличается от выгрузки в Excel для обмена с 1С?

DBF имеет строгую типизированную структуру и компактно хранит большие таблицы, но ограничен в типах данных и длинах полей. Excel удобнее для просмотра человеком, но хуже подходит для автоматической загрузки из-за нестрогих типов ячеек.

Итог

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

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