Прислано
eldos 19-02-2013 21:04
#1
Всем привет, у меня такой вопрос. Как загрузить базу с .DBF в базу 1С 7.7., в островном на форумах описывается программирование. Но как, и через какую прогу. С 1С раньше не работал??? Может у кого есть литература подобной операции, кто с помощью ее решал проблему.
А дело состоит так вот, поставили 1с8.2, до этого работали на 1сv6 (зарплата), не работали 1сv7.7. И с 1сv6 (.DBF) надо загрузить базу в 1сv7.7. А с 1сv7.7 в 8.2. Или у кого есть вариант проще. Но по моему базу переносят в 8.2 из 7.7.
***
Загрузка данных из .DBF файла в базу 1С:Предприятие 7.7 возможна, но требует ручной или программной подготовки. Вот максимально подробная инструкция по варианту с использованием встроенного языка 1С (1С:Язык):
1. Подготовка файла .DBF
Перед загрузкой убедитесь, что:
- Файл .DBF не повреждён и открывается в редакторе DBF (например, DBF Viewer, Excel, LibreOffice Base, или утилитами типа dbview).
- Кодировка символов соответствует той, что используется в 1С (обычно CP866 или Windows-1251 для русских версий DOS и Windows).
- Поля имеют корректные имена и форматы данных (текст, числовые, даты и пр.).
2. Подключение DBF-файла как внешнего источника
1С 7.7 поддерживает работу с внешними таблицами через подключение внешнего источника данных, либо напрямую через встроенные функции работы с DBF.
Способ 1: Работа через встроенные функции (ОткрытьФайл, ПрочитатьСтроку и др.)
Код
Процедура ЗагрузкаИзDBF()
ПутьКФайлу = "C:\Import\klienty.dbf";
Файл = СоздатьОбъект("Файл", ПутьКФайлу);
Если Не Файл.Существует() Тогда
Сообщить("Файл не найден: " + ПутьКФайлу);
Возврат;
КонецЕсли;
Таблица = СоздатьОбъект("Таблица");
Таблица.Открыть(ПутьКФайлу);
Пока Не Таблица.КонецФайла() Цикл
Строка = Таблица.Прочитать();
// Здесь идет логика вставки в вашу базу данных
НоваяЗапись = Справочники.Клиенты.СоздатьЭлемент();
НоваяЗапись.Наименование = Строка.ФИО;
НоваяЗапись.ИНН = Строка.ИНН;
// и т.д.
НоваяЗапись.Записать();
Таблица.Следующая();
КонецЦикла;
Таблица.Закрыть();
Сообщить("Импорт завершён.");
КонецПроцедуры
Создать Объект("Таблица") может не работать напрямую — зависит от конфигурации. Лучше использовать Внешний Источник Данных.
3. Импорт через внешний источник (регистр OLEDB или DAO)
Более надёжный метод — подключение DBF как внешнего источника данных через ODBC/OLEDB. Это делается через:
- Настройку ODBC-подключения к папке с DBF.
- В 1С через объект ВнешнийИсточникДанных открыть нужный файл.
Пример:
Код
Источник = СоздатьОбъект("ВнешнийИсточникДанных");
Источник.ИмяФайла = "C:\Import\klienty.dbf";
Источник.ИмяТаблицы = "KLIENTY"; // без расширения
Если Не Источник.Открыть() Тогда
Сообщить("Ошибка открытия DBF");
Возврат;
КонецЕсли;
Пока Не Источник.КонецФайла() Цикл
Строка = Источник.Прочитать();
НоваяЗапись = Справочники.Клиенты.СоздатьЭлемент();
НоваяЗапись.Наименование = Строка.ФИО;
НоваяЗапись.Код = Строка.КОД;
НоваяЗапись.ИНН = Строка.ИНН;
НоваяЗапись.Записать();
Источник.Следующая();
КонецЦикла;
Источник.Закрыть();
Сообщить("Импорт завершён.");
4. Альтернативные инструменты
Если вы не хотите писать код в 1С, можно использовать сторонние утилиты:
Конвертеры:
- DBF to 1C Import Tool (есть коммерческие утилиты от rusconfig.ru, infostart.ru и др.)
- DBF Manager, DBF Commander — для экспорта в CSV и последующей загрузки через встроенные механизмы 1С.
Возможные проблемы:
- Несовпадение кодировок — обязательно проверьте кодировку .DBF.
- Типы данных — DBF может хранить даты и числа в особом формате.
- Ограничения 1С 7.7 — устаревшая архитектура, возможны проблемы при работе с большими файлами.
Рекомендации:
- Всегда делайте резервную копию базы 1С перед импортом.
- Тестируйте импорт на копии базы.
- Проверьте все поля и типы данных на соответствие структуре справочника или документа в 1С.
*