Импорт данных в 1С из XBase

Как в 1С получить данные из файла DBF?

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

Программист 1С может встретиться с необходимостью импортировать данные в 1С из файла DBF, в который экспортированы данные о банковских операциях из системы Банк-Клиент. В нижеприведённом примере вы можете увидеть пример обработки файла DBF, из которого в 1С импортируется банковская выписка.

//импорт банковских операций в базу 1С из внешнего файла DBF, созданного в системе Банк-Клиент
Процедура КнопкаИмпорт()
     Перем Файл,Каталог;
     Если Вопрос("Импортировать данные?","ОК+Отмена")="Отмена" Тогда
          Возврат;
     ИначеЕсли ФС.ВыбратьФайл(0,Файл,Каталог,"Открыть файл","Файлы Клиент-Банк (dbf)|*.dbf|Все файлы|*.*")=0 Тогда
          Возврат;
     КонецЕсли;
     //удаление строк
     Если КоличествоСтрок()>0 Тогда
          Если Вопрос("Удалить все строки табличной части документа?","Да+Нет")="Да" Тогда
               УдалитьСтроки();
          КонецЕсли;
     КонецЕсли;
     //создание нового файла
     Б=СоздатьОбъект("XBase");
     Б.ОткрытьФайл(Каталог+Файл,,1);
     Если Б.Открыта()=0 Тогда
          Сообщить("Не удалось открыть файл DBF","!");
          Возврат;
     КонецЕсли;
     //справочник
     С=СоздатьОбъект("Справочник.Контрагенты");
     //строки
     Счетчик=0;
     Для й=1 По Б.КоличествоЗаписей() Цикл
          Б.Перейти(й);
          //проверка
          Если Не(Б.OperData=ДатаДок) Тогда
               Продолжить;
          ИначеЕсли Не(Б.KodVal=980) Тогда
               Продолжить;
          ИначеЕсли Не(Число(Б.Kod_Cred)=Число(Фирма.РегКод)) Тогда
               Продолжить;
          ИначеЕсли Не(Число(Б.Mfo_Cred)=Число(Фирма.Банк.Код)) Тогда
               Продолжить;
          ИначеЕсли Не(Число(Б.Acc_Credit)=Число(Фирма.Счет)) Тогда
               Продолжить;
          КонецЕсли;
          //строка
          НоваяСтрока();
          УстановитьАтрибут("Сумма",Б.OperSum);
          УстановитьАтрибут("Примечание",СокрЛП(Б.Naznach));
          //контрагент
          Если С.НайтиПоРеквизиту("РегКод",Б.Kod_Deb,1)=0 Тогда
               С.Новый();
               С.Наименование=СокрЛП(Б.Naim_Deb);
               С.РегКод=Б.Kod_Deb;
               С.Записать();
          КонецЕсли;
          УстановитьАтрибут("Контрагент",С.ТекущийЭлемент());
          //счётчик
          Счетчик=Счетчик+1;
     КонецЦикла;
     //закрытие файла
     Б.ЗакрытьФайл();
     //извещение
     Предупреждение("Импортировано строк: "+Счетчик);
КонецПроцедуры

Реклама:
Смотрите также:
Экспорт данных из 1С в XBase
Извлечение административных данных из базы 1С
Связать две информационные базы 1С
Как начислить зарплату в 1С