Ошибка формата потока. Help

1. user596149_gruzdevostashkov 26.03.17 12:52 Сейчас в теме
Всем привет. У меня приключилась беда и нужна ваша помощь.
Админ на работе решил переименовать папку с файловой базой 1с в тот момент когда в ней находились активные пользователи.
В результате этих действий нет возможности зайти в 1с ни в режиме конфигуратора, предприятия. Запускаешь 1с, она спрашивает, логин и пароль после ввода пишет "Ошибка формата потока". Обычно я не заморачиваюсь беру бекапы, но на эту базу, по сколько она чужая бекапов у меня соответственно нет.
Запускал chdbfl на базе, но она пишет, что "Ошибок не обнаружено".
Попробовал Tool_1CD.
В программе база открылась без проблем. Сделал тест формата потока, Программа обнаружила 3 ошибки ("Фактическая длинна файла отличается от указанной в таблице."). Все 3 ошибки в таблице PARAMS. Исправил ошибки исправлением таблицы, поставил длину 0. Но это к сожалению не помогло. При запуске все также ругается.
Попробовал сохранить конфигурацию через Tool_1CD. Создал новую базу и загрузил cf фаил.
Через Tool_1CD выдрал таблицу PARAMS, после чего потребовалось загрузить еще два десятка таблиц с данными которых не было в исходной конфигурации.
В конечном итоге после танцев с бубном база запустилась, размер вроде соответствует нормальному. Но база оказалась пустая :( Полагаю, что в новой таблице PARAMS нет связи со старыми таблицами.
Помогите плиз решить проблему.
+
По теме из базы знаний
Найденные решения
40. vadim1011985 99 26.03.17 21:51 Сейчас в теме
попробую описать весь алгоритм по действиям
1) выгрузить таблицы данных из нерабочей базы (Tools 1C) - Кнопка экспорт таблиц данных в отдельную папку
2) выгрузить служебные таблицы (V8Users , UsersWorkHistory, FrmDtSetting) ( кнопка экспорт текущей таблицы)
3) Создать чистую базу из cf файла выгруженного с помощью Tools 1CD
4) Экспортировать таблицы данных из рабочей базы в отдельную папку (экспорт таблиц данных)
5) Сопоставить таблицы из нерабочей базы с таблицами рабочей базы - заменить файл описания таблиц (descr) в нерабочей базе из рабочей - как это сделать решайте сами я лично делал через компоненту 1СLib
6) удалить таблицы из новой базы кроме некоторых служебных (Config,Configsave,params,Dbshema,ibVersion) - удобнее сделать через 1сlib
7) Импорт и создание таблиц в новой базе из таблиц данных неработающей базы с замененный файлом описания descr - Через tools 1cd кнопка импорт и создания таблиц
atlakh; synelf; necropunk; +3
42. vadim1011985 99 26.03.17 21:57 Сейчас в теме
(39) да , именно в обработке надо читать 2 файла получать их таблицы данных и по таблицам получать метаданные и сравнивать метаданные по наименованию. В обработке см. функцию "ПолучитьПредставлениеТаблицы" - вот ее немного надо переделать - она получает один параметр имя таблицы , и использует глобальную переменную FileDB , так вот если открываются 2 базы (FileBd1,FileBD2) от глобальной переменной стоит отказаться и передавать данный объект в качестве параметра этой функции
atlakh; +1
Остальные ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. vadim1011985 99 26.03.17 13:25 Сейчас в теме
Первоначальная нерабочая база осталась без ваших изменений ? Посмотрите через Tools_1CD там есть данные по таблицам ?

Можете выложить файл с вашей нерабочей базы(базы без ваших изменений ). Попробую один способ. Просто тут объяснять долго
+
3. user596149_gruzdevostashkov 26.03.17 15:45 Сейчас в теме
Да в базе не какие изменения не делал. Только на копии. По таблицам полазил данные присутствуют. Не уверен полноте конечно.
+
4. user596149_gruzdevostashkov 26.03.17 15:46 Сейчас в теме
Базу проблемно кидать. За данные меня подвесят на ближайшем суку... ;(
+
5. user596149_gruzdevostashkov 26.03.17 15:48 Сейчас в теме
Завтра на работе смогу сравнить по таблицам со старой базой. Что бы все таблицы хотя бы были
+
6. karpik666 3775 26.03.17 15:56 Сейчас в теме
Какая версия платформы? Попробуйте вначале обновить платформу, и запустить с нее так, чтобы никто в ней еще не сидел
+
7. user596149_gruzdevostashkov 26.03.17 15:56 Сейчас в теме
Вот фото с размером таблиц
Прикрепленные файлы:
+
8. user596149_gruzdevostashkov 26.03.17 15:58 Сейчас в теме
1с 8.3.8.1652. На данном компьютере. Пробовал на разных платформах.
+
9. vadim1011985 99 26.03.17 16:00 Сейчас в теме
Если описывать - то это долго . В двух словах - тебе нужны 2 инструмента -tools 1СD и 1СLib - можно найти на инфостарте.
Суть такова - так как повреждена таблица Params - восстанавливать ее нету смыла. Поэтому таблицы данных необходимо перенести в другую базу. Но проблема в том что описание таблиц в двух разных базах разное , Как решить - так как таблица Params потеряна , необходимо исправить описание таблиц в испорченной базе. Через tools_1CD - надо экспортировать таблицы данных . Таблицы выгружаются в 4 или 5 файлов (Descr,Index,root,Data,Blob) описание таблиц содержится в файле Descr. Вот его то и надо заменить таким же файлом только из рабочей базы такой же конфигурации и таково же релиза.
atlakh; user596149_gruzdevostashkov; +2
10. user596149_gruzdevostashkov 26.03.17 16:08 Сейчас в теме
(9)
Через tools_1CD - надо экспортировать таблицы данных

Попробую. Поставлю 1с такогоже релиза. Или возьму базу годичной давности. В принципе мысль понял спасибо.
+
11. vadim1011985 99 26.03.17 16:09 Сейчас в теме
Но так как таблиц много и наименование таблиц будут отличаться необходимо как-то сопоставить эти таблицы. При скачивании компоненты 1cLib в поставку входит обработка по демонстрации работы с этой компонентой. Обработка позволяет читать структуру файла 1сd выгружать , удалять и восстанавливать таблицы. Еще один плюс этой обработке она имеет доступ к метаданным файлам и может по имени таблицы определить объект метаданных. т.е. с помощью этой обработки есть возможность сопоставить имена таблиц , с таблицами базы , а если знать что например таблице поврежденной базе _ACC16 соответствует таблица рабочей базы _ACC19 , то опять же средствами 1с можно скопировать нужный файл из одной папки в другую.
atlakh; user596149_gruzdevostashkov; +2
12. user596149_gruzdevostashkov 26.03.17 16:11 Сейчас в теме
В этот я так понял основная сложность...
+
13. vadim1011985 99 26.03.17 16:13 Сейчас в теме
(12) в принципе да основная сложность в замене , поэтому 1cLib необходимо немного исправить код в зависимости от требуемой операции . Сам код не сложен , просто делается по образу и подобию кода который в обработке (разобраться не составит труда)
+
14. user596149_gruzdevostashkov 26.03.17 16:21 Сейчас в теме
Блин так не честно что бы скачать надо абонемент брать. Согласен, что любая работа должна соответствующие оплачиваться. Но полторы за одну программу. ;)
+
16. vadim1011985 99 26.03.17 16:27 Сейчас в теме
(14) поэтому я и сказал что проще скинуть базу
+
15. vadim1011985 99 26.03.17 16:26 Сейчас в теме
Но опять же это еще не все . Остается последний этап , перенос таблиц в рабочую базу. Так как база рабочая уже имеет таблицы , их надо сначала удалить - опять же можно воспользоваться 1cLib (А точнее обработкой к ней) , но удалять нужно не все таблицы ( в данном случае необходимо оставить таблицы Config,ConfigSave,Params,DBShema,IBVersion,File) а из нерабочей взять такие таблицы как _systemSetting,RepValSetting,CommonSetting,_repsetting,_frmdtSetting,_DynListSetting,_OdataSetting ,_UsersWorkHistory, _Users ) и после того как ты все это соберешь(т.е. таблицы данных+служебные ) в одной папке .Через Tools_1CD - делаешь импорт и создание таблиц. Если все правильно сделал у тебя получиться полностью рабочая база с новой таблицей Params
atlakh; +1
17. user596149_gruzdevostashkov 26.03.17 16:32 Сейчас в теме
Вы уже дали достаточно подробный мануал. Конечно отсутствие опыта доставит мне геморроя. Надеюсь что все получится
+
18. vadim1011985 99 26.03.17 16:35 Сейчас в теме
на той неделе пришлось пару раз этим способом исправлять пару базы , конечно не с потерянной таблицей params , но там свои были приколы. Но общий смысл идеи перенос таблиц. По моим подсчетам это должно сработать
+
19. user596149_gruzdevostashkov 26.03.17 16:47 Сейчас в теме
Кстати таблица ConfigSave, если она пустая это ничего страшного. Так?
+
22. vadim1011985 99 26.03.17 16:59 Сейчас в теме
(19) так и должно быть , если она не пустая значит - ошибка произошла при обновлении
+
20. lexkex 107 26.03.17 16:57 Сейчас в теме
Мне помогает чистка кэша иногда
+
21. user596149_gruzdevostashkov 26.03.17 16:59 Сейчас в теме
(20)
Мне помогает чистка кэша иногда

Но я попробовал сразу.
Боюсь тут проблема не в кэше :)
+
23. user596149_gruzdevostashkov 26.03.17 17:17 Сейчас в теме
Читаю про таблицы. И я начинаю понимать что у меня большей части таблиц про которые ты говоришь попросту нет :(
Прикрепленные файлы:
+
24. vadim1011985 99 26.03.17 18:51 Сейчас в теме
у тебя таблицы не отсортированны , некоторых таблиц может не быть самый лучший способ посмотреть системные таблицы - создать чистую базу без конфигурации и открыть в tools 1cd откроется минимальный состав служебных таблиц. Опять же надо смотреть что за конфигурация но если честно смущает количество таблиц всего 51 таблица .
+
25. user596149_gruzdevostashkov 26.03.17 19:32 Сейчас в теме
(24)
создать чистую базу без конфигурации и открыть в tools 1cd

Уже создал посмотрел. Должно быть 55 :(
+
28. vadim1011985 99 26.03.17 19:41 Сейчас в теме
(25) тут имелось ввиду новая база без конфигурации
Прикрепленные файлы:
+
26. user596149_gruzdevostashkov 26.03.17 19:33 Сейчас в теме
27. vadim1011985 99 26.03.17 19:37 Сейчас в теме
посмотрите в tools 1cd проверка состава таблиц .. хотя если файл dbNames в таблице Params поврежден проверку не пройдет
+
29. user596149_gruzdevostashkov 26.03.17 20:05 Сейчас в теме
(27)
посмотрите в tools 1cd проверка состава таблиц

При проверке пишет все норм
+
30. vadim1011985 99 26.03.17 20:20 Сейчас в теме
значит , все таблицы на месте. Вы новую базу создавали из cf который выгружали из tools ?
+
31. user596149_gruzdevostashkov 26.03.17 20:31 Сейчас в теме
32. vadim1011985 99 26.03.17 20:46 Сейчас в теме
В общем итоге ,переносите системные таблицы какие есть из перечисленных мною ( в вашем случае это V8Users , UsersWorkHistory, FrmDtSetting, Далее загружаете ваш cf в новую базу ,через обработку компоненты 1clib открываете файл этой базы удаляете все таблицы данных (а так же системные таблицы которые выгружали из старой базы V8Users , UsersWorkHistory, FrmDtSetting ) кроме таблиц config.configsave, params,dbChema и если будут такие таблицы как _systemSetting,_RepValSetting,CommonSetting,_repsetting то их временно лучше оставить
+
34. user596149_gruzdevostashkov 26.03.17 21:28 Сейчас в теме
(32)
роме таблиц config.configsave, params,dbChema и если будут такие таблицы как _systemSetting,_RepValSetting,CommonSetting,_repsetting

Что делать с таблицей Files
+
33. user596149_gruzdevostashkov 26.03.17 20:49 Сейчас в теме
35. user596149_gruzdevostashkov 26.03.17 21:32 Сейчас в теме
Выполнил. Что теперь требуется сделать?
+
36. vadim1011985 99 26.03.17 21:37 Сейчас в теме
file можно не переносить
+
37. vadim1011985 99 26.03.17 21:39 Сейчас в теме
теперь нужно для каждой таблицы подменить описание таблиц данных т.е. заменить файл descr в нерабочей базы - таким же файлом только уже рабочей базы
+
38. user596149_gruzdevostashkov 26.03.17 21:42 Сейчас в теме
А как мне понять что это именно тот дестр?
+
39. user596149_gruzdevostashkov 26.03.17 21:48 Сейчас в теме
Вроде доперло. Надо обе базы включить в обработке и сравнивать метаданные так?
+
42. vadim1011985 99 26.03.17 21:57 Сейчас в теме
(39) да , именно в обработке надо читать 2 файла получать их таблицы данных и по таблицам получать метаданные и сравнивать метаданные по наименованию. В обработке см. функцию "ПолучитьПредставлениеТаблицы" - вот ее немного надо переделать - она получает один параметр имя таблицы , и использует глобальную переменную FileDB , так вот если открываются 2 базы (FileBd1,FileBD2) от глобальной переменной стоит отказаться и передавать данный объект в качестве параметра этой функции
atlakh; +1
40. vadim1011985 99 26.03.17 21:51 Сейчас в теме
попробую описать весь алгоритм по действиям
1) выгрузить таблицы данных из нерабочей базы (Tools 1C) - Кнопка экспорт таблиц данных в отдельную папку
2) выгрузить служебные таблицы (V8Users , UsersWorkHistory, FrmDtSetting) ( кнопка экспорт текущей таблицы)
3) Создать чистую базу из cf файла выгруженного с помощью Tools 1CD
4) Экспортировать таблицы данных из рабочей базы в отдельную папку (экспорт таблиц данных)
5) Сопоставить таблицы из нерабочей базы с таблицами рабочей базы - заменить файл описания таблиц (descr) в нерабочей базе из рабочей - как это сделать решайте сами я лично делал через компоненту 1СLib
6) удалить таблицы из новой базы кроме некоторых служебных (Config,Configsave,params,Dbshema,ibVersion) - удобнее сделать через 1сlib
7) Импорт и создание таблиц в новой базе из таблиц данных неработающей базы с замененный файлом описания descr - Через tools 1cd кнопка импорт и создания таблиц
atlakh; synelf; necropunk; +3
41. user596149_gruzdevostashkov 26.03.17 21:53 Сейчас в теме
Понял спасибо, сейчас буду сопостовлять
+
43. user596149_gruzdevostashkov 27.03.17 20:00 Сейчас в теме
Все получилось. Спасибо большое. Получил бесценный опыт по восстановлению базы :)
atlakh; +1
Внимание! Тема сдана в архив

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот