Как я восстанавливал базу 1CD





Как я восстанавливал файловую базу восьмерки. Попала база после того, как в процессе обновлении релиза на диске кончилось место.

Даю свой путь самурая 🙂

То что мне сообщил клиент:

Исходный релиз платформы 8.2.13.219. Текущий релиз платформы 8.2.16.352. Обновил без проблем и реструктуризация прошла успешно. Исходный релиз конфигурации БП 2.0.32.1. Обновлял на релиз 2.0.41.3. В самый ответственный момент вдруг закончилось место на диске.

chdbfl.exe говорит:

Поврежден заголовок файла базы данных Повреждено содержимое внутреннего файлаБаза полностью разрушена восстановление невозможно.

 Tool_1CD.exe тоже не помогает…

Для начала я использовал проект http://code.google.com/p/restoration-base-1c8/ 

Я использовал конфигурацию 0.2.2. (на момент публикации версия не выложена по причине мелких доработок о которых раскажу ниже, выложеная версия 0.1.7 для реального востановления не подходит, слишком много там ошибок, она носит скорее ознакомительный характер)

Для начала переименовал файл и загрузил его, загрузка шла 2 часа (размер файла примерно 1.8 гиг, загрузка идет долго в том числе и по тому что не используется корневой обьект). В процессе загрузки меня обматерило

1. с десяток сообщений типа «Ошибка потока описания таблицы «_REFERENCE54″, Блок 00 00 0F 6C E0 00» на самом деле это ошибка конфигурации востановления, но я быстро понял в чем дело, просто таблицы где описание занимает более одного блока загрузились только по одному, вручную догрузил (поиск по индексу и кнопка «Загрузить данные блока»), ну и после этго на указаной таблице «Загрузить структуру ветки». (Это одна из ошибок которая не дает выложить версию 0.2.2)

2. Более серьезной проблеммой стало сообщение типа «В описании таблицы корневого блока 00 00 67 97 A0 00 есть недопустимые символы».

найдя блок жму «Редактировать таблицу», получаю рис «п-1», видно, что описание таблицы цело просто после него идет «хвост» мусора, захожу в блок и забиваю нулями этот мусор. (вторая требуемая доработка — нужна процедура забития нулями облости, я просто замучился по одному фигачить).

После того как ошибка пропала, жму «Загрузить структуру ветки».

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

На этом этапе вроде все выглядет красиво, но все равно не работает.

Тогда лезу в корневой обьект «редактировать таблицу» и вижу что длинна явно кривая (на картинке уже исправленый вариант), ну лезу в описание корневого и исправляю длинну.

после этого Tool_1CD.exe выдает только 1 ошибку, а chdbfl.exe две и говорит, что может помоч.

Запускаю chdbfl.exe на исправление и база завелась в режиме предприятия, и вроде все данные целы.

идем далее (последний рисунок)

Учитывая что часть блоков неверно распределено (на картинке серые) и корневой обьект содержит ссылки на FREE блоки, запускать на базе какие-либо махинации в конфигурации не стоит, стоит через выгрузку XML все перенести в новую чистую базу и уже с ней работать.

41 Comments

  1. makas
    Даю свой путь самурая 🙂

    То что мне сообщил клиент:

    Исходный релиз платформы 8.2.13.219. Текущий релиз платформы 8.2.16.352. Обновил без проблем и реструктуризация прошла успешно. Исходный релиз конфигурации БП 2.0.32.1. Обновлял на релиз 2.0.41.3. В самый ответственный момент вдруг закончилось место на диске.

    А почистить компьютер от мусора и заново провести апгрейд из дубликата ни самур-аЙ ни кли-ент не догадались? 🙂

    Reply
  2. vde69

    (1) makas,

    само сабой бекапов небыло 🙂 да и база была на флешке 🙂

    Reply
  3. Serj1C

    в шоке.

    Reply
  4. tango

    (0) автор, как ваша публикация соотносится с

    http://forum.infostart.ru/forum26/topic73004/message780847/#message780847

    ?

    или мы имеем дело с множественностью аккаунтов?

    Reply
  5. vde69

    (4) tango,

    именно эта база, просто тот топ я не читал 🙂

    Reply
  6. tango

    забавненько

    Reply
  7. iov

    (0) 1 плохой программист создает 2-3 рабочих места. 1 плохой юзверь не делающий бекапов кормит 2-3 программиста. итог — меньше безработицы больше прибыль программистам. В ж*опу бекапы даешь прямую запись обновлений во время работы пользователей!!!

    Reply
  8. vde69

    выложил условно рабочую версию конфигурации http://code.google.com/p/restoration-base-1c8/downloads/detail?name=1Cv8_0.2.3.zip&can=2&q=#makechanges

    Reply
  9. vde69

    (10)(8)(7)

    странно, думал что и так понятно… В данном случае я выступаю в роли мастерской куда принесли сломаный телевизор, а Вы кричите что телевизор нельзя поливать водой…

    Ко мне обратились с УЖЕ СЛОМАНОЙ базой. База и бекапы не моя зона ответствености (и вообще я не имею отношения к этой базе и к той организации)!

    Бекапы делать надо, но ведь пользователям этого не обьяснишь…

    Reply
  10. ReLock

    (11) Всё и так понятно!

    Reply
  11. iov

    (11)Шелдон — сарказм.

    Reply
  12. comol

    По мне так респект автору. Откопать и докопаться… Обычно в случае с файловой базой только руками разводят…

    Reply
  13. Alex_IT

    (11) просто по тексту нельзя понять, что база была передана в уже убитом виде, а как раз наоборот. Причем есть детальное описание действий перед «падением» базы…

    Reply
  14. MRAK

    Спасибо за проект!

    Reply
  15. harutyunb

    Буду пробовать, при обнавлении вышла ошибки «Ошибка СУБД: Файл базы данных поврежден», окозалось что ж/д битый,

    после chkdsk /r теперь имею «Ошибка при выполнении операции с информационной базой Файл базы данных поврежден 1Cv8.1CD».

    chdbfl.exe убивает половину конфигурациию почти всю информацию на эту половину. после чего старая версия Tool_1CD начал видеть информацию с базы, но без загаловков таблиц,

    теперь хочу спросить как можно в эту базу загрузить нужную конфигурацию.

    Поможет ли Альфа весия туда загрузить?

    конфигурация проекта мне не помогла вообще не загрузил ни базу ви базу после Tools_1C

    Подскажите!

    Reply
  16. tango

    (18) harutyunb, чем окончилась ваша проблема?

    Reply
  17. tango

    (0) загружаю через вашу конфу (компоненту) базу чуть более 2Г

    устал ждать как долго…

    вряд ли чтение com-сервером быстрее

    наверное, стоит не грузить все сразу, а подгружать нужные кусочки по мере надобности

    Reply
  18. vde69

    (20) он и грузит кусочками

    реально он грузит только системные данные и строит связи между ними.

    а долго это по двум причинам

    1. сама 1с медленная

    2. он не использует корневой обьект а все строит сам.

    2 гига — примерно 2-3 часа должно идти

    Reply
  19. tango

    (21) уже больше двух 🙁

    Reply
  20. tango

    а щас прям так и зашевелился — эффект присутствия, наверно

    Reply
  21. tango

    конец уж близок

    Reply
  22. tango

    упс

    Reply
  23. harutyunb

    (19) tango, Все закончилось, печально! были утеряны данные!, Но это послужило хорошим уроком для дальнейшего восстановления. нельзя делать chkdsk, он полностью сектор (512бит) заменяет 0-ями, после него невозможно восстановить, я делаю по другому, через прог-у nscopy копию, которая только нечитаемый биты заменяет 0-я, после если конфигурация цела, можно войти и делать тестирование где можно увидеть поврежденную инф-у, но можно восстановить, потому что любой документ при проведении делает записи в регистре накоплении и в других регистрах и легко найти первичную инф-ю, или в крайном случаи зесли побита конфигурация, через 1с-TOOLS делаю удаление конфигурации с базы, потом его закрываю, и загружаю снового, туда из резервной копии делаю сохранение конфигурации, после опять открываю нашу базу и импортирую его туда и уже можно запустить через конфигутор. можно так же востановить другие блоки базы из резервной копии!!!

    Этот способ мне выручает, иногда прибегаю к hex-редактору(бывает сдвиг по базе).

    Reply
  24. rhtr

    Автор, а будет возможность востонавливать удалённые объекты?

    Reply
  25. angel4evil

    Очень благодарна автору за выложенный материал!!!

    Reply
  26. JSverhnovaya

    Подскажите пожалуйста, как вы воспользовались программой из проекта (https://code.google.com/p/restoration-base-1c8/) для открытия файла БД? Просит файл с необычным расширением *.2CD..

    Reply
  27. JSverhnovaya

    Не сразу разобралась, решается изменением расширения файла.

    Reply
  28. the1

    У меня при попытке зарегистрировать ВК почему-то вылетает с ошибкой

    Платформа: 1С:Предприятие 8.3 (8.3.6.2237)
    Конфигурация: открытый проект под лицензией «GPL v2»     (0.2.3)
    vde69@mail.ru
    (http://code.google.com/p/restoration-base-1c8/)
    Режим: Файловый (без сжатия)
    Приложение: Толстый клиент
    Локализация: Информационная база: русский (Россия), Сеанс: русский (Россия)
    Вариант интерфейса: Версия 8.2
    
    Ошибки:
    ———————————————————————————
    26.09.2015 22:38:50
    Некорректная работа компоненты с памятью
    

    Показать

    Reply
  29. the1

    (31) А вот на 8.2 пошла, родимая)

    Reply
  30. the1

    А что делать с сообщениями вида

    Блок 00 00 00 00 10 00 содержит ссылку за пределами файла — 00 00 1C C9 A0 00

    Блок 00 00 00 01 70 00 содержит ссылку за пределами файла — 00 00 29 D3 70 00

    Блок 00 00 00 01 70 00 содержит ссылку за пределами файла — 00 00 29 D3 60 00

    Reply
  31. vde69

    (31) the1, возможно манифест нужно отредактировать…

    (32)

    Блок 00 00 00 01 70 00 содержит ссылку за пределами файла — 00 00 29 D3 70 00

    в твоем файле по адресу 00 00 00 01 70 00 располагается таблица ссылок на блоки файла, у тебя там лежит невалидное значение, тут варианты

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

    2. в таблице ссылок попался мусор (тогда это нужно забить 00), обычно такое бывает в конце таблицы

    3. в таблице находится ссылка уже перемещённого блока, в этом случае хорошо-бы его найти и ссылку поставить корректную, тут нужно смотреть среди блоков которые не лежат в корне дерева и не имеют на себя ссылок

    Reply
  32. Serge_ASB

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

    Блок 00 00 00 01 70 00 содержит ссылку за пределами файла — 00 00 29 D3 70 00.

    Как определить, где находится эта ссылка за пределами файла? Искать в теле блока последовательность 00 00 29 D3 70 00?

    Как понять, что там мусор или не мусор?

    Базу некогда грохнули по каким-то причинам, а затем восстанавливали специально обученными программами.

    Reply
  33. vde69

    (35)

    00 00 00 01 70 00 — это бинарный адрес (hex смещение), там лежит указатель 00 00 29 D3 70 00, значение этого указателя больше размера файла.

    есть 2 возможные причины

    1. этот указатель мусорный и его следует забить нулями

    2. указатель был правильный но файл кто-то обрезал и часть файла просто пропала, тут скорее всего базу восстановить не удастся…

    Reply
  34. myromskui

    очень крутая статья! вирус шифральщик зашифровал базу! — наткнуля на эту конфигурацию

    загрузил файл .2сd, нажал кнопку Загрузить список внутренних файлов — ошибок не было ни одной, нажал кнопку Загрузить структуры внутренних файлов — посыпались ошибки «Блок 00 00 00 00 10 00 содержит ссылку за пределами файла ________» и много различных вариантов файла

    как быть в этом случае?

    Reply
  35. Cooler

    (37) myromskui,

    вирус шифральщик зашифровал базу! … как быть в этом случае?

    В таком случае либо платить автору вируса за расшифровку (без гарантии!!!), либо восстанавливать базу из бэкапа. Нет бэкапа — восстанавливать учет по первичке.

    Reply
  36. myromskui

    (38) Cooler, но мне кажется, вирус не зашифровал сами данные внутри базы — проблема только в первых двух блоках 00 00 00 00 10 00 и 00 00 00 00 20 00 — т.е по сути мне кажется они должны быть типовые для большинства баз! и решением должно быть заменить эти блоки на типовые!!! но только чем и как ????

    Reply
  37. Cooler

    (39) myromskui,

    мне кажется, вирус не зашифровал сами данные внутри базы — проблема только в первых двух блоках 00 00 00 00 10 00 и 00 00 00 00 20 00

    Это вам так только кажется. Потому что эти проблемы обнаруживаются сразу же в момент открытия базы и до других дело просто не доходит.

    Обычная практика для вирусов-шифраторов: небольшие файлы они шифруют полностью, а большие (базы 1С, видеофайлы и т.д.) — частично, кодируя несколько блоков в разных местах файла.

    Поэтому даже если вы восстановите заголовок базы, то неизвестно, что еще обнаружится внутри: могут быть «кракозябры» в любых справочниках или документах, или разрушены итоги. Или, если зашифрованным окажется не тело какой-нибудь таблицы, а ее заголовок (описание), то тогда вы теряете к ней доступ — фактически, лишаетесь всей таблицы.

    Reply
  38. myromskui

    (40) Cooler, это все окей да логично! но меня сейчас просто интересует сама процедура замены этих двух блоков т.е типо некая инструкция «мол берем аналогичную базу открываем HEХ редактором находим начало конец блоков, также открываем убитую базу HEX редактором и делаем замену блоков на правильные значения»…кароче чтоб велосипед не делать — полюбому кто-то ковырял уже такое

    Reply
  39. nytlenc

    х32 компонента для 8.3 прикладываю (поместить в общий макет)

    Reply
  40. lambert

    Пишет «{ОбщийМодуль.ПоддержкаКомпонентыКлиент.Модуль(20)}: Тип не определен (AddIn.Bin1CD.TBin1CD_VK)

    ВК = Новый («AddIn.Bin1CD.TBin1CD_VK»);

    Как быть?

    Платформа 8.2.19.83

    Reply
  41. avert

    При открытии файла базы в «Win 7 64» не подключается компонента.

    Сначала сообщение «Внешняя компонента установлена», далее «Bin1CD_VK не установлена».

    {ОбщийМодуль.ПоддержкаКомпонентыКлиент.Модуль(22)}: Тип не определен (AddIn.Bin1CD.TBin1CD_VK)

    ВК = Новый («AddIn.Bin1CD.TBin1CD_VK»);

    Должна работать?

    Reply

Leave a Comment

Ваш адрес email не будет опубликован. Обязательные поля помечены *