Файлы формата DBF и 1С:Предприятие.

Тема в разделе "WASM.ZEN", создана пользователем dev.xadmin, 30 авг 2006.

  1. dev.xadmin

    dev.xadmin New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    21
    Дали на работе задачу:

    Нужно взять повреждённую базу 1С, определить, является ли файл файлом базы данных, выдернуть из неё все поля, идентификаторы... и создать такую же базу, только без глюков.

    ВОПРОС:

    Правильно ли я поступаю, если определяю принадлежность файла к формату DBF по сумме первых 7 байт. Если она равна 7D (или 125), то это база DBF... Может быть есть и другие критерии?
     
  2. dev.xadmin

    dev.xadmin New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    21
    Кстати: Вот заголовок DBF:

    Код (Text):
    1. 03 6A 04 0C 04 41 01 64
     
  3. Quantum

    Quantum Паладин дзена

    Публикаций:
    0
    Регистрация:
    6 янв 2003
    Сообщения:
    3.143
    Адрес:
    Ukraine
    А поля тоже побайтно извлекать собираетесь?
     
  4. tmp_name_0001

    tmp_name_0001 New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    85
    нифига се чё за способ за такой?
    1-й байт тип таблицы может быть от 03 до F5
    дальше три байта год месяц день
    это 4
    дальше идёт dword с количеством записей в таблице
    т.е. ты берёшь всю ту лабуду и кусок этого dworda складываешь и получаешь всегда 7d?
    определить можно разве что по структуре как иделают все проги.
    Поясни вообще как они испорчены эти файлы-то? Если из них можно данные дёрнуть то не проще ли поправить заголовок?
    Напиши подробнее я копал DBF по работе ... надо было расшифровать....
     
  5. dev.xadmin

    dev.xadmin New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    21
    Точно!!!

    Моя программа не определяет некоторые DBF, кстати вот и она...
     
  6. dev.xadmin

    dev.xadmin New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    21
    tmp_name_0001


    блин... прикрепил программу к сообщению - а где она?
     
  7. gazlan

    gazlan Member

    Публикаций:
    0
    Регистрация:
    22 май 2005
    Сообщения:
    414
    Абсолютно неправильно :)

    Информации по формату DBF (xBase) - как грязи (включая M$DN), утилит и библиотек тоже полно (для большинства целей хватает клипперовской DBU). Кроме самих DBF файлов могут потребоваться еще и мемо-файлы (расширение зависит от версии), а повреждены могут быть и только индексы - тогда реиндексация может стать решением.
    На всякий случай - вьювер под винду: http://www.legendsoft.com/, куча других программ идет в исходниках (ALXSoft etc.)
     
  8. tmp_name_0001

    tmp_name_0001 New Member

    Публикаций:
    0
    Регистрация:
    26 июл 2006
    Сообщения:
    85
    наверно я украл...
    а вообще прально газлан сказал почитай о формате чтобы не пороть чепуху ...
    я не понял к чему было твоё
    ведь я тебе расписал значение складываемых тобой байтов
    короче ознакомься
     
  9. dev.xadmin

    dev.xadmin New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    21
    Отличный материал!
     
  10. dev.xadmin

    dev.xadmin New Member

    Публикаций:
    0
    Регистрация:
    30 авг 2006
    Сообщения:
    21
    Щас собираю код для вывода всех записей.....

    Странная вещь.... при PUSH очередных 32 байт программа тормозит на 2 сек...

    может это потому, что слишком большой объём данных отпраляется в память (файл размером 27 MB)
     
  11. M4DZ5A

    M4DZ5A New Member

    Публикаций:
    0
    Регистрация:
    1 сен 2006
    Сообщения:
    27
    Прочитай в книге Гусев АА ПРОГРАММИРОВАНИЕ 1С на странице 242 строку третью символ восьмой и все последующие символы, пока не встретишь EOL. У тебя получится:

    Глава 1.3.1 Структура формата DBF