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

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

Как загрузить данные из DBF в 1С

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

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

Прежде чем начинать загрузку, важно понять структуру исходного файла: какие поля в нём есть, какие типы данных используются и в какой кодировке сохранён текст. Ошибки на этапе подготовки — причина большинства проблем: «кракозябры» вместо русских букв, съехавшие колонки, потерянные дробные части чисел.

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

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

DBF (DataBase File) — табличный формат, унаследованный от СУБД dBase и FoxPro. Файл состоит из заголовка с описанием полей и записей фиксированной длины. Каждое поле имеет имя (до 10 символов в классических версиях), тип (символьный, числовой, дата, логический) и размер.

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

Подготовка файла: кодировка и структура полей

Главный источник проблем — кодировка. DBF-файлы создавались в разных системах, и русский текст в них может быть записан в DOS-кодировке (CP866), Windows (CP1251) или вообще без указания кодовой страницы в заголовке. Если после загрузки вместо названий вы видите нечитаемые символы, значит, кодировка выбрана неверно.

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

Обратите внимание на числовые поля: в DBF дробная часть хранится с фиксированным количеством знаков, а разделитель при отображении зависит от региональных настроек. Даты обычно хранятся корректно, но пустые даты могут читаться как «01.01.0001» или как пробелы — это нужно учитывать при сопоставлении с реквизитами 1С.

Способ 1: загрузка через табличный документ и типовую обработку

Самый доступный вариант без программирования — открыть DBF прямо в 1С. В режиме предприятия выберите «Файл → Открыть» и укажите DBF-файл: платформа отобразит его как табличный документ. Далее сохраните его в формате MXL или Excel через «Файл → Сохранить как».

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

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

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

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

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

bsl
ФайлДБФ = Новый XBase;
ФайлДБФ.Кодировка = КодировкаXBase.OEM; // DOS (CP866); для Windows — ANSI
ФайлДБФ.ОткрытьФайл("C:\Обмен\price.dbf");
Если ФайлДБФ.Первая() Тогда
	Пока Истина Цикл
		НовыйЭлемент = Справочники.Номенклатура.СоздатьЭлемент();
		НовыйЭлемент.Наименование = СокрЛП(ФайлДБФ.NAME);
		НовыйЭлемент.Артикул = СокрЛП(ФайлДБФ.CODE);
		НовыйЭлемент.Записать();
		Если Не ФайлДБФ.Следующая() Тогда
			Прервать;
		КонецЕсли;
	КонецЦикла;
КонецЕсли;
ФайлДБФ.ЗакрытьФайл();

Обратите внимание на перечисление КодировкаXBase: значение OEM соответствует DOS-кодировке, ANSI — Windows. Если текст читается неверно, поменяйте значение и повторите чтение. Также проверяйте признак удалённых записей (метод ЗаписьУдалена()) — в DBF удалённые строки физически остаются в файле.

Для сопоставления с существующими элементами ищите их по ключевому полю (код, артикул, ИНН) через запрос или метод НайтиПоКоду()/НайтиПоРеквизиту(), чтобы не создавать дубли при повторной загрузке.

Способ 3: конвертация в Excel или CSV

Если загрузка разовая и под рукой нет обработки, DBF можно открыть в LibreOffice Calc или Excel и сохранить как XLSX или CSV с явным указанием кодировки. После этого файл загружается любой стандартной обработкой загрузки из табличного документа.

Минус пути — ручные операции и риск потери форматов: Excel может интерпретировать коды с ведущими нулями как числа и «съесть» нули, а длинные цифровые строки (штрихкоды, счета) — перевести в экспоненциальную запись. Перед сохранением задайте таким колонкам текстовый формат.

Сравнение вариантов

Табличный документ + типовая обработка

Подходит для разовых загрузок без программирования; ограничение — нужна обработка и ручное сопоставление колонок

Код с объектом XBase

Лучший вариант для регулярных загрузок и больших файлов; требует доступа к конфигуратору или внешней обработки

Конвертация в Excel/CSV

Быстро для небольших разовых файлов; риск искажения чисел, кодов с ведущими нулями и кодировки

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

После загрузки сравните количество записей в DBF и количество созданных (обновлённых) объектов в 1С. Количество записей в файле видно при открытии через XBase (свойство или перебор) либо в стороннем просмотрщике.

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

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

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

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

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

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

В базе меньше или больше записей, чем в файле

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

Наименования читаемы, без «кракозябр»

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

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

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

Суммы совпадают с исходником, даты в допустимом диапазоне

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

Потеряны дробные части, даты вида 01.01.0001

Дубли элементов
Норма

Каждому ключу (коду, артикулу) соответствует один элемент

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

Повторная загрузка создала вторые элементы с тем же ключом

Типичные ошибки и ограничения

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

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

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

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

1С не открывает DBF-файл, выдаёт ошибку. Что делать?

Проверьте, не открыт ли файл в другой программе, и есть ли у вас права на чтение каталога. Если файл повреждён, попробуйте открыть его в LibreOffice Calc и пересохранить в XLSX, а затем загружать уже новый файл. Также убедитесь, что рядом лежит сопутствующий файл мемо-полей (.dbt или .fpt), если он существовал.

После загрузки русские буквы отображаются нечитаемыми символами. Как исправить?

Это несовпадение кодировки. При чтении через XBase смените значение свойства «Кодировка» с OEM на ANSI или наоборот и повторите загрузку. При открытии через табличный документ пересохраните файл в Excel/LibreOffice с явным указанием кодировки Windows (CP1251).

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

Откройте файл через «Файл → Открыть», сохраните как табличный документ и воспользуйтесь обработкой «Загрузка данных из табличного документа». В ней выберите целевой справочник, сопоставьте колонки с реквизитами и выполните загрузку сначала в тестовом режиме.

Можно ли настроить автоматическую регулярную загрузку из DBF?

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

Почему после загрузки потерялись ведущие нули в кодах товаров?

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

Что делать, если в DBF больше записей, чем загрузилось в 1С?

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

Итог

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

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