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

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

Как загрузить DBF-файл в 1С: пошаговая инструкция

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

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

Выбор способа зависит от конфигурации (управляемое или обычное приложение), объёма файла и того, разовая это задача или регулярный обмен. Разовую загрузку проще сделать типовой обработкой, а для регулярного обмена лучше написать процедуру с автоматическим сопоставлением полей. Главные подводные камни — кодировка файла, типы полей и соответствие данных уже существующим элементам справочников.

Что такое DBF и когда его загружают в 1С

DBF (DataBase File) — формат табличных баз данных, появившийся ещё в эпоху dBase и FoxPro. Файл состоит из заголовка с описанием полей (имя, тип, длина) и набора записей фиксированной структуры. Несмотря на возраст формата, он до сих пор используется: его выгружают банковские клиенты, кассовое ПО, системы складского учёта и государственные реестры.

Типичные сценарии загрузки DBF в 1С:

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

Подготовка файла и базы перед загрузкой

Прежде чем загружать данные, откройте DBF-файл и посмотрите его структуру. Это можно сделать в Excel (при открытии выберите тип файла «dBASE»), в LibreOffice Calc или в специальных просмотрщиках DBF. Зафиксируйте имена полей, их типы (символьное, числовое, дата, логическое) и длину — это понадобится при настройке соответствия.

Критически важный момент — кодировка. DBF-файлы бывают в кодировках DOS (CP866), Windows (CP1251) и ANSI. Если открыть файл не в той кодировке, русские буквы превратятся в «кракозябры», и такие же искажённые данные попадут в базу. Проверка простая: откройте файл и посмотрите текстовые поля. Если текст нечитаем — файл нужно перекодировать перед загрузкой или указать правильную кодировку в обработке.

Способ 1. Загрузка через типовую обработку «Загрузка данных из табличного документа»

В большинстве типовых конфигураций на управляемых формах (Управление торговлей, Комплексная автоматизация, ERP, Бухгалтерия 3.0) есть встроенная обработка «Загрузка данных из табличного документа». Найти её можно в разделе «Администрирование» → «Обслуживание» или через «Все функции» → «Обработки». Она работает не с DBF напрямую, а с табличным документом, поэтому файл сначала открывают в Excel и сохраняют как XLSX или MXL.

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

  1. Откройте DBF в Excel, проверьте кодировку и корректность данных, сохраните как XLSX.
  2. В 1С откройте обработку «Загрузка данных из табличного документа».
  3. Выберите режим «Загрузка в справочник» и целевой справочник (например, «Номенклатура»).
  4. Откройте файл табличного документа — обработка покажет данные в виде таблицы.
  5. На закладке «Настройка» для каждого реквизита укажите номер колонки файла или режим «Искать» для сопоставления с существующими элементами.
  6. Нажмите «Контроль заполнения», исправьте ошибки, затем выполните «Загрузить».

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

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

Способ 2. Программная загрузка через объект XBase

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

Минимальный пример чтения DBF и создания элементов справочника:

ФайлДБФ = Новый XBase;

ФайлДБФ.Кодировка = КодировкаXBase.OEM; // для CP866; для Windows — ANSI

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

Если Не ФайлДБФ.Открыта() Тогда

Сообщить("Не удалось открыть файл");

Возврат;

КонецЕсли;

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

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

КодТовара = СокрЛП(ФайлДБФ.KOD);

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

Цена = ФайлДБФ.PRICE;

Элемент = Справочники.Номенклатура.НайтиПоКоду(КодТовара);

Если Элемент.Пустая() Тогда

НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();

НовыйЭлемент.Код = КодТовара;

НовыйЭлемент.Наименование = Наименование;

НовыйЭлемент.Записать();

КонецЕсли;

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

КонецЦикла;

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

Ключевые моменты кода: свойство Кодировка задаётся до открытия файла (OEM — DOS/CP866, ANSI — Windows/CP1251); значения полей обращаются по именам полей из заголовка DBF; символьные поля часто содержат хвостовые пробелы, поэтому используйте СокрЛП(). Перед записью большого объёма оборачивайте цикл в транзакцию (НачатьТранзакцию / ЗафиксироватьТранзакцию) — это ускорит загрузку и позволит откатить изменения при ошибке.

Способ 3. Универсальные обработки и конвертация данных

Если стоит задача перенести из старой системы не один справочник, а целый пласт данных, удобнее использовать обработку «Универсальный обмен данными в формате XML» совместно с «Конвертацией данных». В этом случае DBF сначала читается промежуточной обработкой, а правила переноса описывают, какие поля куда попадают. Способ требует навыков настройки, но даёт контроль над каждым объектом.

Для файловых баз на платформе 8.3 также доступны многочисленные готовые внешние обработки загрузки из DBF, которые открываются через «Файл» → «Открыть». При выборе сторонней обработки проверяйте, что она совместима с вашей версией платформы и конфигурации, и запускайте её сначала на копии базы.

Сравнение способов загрузки

Типовая обработка (через Excel)

Подходит для разовой загрузки справочников без программирования. Ограничение: нужна ручная настройка колонок, нет автоматизации.

Код через XBase

Подходит для регулярного обмена и любых структур данных. Требует навыков программирования на встроенном языке 1С.

Конвертация данных

Подходит для миграции большого объёма связанных данных из старой системы. Требует времени на настройку правил обмена.

Проверка результата и типичные ошибки

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

Типичные ошибки при загрузке DBF
01
Неверная кодировка — русский текст превращается в нечитаемые символы; исправляется сменой OEM/ANSI и повторной загрузкой
02
Дубли элементов — загрузка без поиска существующих элементов по коду или наименованию создаёт повторы в справочнике
03
Обрезание строк — поле DBF длиннее реквизита 1С, часть наименования теряется; нужно заранее сопоставить длины
04
Даты как строки — поле даты в DBF прочиталось как текст, и отборы по периоду в 1С не работают
05
Пустые ключевые поля — записи с пустым кодом создают элементы, которые потом сложно идентифицировать

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

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

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

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

Совпадает с числом строк в DBF с учётом обновлённых элементов

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

Записей меньше — часть строк пропущена из-за ошибок

Текстовые поля
Норма

Русский текст читаем, без кракозябр

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

Иероглифы — неверная кодировка, нужна повторная загрузка

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

Значения в нужных полях, даты участвуют в отборах

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

Числа обрезаны, даты стали строками

Дубли
Норма

Поиск по коду находит один элемент

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

Несколько элементов с одинаковым кодом или наименованием

FAQ

Можно ли загрузить DBF в 1С:Бухгалтерию 3.0 без программирования?

Да. Откройте DBF в Excel, сохраните как XLSX и используйте обработку «Загрузка данных из табличного документа» (доступна через «Все функции» или раздел «Администрирование»). Для банковских выписок дополнительно есть штатный обмен с клиент-банком, который также понимает текстовые форматы выписок.

Что делать, если после загрузки русские буквы отображаются неправильно?

Это признак неверной кодировки. При загрузке через XBase смените значение свойства Кодировка с OEM на ANSI (или наоборот) до открытия файла. При загрузке через Excel пересохраните файл в нужной кодировке. Загружайте заново в копию базы, а испорченные элементы удалите.

Как загрузить DBF, если полей в файле больше, чем реквизитов в справочнике?

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

Можно ли загрузить из DBF документы, а не справочники?

Да, но только программным способом или через конвертацию данных. В коде создают объект документа (Документы.ИмяДокумента.СоздатьДокумент()), заполняют шапку и табличные части из полей DBF и записывают. Типовая обработка загрузки из табличного документа работает с документами ограниченно.

Файл DBF большой, загрузка идёт очень долго. Как ускорить?

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

Как автоматизировать регулярную загрузку DBF от поставщика?

Напишите внешнюю обработку с кодом чтения через XBase и подключите её к регламентному заданию, которое запускается по расписанию. Файл поставщик должен класть в заранее согласованный каталог. Добавьте в обработку журналирование: сколько записей прочитано, создано, обновлено и с какими ошибками.

Итог

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

Перед загрузкой DBF сделайте резервную копию, проверьте кодировку и структуру полей. Разовую загрузку выполняйте типовой обработкой через Excel, регулярную — кодом через объект XBase. После загрузки сверьте количество записей, читаемость текста и отсутствие дублей.