Имя: Пароль:
1C
1С v8
Загрузка данных через ДБФ файл Прочитать()
0 Henistaromin
 
09.06.13
12:49
Всем доброго времени суток.
Имеется ДБФ файл с большим количеством строк (250 000) которые необходимо загрузить в регистр сведений.
Написал обработку загрузки данных:


Процедура КнопкаВыполнитьНажатие(Кнопка)
   //Регистр = РегистрыСведений.ДанныеОЗаказНарядах1С77.СоздатьНаборЗаписей();
   //Регистр.Записать();
   ДБФ = Новый XBase;
   ДБФ.ОткрытьФайл("C:\export13.dbf");
   Пока ДБФ.Следующая() Цикл
       Рег = РегистрыСведений.ДанныеОЗаказНарядах1С77.СоздатьНаборЗаписей();
       Рег.Прочитать();
       НовСтрока = Рег.Добавить();
       НовСтрока.ДатаПодпМе = ДБФ.ДатаПодпМе;
       НовСтрока.ДатаПодп = ДБФ.ДатаПодп;
       НовСтрока.Контр = ДБФ.Контр;
       Сообщить("Загрузили контрагента: "+ДБФ.Контр+ДБФ.ДатаПодп);
       НовСтрока.КонтЛицо = ДБФ.КонтЛицо;
       НовСтрока.Адр = ДБФ.Адр;
       НовСтрока.Тел = ДБФ.Тел;
       НовСтрока.Марка = ДБФ.Марка;
       НовСтрока.Мод = ДБФ.Мод;
       НовСтрока.ВИН = ДБФ.ВИН;
       НовСтрока.ВидРемонта = ДБФ.ВидРемонта;
       НовСтрока.ТипРаботы = ДБФ.ТипРаботы;
       НовСтрока.НомерЗН = ДБФ.НомерЗН;
       НовСтрока.Пробег = ДБФ.Пробег;
       НовСтрока.СтРабФ = ДБФ.СтРабФ;
       НовСтрока.СтЗчФ = ДБФ.СтЗчФ;
       НовСтрока.СтатусКЛ = ДБФ.СтатусКЛ;
       Рег.Записать();
   КонецЦикла;
   ДБФ.ЗакрытьФайл();        
КонецПроцедуры

Соответственно после загрузки 50 000 строк действие Рег.Прочитать() выполняется куда намного дольше чем хотелось бы и практически тормозит весь процесс загрузки.
Подскажите пожалуйста, возможно ли этот момент как-либо обойти?
Заранее всем большое спасибо!
1 Кокос
 
09.06.13
12:51
2 Wobland
 
09.06.13
12:51
из цикла вынеси
3 Кокос
 
09.06.13
12:52
(2) точно :)) я чет код не развернул даже
4 Wobland
 
09.06.13
12:53
(0) ты когда в блокноте карандашиком пишешь, для каждой строки перечитываешь блокнот сначала?
5 Кокос
 
09.06.13
12:59
Процедура КнопкаВыполнитьНажатие(Кнопка)
   //Регистр = РегистрыСведений.ДанныеОЗаказНарядах1С77.СоздатьНаборЗаписей();

   //Регистр.Записать();

   ДБФ = Новый XBase;
   ДБФ.ОткрытьФайл("C:\export13.dbf");
       Рег = РегистрыСведений.ДанныеОЗаказНарядах1С77.СоздатьНаборЗаписей();
       Рег.Прочитать();

   Пока ДБФ.Следующая() Цикл

       НовСтрока = Рег.Добавить();
       НовСтрока.ДатаПодпМе = ДБФ.ДатаПодпМе;
       НовСтрока.ДатаПодп = ДБФ.ДатаПодп;
       НовСтрока.Контр = ДБФ.Контр;
       Сообщить("Загрузили контрагента: "+ДБФ.Контр+ДБФ.ДатаПодп);
       НовСтрока.КонтЛицо = ДБФ.КонтЛицо;
       НовСтрока.Адр = ДБФ.Адр;
       НовСтрока.Тел = ДБФ.Тел;
       НовСтрока.Марка = ДБФ.Марка;
       НовСтрока.Мод = ДБФ.Мод;
       НовСтрока.ВИН = ДБФ.ВИН;
       НовСтрока.ВидРемонта = ДБФ.ВидРемонта;
       НовСтрока.ТипРаботы = ДБФ.ТипРаботы;
       НовСтрока.НомерЗН = ДБФ.НомерЗН;
       НовСтрока.Пробег = ДБФ.Пробег;
       НовСтрока.СтРабФ = ДБФ.СтРабФ;
       НовСтрока.СтЗчФ = ДБФ.СтЗчФ;
       НовСтрока.СтатусКЛ = ДБФ.СтатусКЛ;
     
   КонецЦикла;
Рег.Записать();
   ДБФ.ЗакрытьФайл();        
КонецПроцедуры
6 Wobland
 
09.06.13
13:00
(5) скучно? ;)
7 Кокос
 
09.06.13
13:08
(6) ага. большие базы выгружаю загружаю. долго. скучно. пишу сюда между делом :)
8 Henistaromin
 
09.06.13
13:10
Ребят, ошибку понял, сам все поправил, заработало.
Всем большое спасибо.