Справочники и Данные · 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Откройте DBF-файл в 1С через меню «Файл → Открыть» и проверьте читаемость текста
- 2Сохраните табличный документ в формате MXL или XLSX
- 3Откройте обработку «Загрузка данных из табличного документа»
- 4Выберите целевой объект (справочник, документ, регистр сведений)
- 5Сопоставьте колонки файла с реквизитами объекта и задайте поле поиска для существующих элементов
- 6Выполните загрузку в тестовом режиме, проверьте результат и только потом загружайте в рабочую базу
Способ 2: программная загрузка через объект XBase
Для регулярных загрузок удобнее написать обработку на встроенном языке. Объект XBase открывает DBF-файл напрямую, без промежуточного преобразования, и позволяет контролировать каждую запись.
Типовой шаблон кода выглядит так: создаётся объект, задаётся кодировка, открывается файл, далее в цикле перебираются записи, и значения полей записываются в реквизиты объектов 1С.
ФайлДБФ = Новый 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 может интерпретировать коды с ведущими нулями как числа и «съесть» нули, а длинные цифровые строки (штрихкоды, счета) — перевести в экспоненциальную запись. Перед сохранением задайте таким колонкам текстовый формат.
Сравнение вариантов
Подходит для разовых загрузок без программирования; ограничение — нужна обработка и ручное сопоставление колонок
Лучший вариант для регулярных загрузок и больших файлов; требует доступа к конфигуратору или внешней обработки
Быстро для небольших разовых файлов; риск искажения чисел, кодов с ведущими нулями и кодировки
Проверка результата загрузки
После загрузки сравните количество записей в DBF и количество созданных (обновлённых) объектов в 1С. Количество записей в файле видно при открытии через XBase (свойство или перебор) либо в стороннем просмотрщике.
Выборочно откройте несколько элементов справочника и сверьте значения с исходным файлом: наименования без искажённых символов, суммы и количества совпадают, даты в правильном формате. Отдельно проверьте, не появились ли дубли — для этого удобно использовать отчёт по справочнику с группировкой по ключевому полю.
Как проверить результат
Совпадает с числом строк в DBF (за вычетом удалённых)
В базе меньше или больше записей, чем в файле
Наименования читаемы, без «кракозябр»
Нечитаемые символы — неверная кодировка при чтении
Суммы совпадают с исходником, даты в допустимом диапазоне
Потеряны дробные части, даты вида 01.01.0001
Каждому ключу (коду, артикулу) соответствует один элемент
Повторная загрузка создала вторые элементы с тем же ключом
Типичные ошибки и ограничения
Чаще всего встречаются пять проблем: неверная кодировка, загрузка удалённых записей, дубли при повторном запуске, несовпадение типов полей и блокировка файла. Файл, открытый другой программой (например, Excel), может не открыться в 1С — закройте все приложения, работающие с ним.
Помните об ограничениях формата: имена полей в классическом DBF короткие, текстовые поля имеют фиксированную длину и обрезаются, мемо-поля хранятся в отдельном файле .dbt/.fpt, и без него часть данных будет недоступна. Если рядом с DBF лежит файл с таким расширением — переносите их вместе.
Часто задаваемые вопросы
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. Всегда проверяйте кодировку, работайте сначала на копии базы и сверяйте количество и содержимое загруженных записей с исходным файлом.