Формат DBF остаётся одним из самых распространённых способов обмена данными между устаревшими системами и современными конфигурациями 1С:Предприятие. Несмотря на появление JSON, XML и Excel, многие бухгалтеры, логисты и IT-специалисты до сих пор сталкиваются с необходимостью импортировать данные из .dbf-файлов в базу 1С. Причины разные: от обмена с госорганами до интеграции со старыми складскими программами.

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

Материал будет полезен как начинающим пользователям 1С, так и опытным программистам, которые хотят автоматизировать рутинные операции. Все инструкции протестированы на последних релизах платформы 1С:Предприятие 8.3.23 и 7.70.027.

1. Подготовка DBF-файла к загрузке в 1С

Перед тем как загружать данные, необходимо убедиться, что исходный .dbf-файл соответствует требованиям 1С. Чаще всего проблемы возникают из-за:

  • 🔹 Несовместимых кодировок (например, CP866 вместо UTF-8)
  • 🔹 Неправильных типов полей (дата в текстовом формате, числа с разделителями)
  • 🔹 Отсутствующих обязательных колонок (например, Номенклатура_Код)
  • 🔹 Дублирующихся записей по уникальным полям (артикулы, ИНН)

Для проверки структуры файла можно использовать бесплатные утилиты: DBF Viewer 2000 (для Windows) или LibreOffice Calc (кроссплатформенный). Откройте файл и обратите внимание на:

  • 📌 Типы полей (Character, Numeric, Date)
  • 📌 Длину строковых полей (в 1С ограничение на 4096 символов)
  • 📌 Формат дат (должен быть ГГГГММДД без разделителей)
💡

Если в DBF-файле используются десятичные разделители (запятая вместо точки), замените их через Правка → Заменить в любом текстовом редакторе до загрузки в 1С.

Особое внимание уделите кодировке. Если при открытии файла в 1С вместо кириллицы отображаются кракозябры, воспользуйтесь конвертером iconv (для Linux/macOS) или онлайн-сервисами вроде Encoding.ru. Команда для конвертации в UTF-8:

iconv -f CP866 -t UTF-8 input.dbf > output.dbf

2. Способы загрузки DBF в 1С: сравнение методов

Существует пять основных способов импорта данных из .dbf в 1С. Выбор зависит от версии платформы, объёма данных и требуемой автоматизации. Ниже — сравнительная таблица:

Метод Подходит для 1С 8.3 Подходит для 1С 7.7 Требует программирования Макс. объём данных
Ручной импорт через «Загрузка данных» ✅ Да ❌ Нет ❌ Нет До 10 000 строк
Обработка «Универсальный обмен данными» ✅ Да ✅ Да ⚠️ Частично До 50 000 строк
Загрузка через COM-соединение ✅ Да ✅ Да ✅ Да Неограниченно
Использование ADO или OLE DB ✅ Да ❌ Нет ✅ Да Неограниченно
Конвертация в XML с последующим импортом ✅ Да ✅ Да ✅ Да До 100 000 строк

Для одноразовой загрузки небольшого файла (например, справочника контрагентов) подойдёт ручной импорт. Если же требуется регулярный обмен данными (например, ежедневная выгрузка остатков со склада), лучше автоматизировать процесс через COM или ADO.

📊 Какой способ загрузки DBF в 1С вы используете чаще?
Ручной импорт
Готовые обработки
Собственные скрипты
Конвертация в XML
Не работал с DBF

3. Ручная загрузка DBF в 1С 8.3 через «Загрузка данных»

Самый простой способ — использовать встроенную обработку ЗагрузкаДанныхИзФайла, которая доступна в большинстве типовых конфигураций (например, 1С:Бухгалтерия 3.0 или 1С:Управление торговлей 11). Пошаговая инструкция:

  1. Откройте 1С в режиме Предприятие.
  2. Перейдите в меню Файл → Открыть… и выберите обработку ЗагрузкаДанныхИзФайла.epf (обычно находится в каталоге ExtForms конфигурации).
  3. В открывшемся окне нажмите Добавить и укажите путь к .dbf-файлу.
  4. Настройте соответствие полей: свяжите колонки из DBF с реквизитами 1С (например, NAIMНаименование).
  5. Запустите загрузку кнопкой Выполнить.

Если обработка отсутствует в вашей конфигурации, её можно скачать с портала ITS (раздел «Обработки для обмена данными»). Обратите внимание: в 1С:7.7 этот метод не работает — там используется другая схема импорта.

Сделать резервную копию базы 1С|Проверить права пользователя на запись|Убедиться в совпадении количества колонок|Закрыть все активные документы в 1С-->

⚠️ Внимание: При загрузке справочников (например, Номенклатура) через встроенную обработку не создаются новые элементы, если коды в DBF не совпадают с существующими в 1С. В этом случае данные будут пропущены без уведомления.

4. Автоматизированная загрузка через COM-соединение

Для регулярного импорта крупных файлов (например, ежедневной выгрузки цен от поставщика) удобно использовать COM-соединение. Этот метод требует минимальных знаний 1С:Предприятие и работает как в 8.3, так и в 7.7.

Пример кода для загрузки DBF в справочник Контрагенты:

// Подключаем библиотеку для работы с DBF

ПодключитьВнешнююКомпоненту("C:\Program Files\1Cv8\bin\dbflib.dll");

DBF = Новый COMОбъект("DBF.Library");

// Открываем файл

ФайлDBF = DBF.Open("C:\exchange\clients.dbf");

// Проходим по всем записям

Пока ФайлDBF.EOF() = Ложь Цикл

// Создаём новый элемент справочника

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

НовыйКонтрагент.Наименование = ФайлDBF.Fields("NAME").Value;

НовыйКонтрагент.ИНН = ФайлDBF.Fields("INN").Value;

НовыйКонтрагент.Записать();

ФайлDBF.MoveNext();

КонецЦикла;

ФайлDBF.Close();

Ключевые моменты:

  • 🔧 Библиотеку dbflib.dll можно скачать с сайта GitHub 1C.
  • 🔧 Для 1С 7.7 используйте V7DBF.DLL вместо dbflib.dll.
  • 🔧 Если в DBF есть пустые значения, добавьте проверку: Если НЕ ПустаяСтрока(ФайлDBF.Fields("INN").Value) Тогда....
⚠️ Внимание: При работе с COM-объектами в 1С:Предприятие 8.3 может возникать ошибка "Не удалось создать объект". Решение: запустите 1С от имени администратора или зарегистрируйте библиотеку командой regsvr32 dbflib.dll.

5. Использование универсальной обработки «Конвертация данных»

Если вам нужно загружать данные из DBF регулярно, но писать код не хочется, воспользуйтесь типовой обработкой «Конвертация данных» (входит в поставку 1С:Предприятие 8.3). Она позволяет:

  • 🔄 Настраивать правила преобразования полей (например, конвертацию дат из ДД.ММ.ГГГГ в ГГГГММДД).
  • 🔄 Сопоставлять данные по нескольким ключам (код + артикул).
  • 🔄 Фильтровать записи перед загрузкой (например, только активные контрагенты).

Инструкция по настройке:

  1. Откройте обработку через Файл → Открыть (файл ConversionData.epf).
  2. Создайте новое правило обмена: укажите источник (DBF) и приёмник (например, справочник Номенклатура).
  3. Настройте соответствие полей в разделе «Сопоставление данных».
  4. Добавьте преобразования (например, для поля Цена укажите умножение на 1.2, если цены в DBF без НДС).
  5. Сохраните правило и запустите загрузку.

Преимущество этого метода — гибкость. Например, можно настроить автоматическое создание групп в справочнике 1С на основе категории из DBF:

Если ФайлDBF.Fields("CATEGORY").Value = "Электроника" Тогда

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

КонецЕсли;

Как ускорить загрузку больших DBF-файлов (от 100 000 строк)

1. Разбейте файл на части по 50 000 строк (например, с помощью утилиты DBF Splitter).

2. Отключите индексы в 1С перед загрузкой: Справочник.Номенклатура.ОтключитьИндексы();

3. Используйте транзакции: НачатьТранзакцию(); ... ЗафиксироватьТранзакцию();

4. После загрузки выполните Справочник.Номенклатура.ПостроитьИндексы();

6. Обработка ошибок при загрузке DBF

Даже при правильной настройке импорт может завершаться ошибками. Рассмотрим типичные проблемы и их решения:

Ошибка Причина Решение
Недопустимое значение поля "Дата" Формат даты в DBF не соответствует ГГГГММДД Используйте функцию Дата(Год, Месяц, День) для преобразования
Поле "Код" должно быть уникальным Дублирующиеся значения в DBF Добавьте проверку: Если НЕ Справочник.Номенклатура.НайтиПоКоду(Код) Тогда...
Недостаточно прав для записи Пользователь 1С не имеет прав на изменение справочника Настройте права в Администрирование → Пользователи
Не удалось открыть файл DBF Файл заблокирован другой программой или повреждён Проверьте файл утилитой DBF Doctor или пересохраните в Excel

Если ошибка не типичная, включите режим отладки в 1С (Сервис → Параметры → Отладка) и посмотрите подробный лог. Например, для COM-объектов полезно выводить промежуточные значения:

Сообщить("Текущая запись: " + ФайлDBF.Fields("NAME").Value);

Сообщить("Тип поля Цена: " + ТипЗнч(ФайлDBF.Fields("PRICE").Value));

💡

Всегда тестируйте загрузку на копии рабочей базы! Ошибки в правилах обмена могут привести к дублированию данных или потере связей между объектами.

7. Альтернативные методы: конвертация DBF в XML/Excel

Если стандартные способы не работают (например, из-за особенностей конфигурации), можно предварительно конвертировать .dbf в XML или Excel, а затем загрузить в 1С через стандартные обработки. Для конвертации подойдут:

  • 📊 Excel: откройте DBF через Данные → Из текста и сохраните как .xlsx.
  • 📊 Python-скрипт с библиотекой dbfread:
import dbfread

from openpyxl import Workbook

Читаем DBF

table = dbfread.DBF('input.dbf')

Создаём Excel-файл

wb = Workbook()

ws = wb.active

Записываем данные

for row in table:

ws.append([row['NAME'], row['PRICE'], row['DATE']])

wb.save('output.xlsx')

После конвертации загрузите файл в 1С через:

  • 🔹 Файл → Открыть → Загрузка данных из Excel (для 8.3)
  • 🔹 Обработку UniversalLoadFromExcel.epf (доступна на Инфостарт)
⚠️ Внимание: При конвертации в Excel даты из DBF могут преобразовываться в формат ДД.ММ.ГГГГ, что вызовет ошибку в 1С. Используйте формулу =ДАТАЗНАЧ(TEXT(A1,"yyyy-mm-dd")) для корректного преобразования.

8. Оптимизация процесса загрузки для крупных предприятий

Если вам приходится загружать DBF-файлы объёмом более 100 000 строк (например, остатки по складам или прайс-листы поставщиков), стандартные методы будут работать слишком медленно. Рекомендации по оптимизации:

  • 🚀 Используйте пакетную загрузку: разбивайте файл на части по 10 000–20 000 строк и загружайте их последовательно.
  • 🚀 Отключайте проверки на время загрузки:
Справочник.Номенклатура.ОтключитьПроверкуЗаполнения(Истина);

Справочник.Номенклатура.ОтключитьПроверкуУникальности(Истина);

  • 🚀 Настройте фоновое выполнение через ФоновыеЗадачи (доступно в 1С 8.3.14+).
  • 🚀 Используйте временные таблицы для предварительной обработки данных:
Запрос = Новый Запрос;

Запрос.Текст =

"ВЫБРАТЬ

| Товары.Код КАК Код,

| Товары.Наименование КАК Наименование

|ИЗ

| &ТаблицаДанных КАК Товары";

Запрос.УстановитьПараметр("ТаблицаДанных", ТаблицаСДаннымиИзDBF);

Результат = Запрос.Выполнить();

Для предприятий с высокой нагрузкой на базу рекомендуется выносить процесс загрузки на отдельный сервер или использовать 1С:Сервер кластера. Это позволит избежать блокировок базы во время пиковых нагрузок.

💡

Если загрузка занимает более 30 минут, настройте логирование процесса. Добавьте в код вывод прогресса каждые 1000 строк: Сообщить("Обработано " + Строка(Счётчик) + " записей");

FAQ: Ответы на частые вопросы

Можно ли загрузить DBF в 1С:Зарплата и Управление Персоналом 3.1?

Да, но только через внешние обработки или COM-соединение. В типовой конфигурации нет встроенного функционала для импорта DBF. Скачайте обработку ЗагрузкаДанныхИзDBF.epf с портала ITS (раздел «Зарплата и кадры»).

Почему при загрузке DBF в 1С 7.7 появляются вопросительные знаки вместо кириллицы?

Это проблема с кодировкой. В 1С 7.7 по умолчанию используется CP866. Перед загрузкой конвертируйте файл в Windows-1251 с помощью утилиты iconv или Far Manager (плагин DbfView). Команда для конвертации:

iconv -f CP866 -t WINDOWS-1251 input.dbf > output.dbf
Как загрузить DBF в 1С, если в файле нет колонки с кодами?

Если в DBF отсутствует уникальный идентификатор (например, Код или Артикул), можно:

  1. Добавить колонку вручную в Excel и присвоить уникальные значения.
  2. Использовать составной ключ из нескольких полей (например, Наименование + ЕдиницаИзмерения).
  3. Настроить загрузку с поиском по наименованию (менее надёжно, но подходит для небольших справочников).

Пример кода для поиска по наименованию:

НайденныйЭлемент = Справочники.Номенклатура.НайтиПоНаименованию(ФайлDBF.Fields("NAME").Value, Истина);

Если НайденныйЭлемент = Неопределён Тогда

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

КонецЕсли;

Какие ограничения на размер DBF-файла в 1С?

Технические ограничения:

  • 📏 1С 8.3: до 2 ГБ на файл (ограничение платформы).
  • 📏 1С 7.7: до 500 МБ (зависит от версии DBF-драйвера).
  • 📏 Количество полей: не более 255 в одной таблице DBF.

Для файлов больше 1 ГБ рекомендуется:

  • Разбивать на части.
  • Использовать SQL-сервер как промежуточное хранилище.
  • Настраивать потоковую загрузку через ADO.
Где скачать бесплатные обработки для загрузки DBF в 1С?

Проверенные источники:

  • 🔗 Портал ITS 1С (раздел «Обработки для обмена данными»).
  • 🔗 Инфостарт (поиск по запросу «DBF загрузка»).
  • 🔗 GitHub 1C (официальные репозитории).

Обратите внимание на лицензию: некоторые обработки требуют подписки на 1С:ИТС.