Ошибка открытия dbf файлов

Ошибка открытия ДБФ

Я

  

andiko

25.12.06 — 17:38

При попытке открыть ДБФ-файл вываливается с ошибкой: «Перед выполнением операции нужно закрыть базу!». Файлы не открыты

ДБФ = СоздатьОбъект(«XBASE»);

ПутьФ = «D:obmen»;

ФС.УстТекКаталог(ПутьФ);

Файл = ФС.НайтиПервыйФайл(«*.*»);

Файл = ФС.НайтиСледующийФайл();

Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге

 Файл = ФС.НайтиСледующийФайл();

 ИмяФайла = ПутьФ+Файл;

 ДБФ.ОткрытьФайл(ИмяФайла);

 Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда

  Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл

   Сообщить(«Не удалось открыть файл!»);

  КонецЕсли;

  

ТелепатБот

1 — 25.12.06 — 17:38

  

andiko

2 — 25.12.06 — 17:39

(1) типа умный…

  

MAG

3 — 25.12.06 — 17:40

Путь = «D:1СBasesNOM.dbf»;
   Если ФС.СуществуетФайл(Путь) = 0 Тогда
       Сообщить(«Файл базы не найден!»,»!»);
       Возврат;
   КонецЕсли;    
   БД = СоздатьОбъект(«XBase»);
   Попытка
       БД.ОткрытьФайл(Путь);
   Исключение              
       БД.ЗакрытьФайл();
       БД.ОткрытьФайл(Путь);
   КонецПопытки;
   Если БД.Открыта() = 0 Тогда
       Сообщить(«Ошибка открытия базы !»,»!»);
       Возврат;
   КонецЕсли;

  

andiko

4 — 25.12.06 — 17:43

(3) прикольно…
а из-за чего ругаться может?

  

andiko

5 — 25.12.06 — 17:54

всеравно не работает

   ДБФ = СоздатьОбъект(«XBASE»);
   ПутьФ = «D:БазыРеализацииАвиапроobmen»;
   ФС.УстТекКаталог(ПутьФ);
   Файл = ФС.НайтиПервыйФайл(«*.*»);
   Файл = ФС.НайтиСледующийФайл();
   Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге
       Файл = ФС.НайтиСледующийФайл();
       ИмяФайла = ПутьФ+Файл;

               Попытка
           ДБФ.ОткрытьФайл(ИмяФайла);
       Исключение
           ДБФ.ЗакрытьФайл();
           ДБФ.ОткрытьФайл(ИмяФайла);
       КонецПопытки;

               Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
           Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
               Сообщить(«Не удалось открыть файл!»);
           КонецЕсли;

  

Каанкереде

6 — 25.12.06 — 17:55

(4) ты этот D:1СBasesNOM.dbf случаем никаким dbfViewer’ ом не открыл параллельно?

  

andiko

7 — 25.12.06 — 17:58

(6) так в том-то и дело: перезагружался, удалял — ничего не помогает :(

  

Каанкереде

8 — 25.12.06 — 18:03

(7) а пробовал этот файл еще чем нибудь открыть? тем же dbfViewer или dbfNavigator

  

andiko

9 — 25.12.06 — 18:04

(8) нормально открывается

  

Прохожий

10 — 25.12.06 — 18:13

(9) Есть программа, unlocker, вроде…

  

andiko

11 — 25.12.06 — 18:14

(10) файл ничем/никем не заблокирован: нормально удаляется

  

Прохожий

12 — 25.12.06 — 18:14

А зачем ты его удаляешь? Не удаляй…

  

Прохожий

13 — 25.12.06 — 18:15

У тебя именно этот файл не открывается или вообще ни один?

  

andiko

14 — 25.12.06 — 18:20

(13) у меня их в папке два, не один не открывается. перезагружался — не помогло. из внешней обработки, такой же в ноль код работает, из глобальника — нет

  

Tymoha

15 — 25.12.06 — 18:25

(14)атрибуты файла проверь

  

andiko

16 — 25.12.06 — 18:52

(15) пучком все с атрибутами…

  

andiko

17 — 25.12.06 — 19:24

неужели ни у кого такого небыло ?

  

DrShad

18 — 25.12.06 — 19:28

имена файлов давай?

  

andiko

19 — 25.12.06 — 19:32

(18) не понял?

  

DrShad

20 — 25.12.06 — 19:35

у меня так было когда файлы имели кирилические символы или были больше 8 символов в названии

  

andiko

21 — 25.12.06 — 19:36

(20) у меня файлы называются 1.dbf, 2.dbf, 3.dbf и т.д.
причем обработкой открываются, а из глобальника нет

  

DrShad

22 — 25.12.06 — 19:38

какой обработкой?

  

andiko

23 — 25.12.06 — 19:39

(22)точной копией процедуры из глобальника. написал чтобы удобнее было отладить

  

DrShad

24 — 25.12.06 — 19:42

та что в (0)

  

DrShad

25 — 25.12.06 — 19:42

а ты ее из глобальника убрал?

  

DrShad

26 — 25.12.06 — 19:44

+(25) т.е. они у тебя не пытаются дважды открыться? ты их после пользования закрываешь?

  

andiko

27 — 25.12.06 — 19:46

(26) написал во внешней обработке, отладил. все гуд
впихнул в глобальник — выдает ошибку. удалил файлы — пофиг. перегрузился — пофиг, атрибуты файлов — гуд

  

DrShad

28 — 25.12.06 — 19:48

а отладчиком что показывает?

  

andiko

29 — 25.12.06 — 19:50

(28) а отладчик куда пихать?

  

mun2

30 — 25.12.06 — 19:50

У тебя переменные в глобальнике не пересекаются?

  

DrShad

31 — 25.12.06 — 19:55

а что ты вообще в них пишешь?

  

andiko

32 — 26.12.06 — 10:37

(30) переменные не пересекаются
(31) в файле содержится структура справочника другой базы

  

A_M-ko

33 — 26.12.06 — 11:37

Был у меня такой прикол. Для открытия файла запустил цикл, так вот файл открылся с четвертой попытки. Платформа 1С рулит.

  

andiko

34 — 26.12.06 — 11:40

(33) а лечить как?

  

A_M-ko

35 — 26.12.06 — 11:42

Платформу лечить нужно. Не ожидает она момента открытия, спешит куда-то.

  

andiko

36 — 26.12.06 — 11:43

(35) а конкретные предложения? ведь из внешней обработки все работает

  

A_M-ko

37 — 26.12.06 — 11:43

Ха. А уменя как раз во внешней обработке не работало.

  

andiko

38 — 26.12.06 — 11:44

(37) а в глобальном все пучком?

  

A_M-ko

39 — 26.12.06 — 11:45

Не заморачивайся. Поставь цикл и все срастется. Секунда туда секунда сюда. Все остальное работает дольше.

  

andiko

40 — 26.12.06 — 11:47

цикл с 1 по 100 000 хватит?

  

A_M-ko

41 — 26.12.06 — 11:49

Да я же говорю с четвертой попытки. Цикл

ДБ.ОткрытьФайл(ИмяФайла);

Пока ДБ.Открыта()=0 Цикл

   ДБ.ОткрытьФайл(ИмяФайла);

КонецЦикла;

  

andiko

42 — 26.12.06 — 11:51

(41) т.е. этот кусок в цикл на 4-5 раз?

  

Один С

43 — 26.12.06 — 11:56

(40) Поставь перед словом «Попытка»  строчку Сообщить(Файл);

  

A_M-ko

44 — 26.12.06 — 11:57

Да нет, это все. Просто я там счетчик при отладке вставлял и его потом смотрел при выходе из цикла.

  

andiko

45 — 26.12.06 — 12:00

(43) поставил. сообщает имя файла который там есть
(44) понял, спасибо. буду пробывать (бредятина какая-то)

  

andiko

46 — 26.12.06 — 12:15

прокрутилось чуть больше 10 раз, толку 0

  

andiko

47 — 26.12.06 — 12:42

уже минут 40 крутится и не читает

  

A_M-ko

48 — 26.12.06 — 12:44

Ну извини. Я описал как было у меня.

  

A_M-ko

49 — 26.12.06 — 12:48

У меня правда проблема была в том, что файл создавался в обработке. Перед открытием стоял цикл задержки по условию наличия файла в каталоге. Так вот слету файл не открывался, а с четвертой попытки все получалось. Может у тебя он действительно чем-то он блокируется?

  

andiko

50 — 26.12.06 — 12:49

(49)  я так понимаю, что если файл блокируется, то с ним ничего нельзя сделать: не удалить, не переместить, но! у меня и удаляется и перемещается

  

A_M-ko

51 — 26.12.06 — 12:52

А нет ли ограничения на количество открытых файлов xBase? Я не знаю, просто предположение?

  

andiko

52 — 26.12.06 — 12:58

(51) это как?

  

A_M-ko

53 — 26.12.06 — 13:00

И еще. Когда я в глобальном модуле при начале работы запустил небольшую обработку справочника на 23000 элементов, то работа системы продолжилась, а справочник продолжал обрабатываться, и меню осталось недоступным. Как у тебя вызывается эта процедура?

  

A_M-ko

54 — 26.12.06 — 13:03

(52) Сколько одновременно можно создать объектов xBase?

  

andiko

55 — 26.12.06 — 13:12

(53) вызывается по таймеру
(54) как узнать?

  

Один С

56 — 26.12.06 — 13:18

Че то я не понял. Зачем ты файлы открываешь, закрываешь?

А строчка «Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда»

вообще непонятно для чего.

  

andiko

57 — 26.12.06 — 13:21

(56) цикл по файлам в каталоге

  

Иде я

58 — 26.12.06 — 13:30

Нука отпость сюда путь к каталогу…
и код обработки

  

andiko

59 — 26.12.06 — 13:33

ДБФ = СоздатьОбъект(«XBASE»);
   ПутьФ = «D:obmen»;
   ФС.УстТекКаталог(ПутьФ);
   Файл = ФС.НайтиПервыйФайл(«*.*»);
   Файл = ФС.НайтиСледующийФайл();
   Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге
       Файл = ФС.НайтиСледующийФайл();
       ИмяФайла = ПутьФ+Файл;

               ДБФ.ОткрытьФайл(ИмяФайла);

       Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
           Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
               Сообщить(«Не удалось открыть файл!»);
           КонецЕсли;

и так далее

  

A_M-ko

60 — 26.12.06 — 13:34

Може все дело в вызове по таймеру? Может что-то с синхронизацией событий открытия-закрытия? Эх отладчик тупой.

  

  

Иде я

61 — 26.12.06 — 13:35

«*.*» Че эт за лажа ?
Ты все подряд пытаешься открывать ? может отфильтруешь по «*.dbf» ?

  

Иде я

62 — 26.12.06 — 13:37

И блин, нафига ты вначале пытаешься открыть файл, а потом только проверяешь существование его ?

  

Иде я

63 — 26.12.06 — 13:37

Файл = ФС.НайтиСледующийФайл();
сообщить(Файл);
       ИмяФайла = ПутьФ+Файл;
Сообщить(ИмяФайла);

  

andiko

64 — 26.12.06 — 14:10

(61) у меня там только дбф
(62) исправил — пофиг

  

andiko

65 — 26.12.06 — 15:14

спецы иссякли…

  

Один С

66 — 26.12.06 — 15:26

Выложи процедуру целиком.

  

vpetrov

67 — 26.12.06 — 15:32

Возможно, что у тебя неправильно отрабатывает путь… Попробуй полностью прописать путь, с учетом сетевого адреса, либо попробуй перекинуть этот каталог на диск С, и соответственно в коде поменять путь с Д на С.

  

andiko

68 — 26.12.06 — 15:33

ДБФ = СоздатьОбъект(«XBASE»);
   ПутьФ = «D:БазыРеализацииАвиапроobmen»;
   ФС.УстТекКаталог(ПутьФ);
   Файл = ФС.НайтиПервыйФайл(«*.*»);
   Файл = ФС.НайтиСледующийФайл();
   Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге
       Файл = ФС.НайтиСледующийФайл();
       ИмяФайла = ПутьФ+Файл;

               ДБФ.ОткрытьФайл(ИмяФайла);

               Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
           Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
               Сообщить(«Не удалось открыть файл!»);
           КонецЕсли;

                       Состояние(«Загружаем данные…»);

                       тз = СоздатьОбъект(«ТаблицаЗначений»);
           тз1 = СоздатьОбъект(«ТаблицаЗначений»);
           ДБФ.Первая(); //позиционируемся на первой записи
           Пока ДБФ.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл
               тз.НоваяСтрока();
               тз1.НоваяСтрока();
               // шапка документа
               тз.NOMERDOC = ДБФ.NOMERDOC;   // номер документа

               тз.KOLVO    = ДБФ.KOLVO;       // количество
               ДБФ.Следующая();
           КонецЦикла;
           ДБФ.ЗакрытьФайл();
           ФС.УдалитьФайл(ИмяФайла);
       КонецЕсли; // проверка на наличе файла    
   КонецЦикла; // конец цикла по файлам в папке

  

andiko

69 — 26.12.06 — 15:33

(67) с путем все ок

  

Казанская Сирота

70 — 26.12.06 — 15:37

Попробуй из пути убрать Кириллицу. C:DBFfilesobmen

  

Казанская Сирота

71 — 26.12.06 — 15:39

Кста у тя поиск пропускает первые два файла.

Файл = ФС.НайтиПервыйФайл(«*.*»);  //ты уже на файл спозиционировался

Файл = ФС.НайтиСледующийФайл(); // гоп на второй

Пока ПустоеЗначение(Файл) = 0 Цикл

Файл = ФС.НайтиСледующийФайл(); // гоп на третий ;)

ИмяФайла = ПутьФ+Файл;

  

Казанская Сирота

72 — 26.12.06 — 15:41

Делай

Файл = ФС.НайтиСледующийФайл(); // гоп на третий ;)

Если ПустоеЗначение(Файл)=1 Тогда

 Прервать;

КонецЕсли;

КонецЦикла;

  

Казанская Сирота

73 — 26.12.06 — 15:41

// гоп на третий ;)  не отсюда

  

Shaman100M

74 — 26.12.06 — 15:42

(21) Не начинай файл с цифры. Сделай хотя бы F1.dbf F2.dbf …

  

Shaman100M

75 — 26.12.06 — 15:47

В фоксе такие файлы не открываются

  

Один С

76 — 26.12.06 — 16:20

ДБФ = СоздатьОбъект(«XBASE»);

   ПутьФ = «D:БазыРеализацииАвиапроobmen»;

   ФС.УстТекКаталог(ПутьФ);

   Файл = ФС.НайтиПервыйФайл(«*.dbf»);

   Пока ПустоеЗначение(Файл) = 0 Цикл

       ИмяФайла = ПутьФ+Файл;    

       ДБФ.ОткрытьФайл(ИмяФайла);    

       Состояние(«Загружаем данные…»);    

           тз = СоздатьОбъект(«ТаблицаЗначений»);

           тз1 = СоздатьОбъект(«ТаблицаЗначений»);

           ДБФ.Первая(); //позиционируемся на первой записи

           Пока ДБФ.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл

               тз.НоваяСтрока();

               тз1.НоваяСтрока();

               тз.NOMERDOC = ДБФ.NOMERDOC;   // номер документа

               тз.KOLVO    = ДБФ.KOLVO;       // количество

               ДБФ.Следующая();

           КонецЦикла;

           ДБФ.ЗакрытьФайл();

           ФС.УдалитьФайл(ИмяФайла);

           Файл = ФС.НайтиСледующийФайл();

   КонецЦикла;

  

andiko

77 — 26.12.06 — 16:29

(76) в таком варианте работает, только загружает один файл, а остальные удаляет

  

A_M-ko

78 — 26.12.06 — 16:33

А может dbf-файлы не одного типа (FoxPro, dBase), например файлы типа Fox2x открываются а выше версий нет.

  

Shaman100M

79 — 26.12.06 — 16:34

(77) Не нарушай выборку удалением, сделай так:

Спс1=СоздатьОбъект(«СписокЗначений»);

Файл=ФС.НайтиПервыйФайл(«*.*»);

Пока пустоеЗначение(Файл)=0 Цикл

   Спс1.ДобавитьЗначение(Файл);

   Файл=ФС.НайтиСледующийФайл();

КонцЦИкла;

а потом обрабатывай список.

  

andiko

80 — 26.12.06 — 16:39

(78) файлы созданы в 1С
(79) а не черезчур запутанно и сложно?

  

Один С

81 — 26.12.06 — 16:41

Вот тебе окончательный вариант. Он работает.

   ДБФ = СоздатьОбъект(«XBASE»);

   ПутьФ = «D:БазыРеализацииАвиапроobmen»;

   ФС.УстТекКаталог(ПутьФ);

   Файл = ФС.НайтиПервыйФайл(«*.dbf»);

   Пока ПустоеЗначение(Файл) = 0 Цикл

       ИмяФайла = ПутьФ+Файл;    

       ДБФ.ОткрытьФайл(ИмяФайла);    

       Состояние(«Загружаем данные…»);    

           тз = СоздатьОбъект(«ТаблицаЗначений»);

           тз1 = СоздатьОбъект(«ТаблицаЗначений»);

           ДБФ.Первая(); //позиционируемся на первой записи

           Пока ДБФ.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл

               тз.НоваяСтрока();

               тз1.НоваяСтрока();

               тз.NOMERDOC = ДБФ.NOMERDOC;   // номер документа

               тз.KOLVO    = ДБФ.KOLVO;       // количество

               ДБФ.Следующая();

           КонецЦикла;

           ДБФ.ЗакрытьФайл();

           Файл = ФС.НайтиСледующийФайл();

           ФС.УдалитьФайл(ИмяФайла);          

   КонецЦикла;

  

andiko

82 — 26.12.06 — 16:59

(81) блин… не работает

  

Один С

83 — 26.12.06 — 17:06

(82) Где не работает?

  

Иде я

84 — 26.12.06 — 17:06

Первые два файла будут «.» и «..»

  

andiko

85 — 26.12.06 — 17:08

(84) угу

  

andiko

86 — 26.12.06 — 17:12

(83) загружает один из двух файлов и все

  

A_M-ko

87 — 27.12.06 — 11:01

А может не удалять в цикле файлы, а удалить потом после загрузки?

1

2

3

Показывать по
10
20
40
сообщений

Новая тема

Ответить

Тимур

Дата регистрации: 24.06.2019
Сообщений: 18

Начну с того что с 1с столкнулся так сказать впервые. стоит какая то 1с. 7.7 (камин)
Попросили помочь решить проблему, естественно резервных копий БД нет.
при запуске 1с выдает ошибку на 1SENTRY.DBF.
почитав форумы и т.п. попробовал сделал вот что:
Удалил все файлы CDX запустил конфигуратор, и сделал Тестирование и исправление
по окончанию выдало вот что:

Таблица — 1SENTRY. Не сошлось наименование поля номер 19 — ODTSC0
Проверка физической целостности таблиц ИБ. Неисправимая ошибка.
Таблица — 1SENTRY. Не сошлось наименование поля номер 19 — ODTSC0
Проверка физической целостности таблиц ИБ. Неисправимая ошибка.

ссылка на файл 1SENTRY — yadi.sk/i/XoA8cr52n4JN2Q
Почитав форумы понял что как-то ковыряют проблемный файл что-то убирают и т.п. и все становится хорошо, если кому не сложно помогите или расскажите что делать. Заранее огромное спасибо!

espero

Дата регистрации: 01.03.2004
Сообщений: 8

Тимур,
Кроме файла 1SENTRY надо положить хотя бы файлы 1cv7.md и 1cv7.dd

Valentin46

Дата регистрации: 10.02.2011
Сообщений: 1041

Тимур, прежде чем «ковырять» проблемный файл, следует установить какой-нибудь редактор dbf-файлов, например, ReDbf.

Тимур

Дата регистрации: 24.06.2019
Сообщений: 18

Valentin46, Устанавливал. Не открывает, ошибку выдает

Тимур

Дата регистрации: 24.06.2019
Сообщений: 18

espero, yadi.sk/d/PgZSYmHrYI6bdg

Тимур

Дата регистрации: 24.06.2019
Сообщений: 18

Valentin46 пишет:

Цитата

                                             Ответ на
                   пост №1

                    Тимур , прежде чем «ковырять» проблемный файл следует установить какой-нибудь редактор dbf-файлов, например, ReDbf.

Выдает ошибку: Ошибка при открытии файла — T1: Error 7016: corrupt table. make sure you are not attempting to open a DBF with an ADT table type or vice versa

espero

Дата регистрации: 01.03.2004
Сообщений: 8

Тимур,
в архиве нет файла 1SENTRY.dbf

Тимур

Дата регистрации: 24.06.2019
Сообщений: 18

espero пишет:

Цитата

Ответ на
пост №5

Тимур , в архиве нет файла 1SENTRY.dbf

сорри в топе темы не то кинул
вот — yadi.sk/d/zCGQhQnKwULh7A

espero

Дата регистрации: 01.03.2004
Сообщений: 8

Тимур,
Получил. Сейчас под руками нет необходимых инструментов. Вечером сообщу результат.

Тимур

Дата регистрации: 24.06.2019
Сообщений: 18

espero пишет:

Цитата

                                             Ответ на
                   пост №8

                    Тимур , Получил. Сейчас под руками нет необходимых инструментов. Вечером сообщу результат.

буду с нетерпением ждать

by Matthew Adams

Matthew is a freelancer who has produced a variety of articles on various topics related to technology. His main focus is the Windows OS and all the things… read more


Updated on June 5, 2020

fix corrupted FoxPro DBF files

XINSTALL BY CLICKING THE DOWNLOAD FILE

To fix various PC problems, we recommend DriverFix:
This software will keep your drivers up and running, thus keeping you safe from common computer errors and hardware failure. Check all your drivers now in 3 easy steps:

  1. Download DriverFix (verified download file).
  2. Click Start Scan to find all problematic drivers.
  3. Click Update Drivers to get new versions and avoid system malfunctionings.
  • DriverFix has been downloaded by 0 readers this month.

DBF is a database file format that you can utilize in FoxPro and other DBMS software, such as dBase and MS Access. The DBF format is one prone to corruption, so it’s worth saving a backup DBF copy. However, if you haven’t kept a backup, you can still fix a corrupted DBF. Below are a few resolutions that might fix corrupted DBF files.

Solutions to fix corrupted FoxPro DBF files

  1. Check if There’s a Previous DBF Version
  2. Fix the DBF at Recovery Toolbox
  3. Fix the DBF with DBF Repair Toolbox

1. Check if There’s a Previous DBF Version

First, check if File History has kept a previous version backup of your DBF. If you’ve enabled File History in Windows 10, you might be in luck. To check for an earlier file version, open the DBF’s folder in Explorer. Then right-click the DBF and select Restore previous versions. Select the Previous Versions tab on the window that opens to see if there’s another file version. If so, you can select the previous DBF file and click Restore to restore it.

— RELATED: How to fix corrupted Microsoft Access databases

2. Fix the DBF at Recovery Toolbox

Recovery Toolbox is a DBF recovery service that you can utilize in your browser. You can fix a FoxPro, dBase and Clipper DBF at Recovery Toolbox. Note that the service charge amounts to $10 per one GB, so it might be more economical to utilize third-party software if you need to repair a three or four GB DBF.

  • To fix a DBF at Recovery Toolbox, open this webpage in your browser.

  • Then you can press the Select File button to select your corrupted DBF.
  • Enter your email address and the captcha code in the email and image text boxes.
  • Click the Next Step button to fix the corrupted file.

3. Fix the DBF with DBF Repair Toolbox

There are numerous third-party software utilities that repair FoxPro DBF files. The DBF Repair Toolbox software fixes most Visual FoxPro DBF file versions. DBF Repair Toolbox is retailing at $27, and you can try out a trial version. This is how you can repair DBFs with DBF Repair Toolbox.

  • Click Download on this page to save the DBF Repair Toolbox setup wizard to a folder.
  • Open the software’s installer to install DBF Repair.
  • Then click DBF Repair Toolbox on the Start menu to open the software’s window.
  • Click the folder button on the right of the Source file name path box to select a corrupted DBF to fix.
  • Click the Analyze button, and select the Yes option on the Confirm dialog box.

  • After fixing a DBF, the software will show you content of the file as below. Click the Yes button to continue.

  • Select a folder path and file title for the fixed DBF in the Repaired file name box.
  • Choose a file version for the DBF from the drop-down menu in the snapshot directly below.

  • Then select the Save option to save the fixed file.
  • Press the Finish button to exit.

So you can repair a corrupted DBF with DBF Repair Toolbox and Recovery Toolbox. DataNumen DBF Repair and SysInfoTools DBF Recovery are also two other utilities worth noting that fix FoxPro DBF files.

RELATED STORIES TO CHECK OUT:

  • How to fix corrupted images online [Best tools to use in 2018]
  • How to fix corrupted .NET Framework issues
  • How to fix corrupted CSV files in Windows 10

Still having issues? Fix them with this tool:

SPONSORED

Some driver-related issues can be solved faster by using a dedicated tool. If you’re still having problems with your drivers, just download DriverFix and get it up and running in a few clicks. After that, let it take over and fix all of your errors in no time!

newsletter icon

Выскакивает сообщение «Error#:-200 File is not a Data File», окошко системное, а не от 1С.
Код такой:
ПутьКФайл = СокрЛП(ПутьКФайлу);
ФайлDBF = Новый XBase; // создаем новый объект
ФайлDBF.Кодировка=КодировкаXBase.OEM;
ФайлDBF.ОткрытьФайл(ПутьКФайл,,Истина); // открытие файла
ФайлDBF.Первая(); // устанавливает курсор на первую запись

Пока НЕ ФайлDBF.ВКонце() Цикл
// тут действия с данными
ФайлDBF.Следующая(); //передвигаем курсор далее
КонецЦикла;


  • Вопрос задан

    более трёх лет назад

  • 213 просмотров

  • Remove From My Forums
  • Вопрос

  • Не открывается dbf-файл если щёлкать по нему правой кнопкой мыши и выбирать «Открыть с помощью — Microsoft Office Excel». Самое удивительное, что в списке процессов вообще не появляется Excel. Никаких ошибок нигде не регистрируется (ни визуально, ни
    в Просмотре событий). Если связать расширение dbf с Excel то по двойному щелчку также Excel не запускается.

    Если открыть Excel 2003 и из его меню Файл — Открыть файл выбрать dbf-файл — то файл открывается нормально. Или можно в уже открытый Excel «перетащить и бросить» мышкой dbf-файлик — тоже будет всё нормально.

    Проблема только на одном компьютере в организации. Все остальные компьютеры спокойно открывают эти dbf-файлы.


    MCSA

Ответы

  • Спасибо. Но, увы, не помогло.

    Зато помогло следующее:
    1. Если у пользователя нет прав администратора — временно дать.
    2. Пуск — Панель управления — Свойства папки — Типы файлов. Найти расширение
    dbf, выделить его и нажать на кнопку Удалить.
    3. Тут же нажать на кнопку Создать. Указать в текстовом поле расширение DBF и нажать на кнопочку
    Дополнительно. В раскрывающемся списке «Сопоставляемый тип файла» выбрать
    «Лист Microsoft Office Excel»
    4. Если пользователю давали временно права администратора — отобрать их у него.


    MCSA

    • Помечено в качестве ответа

      22 сентября 2011 г. 12:48

    • Изменено
      ЙоЖыГ
      22 сентября 2011 г. 12:49
      ачепятка

Ошибка открытия ДБФ

Я
   andiko

25.12.06 — 17:38

При попытке открыть ДБФ-файл вываливается с ошибкой: «Перед выполнением операции нужно закрыть базу!». Файлы не открыты

ДБФ = СоздатьОбъект(«XBASE»);

ПутьФ = «D:obmen»;

ФС.УстТекКаталог(ПутьФ);

Файл = ФС.НайтиПервыйФайл(«*.*»);

Файл = ФС.НайтиСледующийФайл();

Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге

 Файл = ФС.НайтиСледующийФайл();

 ИмяФайла = ПутьФ+Файл;

 ДБФ.ОткрытьФайл(ИмяФайла);

 Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда

  Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл

   Сообщить(«Не удалось открыть файл!»);

  КонецЕсли;

   ТелепатБот

1 — 25.12.06 — 17:38

   andiko

2 — 25.12.06 — 17:39

(1) типа умный…

   MAG

3 — 25.12.06 — 17:40

Путь = «D:1СBasesNOM.dbf»;
   Если ФС.СуществуетФайл(Путь) = 0 Тогда
       Сообщить(«Файл базы не найден!»,»!»);
       Возврат;
   КонецЕсли;    
   БД = СоздатьОбъект(«XBase»);
   Попытка
       БД.ОткрытьФайл(Путь);
   Исключение              
       БД.ЗакрытьФайл();
       БД.ОткрытьФайл(Путь);
   КонецПопытки;
   Если БД.Открыта() = 0 Тогда
       Сообщить(«Ошибка открытия базы !»,»!»);
       Возврат;
   КонецЕсли;

   andiko

4 — 25.12.06 — 17:43

(3) прикольно…
а из-за чего ругаться может?

   andiko

5 — 25.12.06 — 17:54

всеравно не работает

   ДБФ = СоздатьОбъект(«XBASE»);
   ПутьФ = «D:БазыРеализацииАвиапроobmen»;
   ФС.УстТекКаталог(ПутьФ);
   Файл = ФС.НайтиПервыйФайл(«*.*»);
   Файл = ФС.НайтиСледующийФайл();
   Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге
       Файл = ФС.НайтиСледующийФайл();
       ИмяФайла = ПутьФ+Файл;

               Попытка
           ДБФ.ОткрытьФайл(ИмяФайла);
       Исключение
           ДБФ.ЗакрытьФайл();
           ДБФ.ОткрытьФайл(ИмяФайла);
       КонецПопытки;

               Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
           Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
               Сообщить(«Не удалось открыть файл!»);
           КонецЕсли;

   Каанкереде

6 — 25.12.06 — 17:55

(4) ты этот D:1СBasesNOM.dbf случаем никаким dbfViewer’ ом не открыл параллельно?

   andiko

7 — 25.12.06 — 17:58

(6) так в том-то и дело: перезагружался, удалял — ничего не помогает :(

   Каанкереде

8 — 25.12.06 — 18:03

(7) а пробовал этот файл еще чем нибудь открыть? тем же dbfViewer или dbfNavigator

   andiko

9 — 25.12.06 — 18:04

(8) нормально открывается

   Прохожий

10 — 25.12.06 — 18:13

(9) Есть программа, unlocker, вроде…

   andiko

11 — 25.12.06 — 18:14

(10) файл ничем/никем не заблокирован: нормально удаляется

   Прохожий

12 — 25.12.06 — 18:14

А зачем ты его удаляешь? Не удаляй…

   Прохожий

13 — 25.12.06 — 18:15

У тебя именно этот файл не открывается или вообще ни один?

   andiko

14 — 25.12.06 — 18:20

(13) у меня их в папке два, не один не открывается. перезагружался — не помогло. из внешней обработки, такой же в ноль код работает, из глобальника — нет

   Tymoha

15 — 25.12.06 — 18:25

(14)атрибуты файла проверь

   andiko

16 — 25.12.06 — 18:52

(15) пучком все с атрибутами…

   andiko

17 — 25.12.06 — 19:24

неужели ни у кого такого небыло ?

   DrShad

18 — 25.12.06 — 19:28

имена файлов давай?

   andiko

19 — 25.12.06 — 19:32

(18) не понял?

   DrShad

20 — 25.12.06 — 19:35

у меня так было когда файлы имели кирилические символы или были больше 8 символов в названии

   andiko

21 — 25.12.06 — 19:36

(20) у меня файлы называются 1.dbf, 2.dbf, 3.dbf и т.д.
причем обработкой открываются, а из глобальника нет

   DrShad

22 — 25.12.06 — 19:38

какой обработкой?

   andiko

23 — 25.12.06 — 19:39

(22)точной копией процедуры из глобальника. написал чтобы удобнее было отладить

   DrShad

24 — 25.12.06 — 19:42

та что в (0)

   DrShad

25 — 25.12.06 — 19:42

а ты ее из глобальника убрал?

   DrShad

26 — 25.12.06 — 19:44

+(25) т.е. они у тебя не пытаются дважды открыться? ты их после пользования закрываешь?

   andiko

27 — 25.12.06 — 19:46

(26) написал во внешней обработке, отладил. все гуд
впихнул в глобальник — выдает ошибку. удалил файлы — пофиг. перегрузился — пофиг, атрибуты файлов — гуд

   DrShad

28 — 25.12.06 — 19:48

а отладчиком что показывает?

   andiko

29 — 25.12.06 — 19:50

(28) а отладчик куда пихать?

   mun2

30 — 25.12.06 — 19:50

У тебя переменные в глобальнике не пересекаются?

   DrShad

31 — 25.12.06 — 19:55

а что ты вообще в них пишешь?

   andiko

32 — 26.12.06 — 10:37

(30) переменные не пересекаются
(31) в файле содержится структура справочника другой базы

   A_M-ko

33 — 26.12.06 — 11:37

Был у меня такой прикол. Для открытия файла запустил цикл, так вот файл открылся с четвертой попытки. Платформа 1С рулит.

   andiko

34 — 26.12.06 — 11:40

(33) а лечить как?

   A_M-ko

35 — 26.12.06 — 11:42

Платформу лечить нужно. Не ожидает она момента открытия, спешит куда-то.

   andiko

36 — 26.12.06 — 11:43

(35) а конкретные предложения? ведь из внешней обработки все работает

   A_M-ko

37 — 26.12.06 — 11:43

Ха. А уменя как раз во внешней обработке не работало.

   andiko

38 — 26.12.06 — 11:44

(37) а в глобальном все пучком?

   A_M-ko

39 — 26.12.06 — 11:45

Не заморачивайся. Поставь цикл и все срастется. Секунда туда секунда сюда. Все остальное работает дольше.

   andiko

40 — 26.12.06 — 11:47

цикл с 1 по 100 000 хватит?

   A_M-ko

41 — 26.12.06 — 11:49

Да я же говорю с четвертой попытки. Цикл

ДБ.ОткрытьФайл(ИмяФайла);

Пока ДБ.Открыта()=0 Цикл

   ДБ.ОткрытьФайл(ИмяФайла);

КонецЦикла;

   andiko

42 — 26.12.06 — 11:51

(41) т.е. этот кусок в цикл на 4-5 раз?

   Один С

43 — 26.12.06 — 11:56

(40) Поставь перед словом «Попытка»  строчку Сообщить(Файл);

   A_M-ko

44 — 26.12.06 — 11:57

Да нет, это все. Просто я там счетчик при отладке вставлял и его потом смотрел при выходе из цикла.

   andiko

45 — 26.12.06 — 12:00

(43) поставил. сообщает имя файла который там есть
(44) понял, спасибо. буду пробывать (бредятина какая-то)

   andiko

46 — 26.12.06 — 12:15

прокрутилось чуть больше 10 раз, толку 0

   andiko

47 — 26.12.06 — 12:42

уже минут 40 крутится и не читает

   A_M-ko

48 — 26.12.06 — 12:44

Ну извини. Я описал как было у меня.

   A_M-ko

49 — 26.12.06 — 12:48

У меня правда проблема была в том, что файл создавался в обработке. Перед открытием стоял цикл задержки по условию наличия файла в каталоге. Так вот слету файл не открывался, а с четвертой попытки все получалось. Может у тебя он действительно чем-то он блокируется?

   andiko

50 — 26.12.06 — 12:49

(49)  я так понимаю, что если файл блокируется, то с ним ничего нельзя сделать: не удалить, не переместить, но! у меня и удаляется и перемещается

   A_M-ko

51 — 26.12.06 — 12:52

А нет ли ограничения на количество открытых файлов xBase? Я не знаю, просто предположение?

   andiko

52 — 26.12.06 — 12:58

(51) это как?

   A_M-ko

53 — 26.12.06 — 13:00

И еще. Когда я в глобальном модуле при начале работы запустил небольшую обработку справочника на 23000 элементов, то работа системы продолжилась, а справочник продолжал обрабатываться, и меню осталось недоступным. Как у тебя вызывается эта процедура?

   A_M-ko

54 — 26.12.06 — 13:03

(52) Сколько одновременно можно создать объектов xBase?

   andiko

55 — 26.12.06 — 13:12

(53) вызывается по таймеру
(54) как узнать?

   Один С

56 — 26.12.06 — 13:18

Че то я не понял. Зачем ты файлы открываешь, закрываешь?

А строчка «Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда»

вообще непонятно для чего.

   andiko

57 — 26.12.06 — 13:21

(56) цикл по файлам в каталоге

   Иде я

58 — 26.12.06 — 13:30

Нука отпость сюда путь к каталогу…
и код обработки

   andiko

59 — 26.12.06 — 13:33

ДБФ = СоздатьОбъект(«XBASE»);
   ПутьФ = «D:obmen»;
   ФС.УстТекКаталог(ПутьФ);
   Файл = ФС.НайтиПервыйФайл(«*.*»);
   Файл = ФС.НайтиСледующийФайл();
   Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге
       Файл = ФС.НайтиСледующийФайл();
       ИмяФайла = ПутьФ+Файл;

               ДБФ.ОткрытьФайл(ИмяФайла);

       Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
           Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
               Сообщить(«Не удалось открыть файл!»);
           КонецЕсли;

и так далее

   A_M-ko

60 — 26.12.06 — 13:34

Може все дело в вызове по таймеру? Может что-то с синхронизацией событий открытия-закрытия? Эх отладчик тупой.

   Иде я

61 — 26.12.06 — 13:35

«*.*» Че эт за лажа ?
Ты все подряд пытаешься открывать ? может отфильтруешь по «*.dbf» ?

   Иде я

62 — 26.12.06 — 13:37

И блин, нафига ты вначале пытаешься открыть файл, а потом только проверяешь существование его ?

   Иде я

63 — 26.12.06 — 13:37

Файл = ФС.НайтиСледующийФайл();
сообщить(Файл);
       ИмяФайла = ПутьФ+Файл;
Сообщить(ИмяФайла);

   andiko

64 — 26.12.06 — 14:10

(61) у меня там только дбф
(62) исправил — пофиг

   andiko

65 — 26.12.06 — 15:14

спецы иссякли…

   Один С

66 — 26.12.06 — 15:26

Выложи процедуру целиком.

   vpetrov

67 — 26.12.06 — 15:32

Возможно, что у тебя неправильно отрабатывает путь… Попробуй полностью прописать путь, с учетом сетевого адреса, либо попробуй перекинуть этот каталог на диск С, и соответственно в коде поменять путь с Д на С.

   andiko

68 — 26.12.06 — 15:33

ДБФ = СоздатьОбъект(«XBASE»);
   ПутьФ = «D:БазыРеализацииАвиапроobmen»;
   ФС.УстТекКаталог(ПутьФ);
   Файл = ФС.НайтиПервыйФайл(«*.*»);
   Файл = ФС.НайтиСледующийФайл();
   Пока ПустоеЗначение(Файл) = 0 Цикл // цикл по файлам в каталоге
       Файл = ФС.НайтиСледующийФайл();
       ИмяФайла = ПутьФ+Файл;

               ДБФ.ОткрытьФайл(ИмяФайла);

               Если ФС.СуществуетФайл(ИмяФайла) = 1 Тогда
           Если ДБФ.Открыта()=0 Тогда //проверяем, удалось ли открыть файл
               Сообщить(«Не удалось открыть файл!»);
           КонецЕсли;

                       Состояние(«Загружаем данные…»);

                       тз = СоздатьОбъект(«ТаблицаЗначений»);
           тз1 = СоздатьОбъект(«ТаблицаЗначений»);
           ДБФ.Первая(); //позиционируемся на первой записи
           Пока ДБФ.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл
               тз.НоваяСтрока();
               тз1.НоваяСтрока();
               // шапка документа
               тз.NOMERDOC = ДБФ.NOMERDOC;   // номер документа

               тз.KOLVO    = ДБФ.KOLVO;       // количество
               ДБФ.Следующая();
           КонецЦикла;
           ДБФ.ЗакрытьФайл();
           ФС.УдалитьФайл(ИмяФайла);
       КонецЕсли; // проверка на наличе файла    
   КонецЦикла; // конец цикла по файлам в папке

   andiko

69 — 26.12.06 — 15:33

(67) с путем все ок

   Казанская Сирота

70 — 26.12.06 — 15:37

Попробуй из пути убрать Кириллицу. C:DBFfilesobmen

   Казанская Сирота

71 — 26.12.06 — 15:39

Кста у тя поиск пропускает первые два файла.

Файл = ФС.НайтиПервыйФайл(«*.*»);  //ты уже на файл спозиционировался

Файл = ФС.НайтиСледующийФайл(); // гоп на второй

Пока ПустоеЗначение(Файл) = 0 Цикл

Файл = ФС.НайтиСледующийФайл(); // гоп на третий ;)

ИмяФайла = ПутьФ+Файл;

   Казанская Сирота

72 — 26.12.06 — 15:41

Делай

Пока 1=1 Цикл

Файл = ФС.НайтиСледующийФайл(); // гоп на третий ;)

Если ПустоеЗначение(Файл)=1 Тогда

 Прервать;

КонецЕсли;

КонецЦикла;

   Казанская Сирота

73 — 26.12.06 — 15:41

// гоп на третий ;)  не отсюда

   Shaman100M

74 — 26.12.06 — 15:42

(21) Не начинай файл с цифры. Сделай хотя бы F1.dbf F2.dbf …

   Shaman100M

75 — 26.12.06 — 15:47

В фоксе такие файлы не открываются

   Один С

76 — 26.12.06 — 16:20

ДБФ = СоздатьОбъект(«XBASE»);

   ПутьФ = «D:БазыРеализацииАвиапроobmen»;

   ФС.УстТекКаталог(ПутьФ);

   Файл = ФС.НайтиПервыйФайл(«*.dbf»);

   Пока ПустоеЗначение(Файл) = 0 Цикл

       ИмяФайла = ПутьФ+Файл;    

       ДБФ.ОткрытьФайл(ИмяФайла);    

       Состояние(«Загружаем данные…»);    

           тз = СоздатьОбъект(«ТаблицаЗначений»);

           тз1 = СоздатьОбъект(«ТаблицаЗначений»);

           ДБФ.Первая(); //позиционируемся на первой записи

           Пока ДБФ.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл

               тз.НоваяСтрока();

               тз1.НоваяСтрока();

               тз.NOMERDOC = ДБФ.NOMERDOC;   // номер документа

               тз.KOLVO    = ДБФ.KOLVO;       // количество

               ДБФ.Следующая();

           КонецЦикла;

           ДБФ.ЗакрытьФайл();

           ФС.УдалитьФайл(ИмяФайла);

           Файл = ФС.НайтиСледующийФайл();

   КонецЦикла;

   andiko

77 — 26.12.06 — 16:29

(76) в таком варианте работает, только загружает один файл, а остальные удаляет

   A_M-ko

78 — 26.12.06 — 16:33

А может dbf-файлы не одного типа (FoxPro, dBase), например файлы типа Fox2x открываются а выше версий нет.

   Shaman100M

79 — 26.12.06 — 16:34

(77) Не нарушай выборку удалением, сделай так:

Спс1=СоздатьОбъект(«СписокЗначений»);

Файл=ФС.НайтиПервыйФайл(«*.*»);

Пока пустоеЗначение(Файл)=0 Цикл

   Спс1.ДобавитьЗначение(Файл);

   Файл=ФС.НайтиСледующийФайл();

КонцЦИкла;

а потом обрабатывай список.

   andiko

80 — 26.12.06 — 16:39

(78) файлы созданы в 1С
(79) а не черезчур запутанно и сложно?

   Один С

81 — 26.12.06 — 16:41

Вот тебе окончательный вариант. Он работает.

   ДБФ = СоздатьОбъект(«XBASE»);

   ПутьФ = «D:БазыРеализацииАвиапроobmen»;

   ФС.УстТекКаталог(ПутьФ);

   Файл = ФС.НайтиПервыйФайл(«*.dbf»);

   Пока ПустоеЗначение(Файл) = 0 Цикл

       ИмяФайла = ПутьФ+Файл;    

       ДБФ.ОткрытьФайл(ИмяФайла);    

       Состояние(«Загружаем данные…»);    

           тз = СоздатьОбъект(«ТаблицаЗначений»);

           тз1 = СоздатьОбъект(«ТаблицаЗначений»);

           ДБФ.Первая(); //позиционируемся на первой записи

           Пока ДБФ.ВКонце()=0 Цикл //пока не дошли до конца, крутим цикл

               тз.НоваяСтрока();

               тз1.НоваяСтрока();

               тз.NOMERDOC = ДБФ.NOMERDOC;   // номер документа

               тз.KOLVO    = ДБФ.KOLVO;       // количество

               ДБФ.Следующая();

           КонецЦикла;

           ДБФ.ЗакрытьФайл();

           Файл = ФС.НайтиСледующийФайл();

           ФС.УдалитьФайл(ИмяФайла);          

   КонецЦикла;

   andiko

82 — 26.12.06 — 16:59

(81) блин… не работает

   Один С

83 — 26.12.06 — 17:06

(82) Где не работает?

   Иде я

84 — 26.12.06 — 17:06

Первые два файла будут «.» и «..»

   andiko

85 — 26.12.06 — 17:08

(84) угу

   andiko

86 — 26.12.06 — 17:12

(83) загружает один из двух файлов и все

  

A_M-ko

87 — 27.12.06 — 11:01

А может не удалять в цикле файлы, а удалить потом после загрузки?

Понравилась статья? Поделить с друзьями:

Не пропустите эти материалы по теме:

  • Яндекс еда ошибка привязки карты
  • Ошибка открытия data media twrp
  • Ошибка открытия com порта windows 10
  • Ошибка открытия com порта lexx
  • Ошибка открытия com порта 433

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии